迁移的开始
在随着华为云服务器到期邮件和电话的轰炸之下,我终于开始行动起来要去迁移我的博客了。太久没有写博客,已经忘记了距离上一篇博文一经过了很久很久了,想不起来时间,只记得是在做 aorb 项目的时候写的。
也忘记了之前对博客进行了一系列 CI 的优化,现在已经能够实现提交博客内容到 git repo 上,会自动拉起 github action 进行检查和部署的操作。
不幸
然额呢,隐约记得我之前在部署的时候在 workflow 里面编写了一些机密 (secrets) 用于访问服务器但是又不公开,现在大体忘却了他们是干什么的了。服务器过了十二点就冻结了,现在晚上十点,明天下午有一个面试,可能面试官会看我的博客(虽然我大概知道他们不会这么做),但是还想在这之前把他修好。冰冷的房间,饥饿的肚子,颤抖的双手,宕机的脑袋…尝试了无论怎么修改 secrets 中的 private key,依然显示我的 SSH 验证不通过。似乎我隐约记得上次我也这么干过,在这里也卡住了。
…
还尝试了不用 github action,直接把它部署到云服务器上的方案,虽然最后也没成功(因为我后来发现这台新电脑上的博客拉下来之后本地都没有跑对页面)。
但是复习到了以下内容:
- 存放我们
public/
代码的地方在/var/www/blog/
下,我是直接把public/
下的内容拿过的,没有要public/
这一层。这里要与 nginx 的配置相对应 - nginx 的配置文件在:
/etc/nginx/sites-availble/sirius1y.top
,日志文件在/var/log/nginx/error.log
,分析网站为什么返回403、404很常用的 - 检查 nginx 配置文件是否正确的命令:
sudo nginx -t
,重新加载 nginx 配置文件的命令sudo systemctl reload nginx
/var/www/
下的文件所有者和组应该是www-data
,并且对目录和文件的权限有要求的
…
第二天晚上,在清醒的大脑之下,在排除了用户的权限和文件夹、文件的权限正确设置之后,google 了一下,发现网上有两种说法:https://github.com/openssl/openssl/issues/20054 。大概是:
- 添加一段 before_script 的代码
- 私钥后添加 \n
然后我尝试之后,由于我设置的用户没有 sudo 权限,所以在 before_scirot 中的 chmod 命令无法执行。然后就试了第二种方法,还是不行。然后我索性在私钥之后按下回车。然后,It works!!!
本人的母语是无语
# before_script
before_script:
- 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client wget gnupg -y )'
- wget -qO- https://get.docker.com/gpg | apt-key add -
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- touch ~/.ssh/config
- touch ~/.ssh/known_hosts
- chmod -R 400 ~/.ssh
- ssh-keyscan <ip> >> ~/.ssh/known_hosts
- '[[ -f /.dockerinit ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
FUTURE
迁移服务器好麻烦,还要配环境,一弄就是小半天。
之后尝试用 Docker 吧