在决定记录这篇文章之前,我从几天前开始接触云服务器到一步步部署完成,确实是从无到有,一点点理解一点点实践。实践真的非常重要!!!因为肯定比你看书看教程视频强太多太多。这篇文章仅仅只是做一个我部署成功的经历和思考,也会向大家介绍我的思考实践过程。欢迎大家私聊指正!
这里我使用的电脑是Windows 11,Windows 10的电脑也可以用我下面的步骤去部署实践,详细的内容我会在下面的文章里面说明。
相信大家在部署云崽机器人的时候,肯定想到了让机器人24小时不间断运行,以达到我们可以随时查询原神里信息的功能。比如角色面板、圣遗物、练度、原石统计等等。所以,把我们测试好的机器人部署在云服务器上,就可以完美解决让机器人24小时运行的问题。
服务器的选择:
我选择的是腾讯云服务器,原先开始考虑的可能是腾讯云更便宜一点吧!毕竟机器人只需要1核1G的配置就足够了,而且只用QQ登录就挺舒服的。

我们可以选择轻量级服务器,反正哪个便宜的用哪个,毕竟作为学生党暂时不会去在云服务器上面跑比较大的项目或者软件。


当然哈,上面的贵得很,我肯定不是花钱买这个的,就是新人试用期,一个月!但是没关系,以后还会续费的,几十块钱一年真的挺香了。

既然是部署机器人的话,建议大家用系统镜像的CentOS 8.2,我就是使用的这个,而且要部署不间断24小时,用Linux系统方便一些。


拿到云服务器之后,我们要了解的是我们的公网ip,然后先按照要求重置一下密码(方便后期登录),然后确定强制关机重启一下;更多操作里面有可以重装系统的选项,系统如果被“”捣毁“”可以通过重装再来一次,速度很快的。
登录测试
重置好了之后开始,我们可以选择登录一下检查是否出现问题:


这样就算是正常啦!
对Linux命令的操作,可以在腾讯云提供的网页端shell命令面板操作,也可以安装XShell或者Xftp,想了解一下这两个软件的朋友,可以自行百度查询安装方法,两个都有免费的家庭学生版,是免费的。是以发邮件的形式点击链接提供下载渠道的。
对我来说,安装这两个软件搭配使用起来会更方便一点,我展示一下界面:


因为Linux都是用命令行操作的,看不到文件,都是通过命令创建文件操作文件的,所以:XShell就是专门输入命令操作的界面(和腾讯云点登录之后那个界面是一样的),Xftp是展示操作之后文件夹的界面,比较直观,推荐大家下载学习。
安装好了之后,我们进行登录连接操作:

点击连接之后会让你输入用户名和密码,用户名就是root,密码是你重置的那个密码。登录进去之后就显示和你在腾讯云上面的一样了。
同理,Xftp也是一样的,都是新建然后登录连接。
当然有朋友连接XShell可能会有警告:我查询过了,在新建会话的时候把下图的X11勾选去掉再连接登录就可以了。

首先先放上大佬们开发部署的教程链接和插件索引:
| 名称 | 链接 |
|---|---|
| 教程链接1 | https://github.com/Le-niao/Yunzai-Bot/issues/3 |
| 教程链接2 | https://gitee.com/yoimiya-kokomi/miao-plugin |
| 插件索引 | https://gitee.com/Hikari666/Yunzai-Bot-plugins-index |
接下来就按照顺序输入Shell命令即可:
centos8.2 实际操作命令:
登录进入系统,使用root身份执行下列命令:
su root
确定是管理员身份。
在命令行输入下面这个指令,然后根据提示进行选择
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)
下面这个报错出现了采取解决,没出现就不管它 报错解决 /etc/yum.repos.d/CentOS-Epel.repo; Configuration: OptionBinding with id "failovermethod" does not exist
解决方案:
进入文件 /etc/yum.repos.d/CentOS-Epel.repo,将 failovermethod=priority 注释或者删除
vim vim /etc/yum.repos.d/CentOS-Epel.repo
然后输入/fafailovermethod 定位到位置在开头输入#注释掉
yum update
更新命令,也需要一点时间
yum -y install npm
yum install -y dnf
dnf module install nodejs:16 -y
注意这是两条命令,分开执行
yum -y install chromium
注意这个chromium在ubuntu是不能够apt下载的,在centos8上可以直接下载
yum -y install redis
yum groupinstall fonts -y
先安装git:
yum install git
再克隆项目:
git clone --depth 1 -b main https://gitee.com/Le-niao/Yunzai-Bot.git
cd Yunzai-Bot
在安装pnpm的时候可能会出现“npm: command not found”这样的报错情况,就是因为nodejs没有安装好,仔细对照第一步进行nodejs的安装。
npm install pnpm -g
pnpm install -P
这里安装依赖可能会失败的报错:“-bash: pnpm: command not found”,首先输入"whereis pnpm"命令查找pnpm位置,然后把安装命令改成“安装目录/pnpm install -P”

redis-server --save 900 1 --save 300 10 --daemonize yes --ignore-warnings ARM64-COW-BUG
注意这个可能启动失败会报错误 --ignore-warnings ARM64-COW-BUG 错误
这时候就需要输入
redis-server --save 900 1 --save 300 10 --daemonize yes
然后就可以启动成功了.
node app
注意挂机器人的qq可能会被腾讯给风控,例如不可以群发消息,但是可以私人发消息....解决方法是修改密码,开启qq登录验证,然后挂个一两天就没事了。
环境就选择安卓手机即可,设置好主人的QQ号就可以了!
注意事项:用node app启动的时候注意一定要在Yunzai-Bot这个文件夹里面启动,也就是cd Yunzai-Bot这个命令,然后再执行node app。
接下来就是安装喵喵插件了,在上面我有给插件索引的链接,步骤如下:
请将miao-plugin放置在Yunzai-Bot的plugins目录下,重启Yunzai-Bot后即可使用。
推荐使用git进行安装,以方便后续升级。在Yunzai根目录夹打开终端,运行
简单来说,就是需要你cd到Yunzai-Bot文件夹里面之后执行命令即可。
使用gitee:(国内,下载速度会快一点)
git clone https://gitee.com/yoimiya-kokomi/miao-plugin.git ./plugins/miao-plugin/
使用github:(国外,除非搭梯子下载或者随缘下载会速度快一点)
git clone https://github.com/yoimiya-kokomi/miao-plugin.git ./plugins/miao-plugin/

