本文记录迁移过程备忘,方便后面再次迁移

前言

阿里云ECS学生机要过期了,由于自己曾经升级过ECS的带宽(从1M到3M),所以不能享受续费优惠,无奈之下,只能选择进行服务器迁移。备选的方案有腾讯云CVM、阿里云轻量应用服务器和硅云ECS。

硅云最早被Pass,毕竟和前面两家大厂相比不论是产品可选择性还是可靠性都略显不足,只能放在次要选择。腾讯云有学生优惠,2H4G3M服务器400+一年,还可以同样价格续费,很实惠。不过最终综合价格和便捷,还是选择了阿里云,初购96/年的轻量应用服务器,毕竟我的RDS数据库和OSS(被我用又拍云云储存顶替了)都是阿里云的。

准备

买好服务器后,首先配置一下shh免密码登录,方便后面的过程进行。

下一步查看一下有哪些东西需要进行迁移。我的服务都已经添加了监控,可以直接在监控-服务看到:

仔细清点过后,需要进行迁移的服务有:

  • API-Img: 图片、视频等静态文件API,阿里云OSS -> 又拍云云储存
  • API-Waline: 评论后台,ECS -> swas
  • Site-Blog: 博客主体,ECS -> swas
  • Site-Editor: 在线编辑器,ECS -> swas
  • Site-Guard: ServerStatus,ECS -> swas
  • Site-Travel: 旅行地图,ECS -> swas

迁移

API-Img

根据又拍云文档创建云储存服务,更改asset.foolishfox.cn的CNAME的解析,备份文件即可。

Site-Blog

又进行一次之前的迁移,可以看之前的文章

为了方便下一步的安装,可以选择安装n进行Node.js的版本管理,另外还可以更改npm源为淘宝源,加快下载、安装速度。

Site-Editor

进行了上一步之后,服务器已经安装好了Node.js环境,剩下的只需要安照文档安装即可。

使用pm2启动后,需要设置Nginx反向代理,方便通过域名进行访问。例如winwin-hexo-editor运行在8900端口,设置write.foolishfox.cn的反向代理为127.0.0.1:8900

Site-Guard

ServerStatus一开始是一个老外的项目,可以理解为多服务器探针、多服务器云监控。后来国人进行了汉化和修改,我这里使用的是nyawork开发的ServerStatus-Hotaru版本。安装十分简单,只需要下载好文件,按照步骤进行即可。

1
2
root@vultr:~# wget https://raw.githubusercontent.com/nyawork/ServerStatus-Hotaru/master/status.sh
root@vultr:~# chmod +x status.sh

因为要从Github下载文件,所以安装速度比较慢。例如下载master.zip,可以打开status.sh文件找到下载链接,下载好之后更改文件名为master.zip,再上传到/tmp文件夹下,这样速度会快很多。除了master.zip,还有一个文件是jq,事先创建好/usr/local/ServerStatus文件夹,将下载好的文件重命名后放在该文件下。

要修改的话,可以直接更改/usr/local/ServerStatus/server/config.json文件,重启status.sh即可。

API-Waline

waline是由lizheming开发的博客评论系统,是最难配置的一部分。Waline有多达48钟部署方式,下面介绍两种部署方式:

Docker

由于有自己的服务器和数据库,最开始选择了Waline/client+Docker+MySQL的方式进行部署。

  1. 修改Node.js淘宝源
  2. 构建镜像
1
2
3
git clone https://github.com/lizheming/waline.git
cd waline
docker build -t lizheming/waline -f packages/server/Dockerfile .
  1. 修改配置packages/client/.env
1
2
3
4
5
6
7
8
9
10
11
12
SITE_NAME=Fox Home
SITE_URL=https://foolishfox.cn

# 配置参考:
# https://waline.js.org/server/databases.html
# https://waline.js.org/server/notification.html
MYSQL_HOST=127.0.0.1
MYSQL_DB=db_name
MYSQL_USER=db_user
MYSQL_PASSWORD=password
SC_KEY=SCK232027Td54bfab83cfabf0aereq2c31b6552cd35fe1a43720074
AUTHOR_EMAIL=fox@foolishfox.cn
  1. 运行镜像
1
docker run --env-file ./packages/client/.env -p 8360:8360 -d lizheming/waline
  1. 设置反向目录代理,将waline.foolishfox.cn指向127.0.0.1:8360

独立部署

由于方便对配置进行修改,不需要更新镜像等原因,后来弃用了Docker部署,改为直接使用Node.js运行。

  1. 安装waline
1
2
mkdir walinejs && cd walinejs
cnpm install @waline/vercel --save
  1. 编辑.bashrc,添加环境变量,最好将字符串用"或者'包起来,避免$&等字符的影响
  2. 创建软链接,方便后续操作
1
2
ln -s node_modules/@waline/vercel ./waline
cd waline
  1. 配置服务端vim config.js
1
2
3
4
5
6
module.exports = {
secureDomains: [
'localhost',
'127.0.0.1'
]
};
  1. 修改主程序vanilla.js
1
2
3
4
5
6
7
8
const path = require('path');
const Application = require('thinkjs');
...
let config = {}
try {
config = require('./config.js');
} catch(e) {}
...
  1. 使用pm2运行程序
1
2
cnpm install -g pm2
pm2 start vanilla.js --name waline
  1. 设置反向目录代理,将waline.foolishfox.cn指向127.0.0.1:8360

参考资料

  1. Windows SSH 免密登录详解
  2. 从WordPress搬迁——使用Hexo搭建博客
  3. 如何利用n轻松切换nodejs的版本
  4. winwin-hexo-editor
  5. ServerStatus-Hotaru
  6. footprint
  7. waline