重装过程不完全记录

闲着也是闲着,那就写个重装过程不完全记录吧,如果你想新建博客,也完全可以参考之,其实主要目的还是以后重装的时候直接照抄哈哈哈。

既然是不完全记录,那就没有截图了,反正也没啥必要。

首先还是去aws新建一个VPS主机,考虑到之前的丐版VPS内存容易告急,并且我觉得Sqlite用久了似乎有点性能问题?反正这次我就奢侈一把选了次丐版,有1G内存,光跑个Ghost还是相当够用了。
其实如果你懒的话,AWS是直接提供了Ghost的镜像的,一步到位不需要折腾安装步骤,由Bitnami负责维护,现在是3.28版本,而我看了下自己安装是3.39版本,这个就各取所需了,我既然有路径依赖,那就还是选择了自己维护,反正我估计也大差不差的。

系统准备

在以下步骤之前,因为我是迁移,所以我先运行了老系统,然后选择忽略证书错误(因为原证书没更新,过期了)访问后台管理界面,在Labs页面中选择Export导出原网站内容,导出结果是一个十几M大小的json文件,当然这仅是网站所有文本和设置,图片并不包含在内,将这个json文件保存待用。保险起见我导出了两次,验证大小一致。

老样子,参考这里的系列教程,部署VPS,然后升级三步走:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

注意,作为熟练工我跳过了很多步骤,而且作为系统迁移的便利,我并不需要重新做域名解析,只需要简单的将原静态IP从原VPS解绑并转移到新的VPS即可。其他设置基本照抄,包括打开服务器443端口等。
另外建议在安装之前用以下语句为root用户设置密码。

sudo passwd

由于之前就是采用域名进行SSH连接,所以我的远程方式完全没变,但是mac会报错证书不一致,按照提示直接删除原保存的证书就没问题了。

cd ~
sudo dd if=/dev/zero of=$HOME/swap  bs=1k count=1024000
sudo mkswap $HOME/swap
sudo chmod 0600 $HOME/swap
sudo swapon $HOME/swap

照样建立swap作为虚拟内存分区,这里其实我又偷懒了,按道理1g内存主机应该配置2g虚拟内存为好,嘛,反正也无所谓了。

命令执行完毕后再运行一下free确定swap已开启。

sudo nano /etc/fstab
新增以下内容以保证重启后依然可用:

/home/ubuntu/swap none            swap    sw              0      0

安装Ghost

参考这个文档,安装Ghost。
其实基本和之前步骤一模一样哈哈哈。

sudo apt-get install nginx

不过这次我们不使用Sqlite,所以需要安装MySQL。

sudo apt-get install mysql-server

安装完毕后需要为MySQL的root用户设置密码:

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

quit

注意两点,一个是在上面语句中单引号内的password替换为密码,但单引号别删掉,再一个是别忘了最后的分号哈哈。

接下来安装Nodejs。

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash

sudo apt-get install -y nodejs

注意现在nodejs最新是15.x版本,而Ghost支持14.x,但推荐12.x版本,所以我们安装的是12.x。

安装Ghost命令行工具:

sudo npm install ghost-cli@latest -g

接下来准备工作目录:

sudo mkdir -p /var/www/ghost
sudo chown ubuntu:ubuntu /var/www/ghost
sudo chmod 775 /var/www/ghost
cd /var/www/ghost

然后在这个目录下运行Ghost安装。

ghost install

接下来跟着提示走就可以了。
其中MySQL服务器用localhost即可,用户名是root,密码是上面设的那个密码,数据库名字直接回车即可,基本上没啥花头。
一路按默认走,安装SSL证书(该死的acme.sh)后即可启动Ghost了。

迁移内容

迁移其实挺简单的。
之前一样先建立管理员账号,然后找到我之前存下来的json文件,在Labs页面中同样选择Import即可。

这时候访问网站已经可以正常使用了,再把安装Ghost自带的几个英文页面删掉。

由于之前的Nubia主题不支持Ghost3.x版本,所以我重新上传了1.4.0版本并激活。
密码ze8z,需要解压然后上传其中的zip即可。
建议有条件的同学还是支持正版。

接下来就是图片的迁移了。

我使用的是Cyberduck工具,当然你可以使用任何你觉得好用的SFTP客户端。
首先连接老VPS,注意这时由于IP已经迁移,所以老连接方式不能直接使用,得查询老VPS的新外网IP进行连接。
找到/var/www/ghost/content/images目录,将图片连目录格式一起下载到本机。
然后连接新VPS,找到同样的目录,将内容上传。
注意如果使用默认的ubuntu用户,是无法执行上传的,需要使用chown命令临时修改目录拥有者,上传完后别忘了使用ghost doctor命令检查系统健康,并根据提示将目录权限改回来。

