不想折腾,却不得不折腾 —— 博客迁移
本站搭建在香港阿里云服务器,为了少折腾,一次性买了 5 年。
但人算不如天算,6 月 28 日开始,本站在大陆无法访问,联系客服,回复说域名被上游网络阻断。至于为什么,没人知道。自问本站内容没啥问题,猜测可能被误伤,寄希望于 7 月 2 日能够恢复。但直到深夜,依然无法访问。
没办法,只好重新购买阿里云大陆服务器,迁移网站。
以前写过两篇总结:
因为使用了 sqlite3 数据库,不涉及 MySQL 迁移,以为能够很快搞定,没想到还是一堆坑。记录下填坑过程。
1、将原站点目录连同 sqlite3 数据文件和 nginx 配置文件,全部迁移到新服务器
旧服务器上
cp /etc/nginx/sites-available/www.skyue.com /home/typecho/www.skyue.com # 把nginx配置文件也复制到站点目录
zip -r typecho.zip /home/typecho/ # 将站点文件夹压缩为zip文件
mv typecho.zip /home/typecho/usr/uploads/ # zip文件复制到可访问目录
新服务器上
curl https://www.skyue.com/usr/uploads/typecho.zip -o typecho.zip # 下载站点文件
apt install zip # 新服务器上没有zip软件,新安装
unzip typecho.zip # 解压站点文件夹
后面的事情全部在新服务器上。
2、安装 nginx 和 php
apt install nginx
apt install php
3、将 nginx 配件文件复制到配置目录并创建软链接
cp /home/typecho/www.skyue.com /etc/nginx/sites-available/www.skyue.com
ln -s /etc/nginx/sites-available/www.skyue.com /etc/nginx/sites-enable/www.skyue.com
4、重新加载 nginx 配件文件
nginx -s reload
这里开始报错了,提示找不到证书文件。
5、安装证书
按照《搭建 mastodon 实例和 typecho 数据库迁移》中记录的方式安装证书:
sudo snap install core; sudo snap refresh core #如果没有snap则 apt insall snapd 安装
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d 你的域名
最后一步一直报错,提示内容也是找不到证书文件。
这里卡壳了很久,最后发现,需要删除配件文件中带有# managed by Certbot
注释的内容。

删除后,重新执行 sudo certbot --nginx
完成证书安装。
再执行 nginx -s reload
重新加载配置文件,也没有报错。
于是激动的到浏览器中访问网站,又来了个 502 bad gateway 错误。
6、nginx 配件文件中修改 php 版本
继续 Google,502 的错误一般是 fastcgi 导致的,nginx 配件文件中刚好有一段 fastcgi 配置,其版本号是 7.2,但新安装的 php 是 7.4,于是修改版本号解决。

7、安装 php-sqlite3
再访问网站,浏览器继续报错,这次是 PHP 错误,大意是无法操作 sqlite3 数据库。
需要安装 php-sqlite3 插件解决。
apt install php-sqlite3
8、修改目录和文件权限
继续访问网站,PHP 继续报错,提示 sqlite 数据文件只有读权限,没有写权限。需要修改目录和数据库文件权限:
sudo chown -R :www-data /home/typecho/ # 修改站点目录权限
sudo chmod -R 775 /home/mydata.db # 修改数据库文件权限
9、解决 Python 脚本发布报错
当我使用《使用 Python 和 MetaWeblog API 发博客》文中的脚本发布本文时,终端报错 ResponseError,就这么一点内容,查都没法查。
于是使用 MWeb 进行发布,MWeb 提供了更详细的错误信息,原来服务端没有 php-xml 插件,导致博客的 xmlrpc 接口无法工作。安装 php-xml 插件解决。
apt install php-xml
到这里,才终于全部解决。香港服务器可以申请退款了。
最后吐个槽,阿里云比腾讯云贵,但考虑到之前域名已经在阿里云备案,贵就贵点,不折腾了。
也希望这篇文章以后用不上。
我是用 hexo + github + vercel 部署,国内用又拍云 CDN 加速。GitHub 托管代码,用 Actions 自动部署到 GitHub pages 仓库,vercel 同步 pages 仓库进行托管。
强,听起来有些复杂。
以前也用过静态博客,后来还是闲麻烦,最重要的是不想把评论放第三方,又改为服务器建站了。
其实也不复杂。评论我是用 utteranc.es 放在 pages 仓库里 issues 里了。最主要的是除了域名之外,其他都是免费的。我还用 GitHub+vercel 做图床。
一开始我就用的大陆的,前期的话事比较多,备案就需要等一段时间了。
但是备案了,后面感觉也就不需要多操心了,倒也省事。😁
是的,省心了。唯一担心的是以后会检查要求关闭评论。
我的域名根本就没法在国内备案,懒得折腾了
不影响访问,就没必要折腾了。
请问怎么备案成功,刚刚给我打电话说,不能有评论,不能有留言,不能有打赏,不能有任何交互性的东西。备案太难了。。。
我的备案号 15 年申请的,那个时候没有这些要求。
现在的话,备案期间把这些功能都关掉吧,通过了再考虑加上这些功能。
使用 docker-compose,从此爱上迁移。
之前装 mastodon 的时候用了 docker,感觉初次使用有些新概念需要理解,都一知半解,哈哈。
未备案,也无所谓被 Ban,就是嫌麻烦。
哈哈,如果没 ban,我也不会迁回大陆,麻烦。
不容易呀,香港主机我比较担心访问不稳定有时候慢,不用备案确实挺吸引人,不过国内如果备案号基本上也没啥事,总是有得有失
期间看了几个关注的博友,香港主机的都没出问题,不知为啥就我被 kill 了。。无奈。
是的,国内备案,一劳永逸,我的博客很日常。
我比你幸运一些,大陆能访问香港主机,但移动 4G 网络不行,搞得我还要反代一下
还能反代解决啊,不懂,早知道试试了。。
这几天突然发现你的博客上不了,也不知道怎么回事,还好没删书签。我刚开始建博客,以后多多交流😊
哈哈,多谢支持,多多交流。
说起来之前看你的网站明明备案了呀_(:з」∠)_原来备案了也能无声无息被拔网线的吗……
看起来,备案域名 + 大陆之外的服务器是可能的了。总感觉是一刀切被误伤了,委屈。