有朋友可能会出现像我这样的报错,这里是因为缺少依赖了,所以要下载一下。
我们先找到pnpm的安装目录,用命令:
whereis pnpm

可以看到我的pnpm路径为:/usr/local/bin/pnpm
接下来把pnpm替换为出现的路径:

像我这样直接在root文件夹里运行安装就是很傻的行为了。
我们需要先进入Yunzai-Bot文件夹里,然后替换掉路径执行安装依赖的代码:
/usr/local/bin/pnpm add image-size -w
就可以安装成功了。
剩下的就是需要你自己在按照b站的教程或者网页教程去操作设置了。
我们的云崽机器人就正式完成啦!!!!!
撒花!!!
既然机器人都已经部署好了,24小时呢?????
哈哈哈别急,现在才开始:
百度之后有很多方法,我选了screen,感觉在我可操作的范围内
我们用命令回到root文件夹
sudo -i
首先安装一下screen:
yum install screen
成功后,我们通过screen命令创建一个运行的窗口,这个窗口不会因为你和服务器断开连接后会导致不运行的情况,只要你的服务器还在运行,那就可以一直运行云崽机器人。
首先创建一个新窗口:
screen -S yunzai
“yunzai”可以换成你想设置的名字,就是一个窗口的名字,shell命令调出这个窗口的时候就需要这个名字。
然后就进入到了新的root运行界面,在里面进入Yunzai-Bot文件夹之后,直接执行node app运行即可,这样就算连接断掉机器人也可以一直使用的。
之后的比如说切换出去,可以按ctrl+A+D退出这个窗口;
查看screen进程的话:
screen -ls
就可以查到啦。
还有很多命令可以操作的,大家都可以去百度查询一下,多多学习多多成长!
部署期间可能发生的情况很多,我添加一些我已经遇到的和群友遇到的问题:

如果上图方法在尝试过之后仍然不可行,可以尝试一下我下述的方法:
①更换验证设备:里面有五种设备版本供登录验证,切换好之后轮流尝试验证登录
②重新创建一个QQ号:新创建好一个QQ号之后,先不要用手机或者电脑登录那个新的账号,创建好之后直接用“node app”命令登录验证,一般来说成功率最高(本人尝试了一次就解决了登录问题),成功登录之后再在手机上或者电脑上登录加好友加群等等操作即可。
③如果愿意尝试技术的话,试着把Linux可视化,百度能够搜到如何把Linux操作界面可视化,然后下载登录QQ运行,这个方法我只有了解但还没实际尝试,大佬可以尝试一下这样的办法解决QQ版本过低的问题。
更新个登录的方法:npm run login之后输入小号,不要输入密码,直接扫码登录。
扫码登录的时候相信有部分同学会遇到不在一个登录环境不安全巴拉巴拉啥的......
方法:
首先在手机上登录你自己的小号,然后用软件更改自己手机的位置到你云服务器的位置,比如说你是北京的服务器,那你就把你的手机定位位置改到北京那边,然后扫码登录。
设备选择方面:记得不要选“安卓手机”就可以了,推荐使用“安卓手表。”
在此感谢大佬们的视频和文字攻略:
感谢b站UP主:冬の花びら
感谢大佬:Yoimiya开发了云崽机器人和插件
Enka: 感谢Enka提供的面板服务
Snap.Genshin : 感谢 DGP Studio 开发的 胡桃API
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame
我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它:
我将以下代码放在一起用于一个简单的RubyTFTP服务器。它工作正常,因为它监听端口69并且我的TFTP客户端连接到它,我能够将数据包写入test.txt,但我不只是写入数据包,我希望能够从我的客户端通过TFTP传输文件到/temp目录。预先感谢您的帮助!require'socket.so'classTFTPServerdefinitialize(port)@port=portenddefstart@socket=UDPSocket.new@socket.bind('',@port)whiletruepacket=@socket.recvfrom(1024)putspacketFile
在previousquestion中我想出了如何在多个服务器上启动经过密码验证的sshsession来运行单个命令。现在我需要能够执行“sudo”命令。问题是,net-ssh-multi没有分配sudo需要运行的伪终端(pty),导致以下错误:[127.0.0.1:stderr]sudo:sorry,youmusthaveattytorunsudo根据documentation,可以通过调用channel对象的方法来分配伪终端,但是,以下代码不起作用:它会生成上面的“notty”错误:require'net/ssh'require'net/ssh/multi'Net::SSH::Mul
我刚刚在我的Ubuntu9.10服务器上安装了TeamBox。我使用提供的服务器脚本在端口3000上启动并运行它。它的运行速度非常慢,从另一台计算机连接时每个HTTP请求最多需要30秒。我使用链接从shell加载TeamBox,一点也不花时间。然后我设置了一个SSH隧道,它再次运行得非常快。我通过此服务器上的apache以及SAMBA等运行了大约30个虚拟主机,没有任何问题。我该如何解决这个问题? 最佳答案 我的redmine(ruby,webrick)太慢了。现在我解决了这个问题:apt-getinstallmongrelruby