自动备份

由于gdrive脚本已经无人维护,导致其实之前自动备份脚本早已失效,并且还导致了几次宕机(因为我忘记删备份文件导致硬盘满,我的锅哈哈哈)。
根据之前的参考内容的更新,照葫芦画瓢采用新的rclone脚本进行自动备份操作。

讲道理其实rclone用起来是有点麻烦的哈。

sudo apt-get install unzip
wget -qO- https://rclone.org/install.sh | sudo bash

先下载unzip,然后下载rclone脚本并运行。

rclone config

然后运行配置脚本。

配置的时候先要有一个application client id和secret,这是啥呢?并不是你的谷歌账户和密码,请参考这里配置,留空是可以的,但是会影响你备份的成功率,因为使用了默认id。
简单来说就是使用你的谷歌账户为自己申请一个id用来访问谷歌的api服务,一个id访问量是受限的,所以建议使用自己id哦。

接下来参考这里,一顿操作猛如虎之后,千万别选自动配置,因为我们是没有desktop环境的,最后脚本给出一个长串的网页地址,拷贝并在我们的浏览器中访问后,这里才是输入自己谷歌账户、密码并对rclone授权的地方。

总之配置完之后会在~/.config/rclone/rclone.conf文件中保持我们的配置,这里请记住我们为remote起的名字,后面备份脚本要调用。

由于之后备份脚本需要使用sudo权限运行,所以会出现root用户找不到rclone配置造成上传失败的情况。
可以选择copy过去也可以选择建立软连接。

sudo ln -s /home/ubuntu/.config/rclone/rclone.conf /root/.config/rclone/rclone.conf -i

如果你的用户名不是ubuntu请酌情修改命令。

接下来才是配置备份脚本了。

wget --no-check-certificate https://github.com/teddysun/across/raw/master/backup.sh
sudo chmod +x backup.sh

使用micro(或nano、vim,啥都行)修改backup.sh脚本中的配置:

ENCRYPTFLG (加密FLG,true 为加密,false 为不加密,默认是加密)
BACKUPPASS (加密密码,重要,务必要修改)
LOCALDIR (备份目录,可自己指定)
TEMPDIR (备份目录的临时目录,可自己指定)
LOGFILE (脚本运行产生的日志文件路径)
MYSQL_ROOT_PASSWORD (MySQL/MariaDB/Percona 的 root 用户密码)
MYSQL_DATABASE_NAME (指定 MySQL/MariaDB/Percona 的数据库名,留空则是备份所有数据库)

BACKUP (需要备份的指定目录或文件列表,留空就是不备份目录或文件)

BACKUP[0]="/var/www/ghost/content"


LOCALAGEDAILIES (指定多少天之后删除本地旧的备份文件,默认为 7 天)
DELETE_REMOTE_FILE_FLG (删除 Google Drive 或 FTP 上备份文件的 FLG,true 为删除,false 为不删除)
RCLONE_NAME (设置 rclone config 时设定的 remote 名称,务必要指定)
RCLONE_FOLDER (指定备份时设定的 remote 的目录名称,该目录名在 Google Drive 不存在时则会自行创建。默认为空,也就是根目录)
RCLONE_FLG (上传本地备份文件至 Google Drive 的 FLG,true 为上传,false 为不上传)

请根据中文自行修改各变量的设置,我们的MySQL只有一个数据库,所以数据库名直接留空没问题。并且注意默认rclone上传标志是false,别忘了改为true。

设置完毕后测试运行:

sudo ./backup.sh

如果无误的话就可以加入crontab豪华套餐定时运行了。

sudo micro /etc/crontab
50 7   * * 1 root   /bash home/ubuntu/backup.sh

以上设置为每周一早上7:50运行备份脚本,按需修改即可。

安装后工作

由于底层、Ghost、主题等均为全新安装,所以之前我改的很多设置都失效了,我得慢慢靠水磨工夫改回来,所以这部分我会不断更新到结束。

评论

评论我使用的是disqus系统,而nubia主题自带disqus集成,简单修改即可。

cd /var/www/ghost/content/themes/nubia/partials
sudo micro disqus.hbs
var disqus_shortname = 'aspirethemes-demos'; // required: replace `aspirethemes-demos` with your Disqus shortname

把单引号中的aspirethemes-demos改成你自己在disqus上申请的网站的短名称即可。
就这么简单。

改完了别忘了:

cd /var/www/ghost/
ghost doctor
ghost restart

今天本来说要接续改网站细节的,但是写完之后发现时间不早了,那就改天继续吧。