腾讯云购买的服务器即将到期。去年双十二坐上了阿里云的车,想省钱只能花更多的精力。以下是迁移步骤的完整记录。CentOS7系统之前已经安装在云服务器上,所以这次使用远程工具直接通过ssh以root身份登录系统就可以了。一开始用ssh是登不上去的。后来我修改了登录密码,重启了系统。ssh登录工具为Termius,本地系统为MacOSX。一、基本环境安装配置1.1使用yum安装nodejssudoyuminstallnodejs1.2使用curl安装nvmcurl-o-https://raw.githubusercontent。com/nvm-sh/nvm/v0.35.3/install.sh|bash安装成功然后重新打开命令行工具,输入nvm--version显示命令可用。(必须重启命令行工具)设置nodejsv12.16.1为默认版本nvminstall12.16.1nvm别名defaultv12.16.11.3安装pm2npminstallpm2-gpm2--version1.4使用yum安装MongoDB数据库1.4.1配置yum源vi/etc/yum.repos.d/mongodb-org-4.0.repo添加配置信息[mongodb-org-4.2]name=MongoDBRepositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc1.4.2安装MongoDBsudoyuminstall-ymongodb-org1.4.3开始databasesystemctlstartmongod.service1.4.4使用Robo3T远程连接数据库,修改MongoDB数据库配置打开mongod.confvi/etc/mongod.conf修改bindIp允许外部连接#networkinterfacesnet:port:27017bindIp:0.0.0.0#输入0.0.0.0,::绑定到所有IPv4和IPv6地址,或者使用net.bindIpAll设置。重启数据库后,配置生效。sudoservicemongodrestart修改服务器安全组,如图添加安全组,允许外部ip访问服务器所有端口。注意:安全组添加到所有IP访问所有端口后,由于我们的数据库没有设置账号密码,存在很大的安全隐患,所以迁移完成后需要删除这条安全组规则。使用Robo3T连接数据库完成以上设置后,就可以使用Robo3T连接数据库了。我在使用旧版客户端时遇到Failedtoexecute"listdatabases"command的bug,下载安装新版客户端即可解决。1.5安装gitsudoyuminstallgitgit--version1.6installyarncurl--silent--locationhttps://dl.yarnpkg.com/rpm/yarn.repo|sudotee/etc/yum.repos.d/yarn.reposudoyum安装yarn2。数据迁移2.1重命名数据库之前博客数据库的名称为VueExpressBlog。现在看起来有点奇怪,所以我在这次迁移的时候顺便改了下数据库的名字。MongoDB没有renameDatabase命令,但提供了renameCollection命令。该命令不仅可以修改集合名称,还可以修改数据库。运行mongo命令,输入如下js代码varsource="VueExpressBlog";vartarget="Blog";varcolls=db.getSiblingDB(source).getCollectionNames();for(vari=0;i恢复备份实现的。即在阿里云服务器上备份腾讯云服务器的数据,然后用这个数据恢复数据,完成数据库迁移。通过mongod.conf我们可以知道MongoDB数据库的存储文件是/var/lib下的mongo文件夹。我们在/var/lib目录下新建一个备份文件夹mongodumpmkdir/var/lib/mongodump,成功后将腾讯云上的Blog数据库备份到当前服务器hxxx.xx.xxx.xx-dBlog-o/var/lib/mongodump//ip为腾讯云的ip成功后/var/lib/mongodump/Blog文件显示如下然后执行restore命令从备份文件中恢复数据库mongorestore-hlocalhost-dBlog/var/lib/mongodump/Blog使用Robo3T查看阿里云数据库,数据迁移成功。注意:迁移成功后,记得关闭安全组27017端口的所有ip访问权限,此时已经可以在服务器上搭建博客了。在/home下新建博客文件夹,然后从github上下载博客的前端工程和后端工程到本地。后端运行pm2startindex.js,前端运行yarnstart,修改安全组规则,开放80端口运行http访问。这时用浏览器访问ip:porthttp://xxx:xx:xx:xxx:3000已经可以成功访问到博客界面了。注意:这里有个坑。后台直接将上传的头像保存在项目目录下的uploads文件夹中,所以数据迁移后,这个文件夹也必须迁移到阿里云服务器,否则会找不到头像。3.Nginx安装配置installEPELsudoyuminstallepel-release//安装EPELinstallNginxsudoyuminstallnginxstartNginxsudosystemctlstartnginx系统启动时启动Nginxsudosystemctlenablenginx4.自动化部署前的博客使用travis-ci部署安装travis需要用到gem,先安装ruby4.1installtr??avissudoyuminstallruby??查看ruby和gem版本ruby??-vgem-vinstalltr??avis。官网有个坑。geminstalltr??avis运行后报错,显示无法下载,是gem源的问题。查看gem源gemsource-l//https://rubygems.orgswitchsourcetohttps://gems.ruby-china.com/updateRubyGemgemupdate--system//更新RubyGem到2.6.x或以上版本gem-v//2.7.7改源gemsources--addhttps://gems.ruby-china.com/--removehttps://rubygems.org/改源成功后重新安装travis,安装依旧失败这次,提示错误ERROR:Failedtobuildgemnativeextension。这时候需要安装ruby-develsudoyuminstallruby??-devel。这一步成功后,再次安装travis,安装成功。登录travistravislogin输入github账号密码登录4.2SSH登录配置生成rsa文件ssh-keygen-trsa参数默认全部选中。成功后显示如下图。进入项目文件夹cd/home/blog/blog-node运行travisencrypt-file~/.ssh/id_rsa--add因为我们的文件中已经有id_rsa.enc和.yml文件,所以会有警告DANGERZONE:覆盖现有的id_rsa.enc?|no|这里输入yes,重新生成id_rsa.enc文件,并修改.yml配置。注意成功后,.yml的before_install中的路径会多一个\,导致id_rsa路径不对,删掉即可。节点配置可以参考blog-node,前端配置可以参考blog-frontend-react我们把前端项目的打包文件放在/home/www/react_pc,现在前端文件和后端文件在服务器,后台已经正常运行。这时候我们可以配置nginx访问ip时直接跳转到博客界面。打开/ect/nginx/nginx.conf,在server中设置代码如下server{listen80default_server;听[::]:80默认服务器;服务器名称_;根/home/www/react_pc;索引index.html;#加载默认服务器块的配置文件。包括/etc/nginx/default.d/*.conf;位置/{root/home/www/react_pc;索引index.html;try_files$uri$uri//index.html;}location/api{重写^/apis/(.*)$/$1中断;proxy_passhttp://localhost:8081/api;}error_page404/404.html;location=/40x.html{}error_page500502503504/50x.html;location=/50x.html{}}然后重启Nginx服务器systemctlrestartnginx这时候我们在浏览器中输入ip就可以访问博客了。5、域名重新解析注意:即使同一个域名被不同厂商的服务器使用,也必须重新备案。以下步骤都是在备案成功后进行,在阿里云控制台找到域名解析,添加域名hellomrbigbigbigshot.xyz。添加成功后,阿里云提示DNS不正确。进入腾讯云控制台,进入域名管理-我的域名,在域名列表中选择管理进入域名管理界面,将DNS修改为阿里云提供的DNS。几分钟后,刷新阿里云界面,DNS服务器状态显示正常。此时添加解析记录后,访问域名http://www.hellomrbigbigbigshot.xyz跳转到博客界面。5、配置HTTPS,使用chrome浏览器登录http站点,浏览器会提示站点不安全。嗯,域名只能配置HTTPS协议。找到阿里云的SSL证书入口,选择购买证书按钮,然后会出现sku选择界面。证书类型选择免费版(个人)DV。免费版只支持单个域名,因此您需要为每个子域名购买新的证书。这里我建议大家一次多买几个证书,反正免费的。支付成功后,返回SSL证书界面,在已购买的SSL列表中选择证书申请按钮,输入对应的域名并提交。证书颁发成功后,阿里云会发邮件提醒您。下图是我申请的免费SSL证书列表。申请成功后,下载证书压缩包。解压后会有一个.key文件和一个.pem文件。将这两个文件移动到阿里云服务器的/etc/nginx/conf/cert文件夹下,然后修改nginx.conf的关键代码如下server{listen80default_server;听[::]:80默认服务器;server_namewww.hellomrbigbgishot.xyzhellomrbigbigshot.xyz;重写^(.*)https://$host$1永久;//http转发https}server{listen443ssl;#SSL协议访问端口号为443,如果这里不加ssl,Nginx可能会启动失败。服务器名称www.hellomrbigbigshot.xyz;#将localhost改为你的证书绑定的域名,例如:www.example.com。根/home/www/react_pc;indexindex.htmlindex.htm;ssl_certificateconf/cert/3622067_www.hellomrbigbigshot.xyz.pem;#将域名.pem替换成你证书的文件名。ssl_certificate_keyconf/cert/3622067_www.hellomrbigbigshot.xyz.key;#将domainname.key替换成你证书的密钥文件名。ssl_session_timeout5m;ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#使用这个密码套件。ssl_protocolsTLSv1TLSv1.1TLSv1.2;#使用此协议进行配置。ssl_prefer_server_ciphers开启;位置/{root/home/www/react_pc;#网站目录。indexindex.htmlindex.htm;try_files$uri$uri//index.html;}location/api{重写^/apis/(.*)$/$1中断;代理通行证http://39.104.15.110:8081/api;}}重新启动Nginx服务器。访问域名重定向成功,HTTPS设置成功。参考LinuxCentos7安装MongoDB(简单!详细!)MongoDB管理:如何重命名数据库MongoDB不同服务器间数据迁移TravisCI自动化部署博客