You've successfully subscribed to 完美的胖达
Great! Next, complete checkout for full access to 完美的胖达
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
重装过程不完全记录

重装过程不完全记录

. 9 min read

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

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

首先还是去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

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