本站搭建在香港阿里云服务器,为了少折腾,一次性买了 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

到这里,才终于全部解决。香港服务器可以申请退款了。

最后吐个槽,阿里云比腾讯云贵,但考虑到之前域名已经在阿里云备案,贵就贵点,不折腾了。

也希望这篇文章以后用不上。

分类: 折腾 标签: 博客建设 , typecho, 阿里云 , 博客迁移

已有 25 条评论

  1. 我是用 hexo + github + vercel 部署,国内用又拍云 CDN 加速。GitHub 托管代码,用 Actions 自动部署到 GitHub pages 仓库,vercel 同步 pages 仓库进行托管。

    1. 强,听起来有些复杂。
      以前也用过静态博客,后来还是闲麻烦,最重要的是不想把评论放第三方,又改为服务器建站了。

      1. 其实也不复杂。评论我是用 utteranc.es 放在 pages 仓库里 issues 里了。最主要的是除了域名之外,其他都是免费的。我还用 GitHub+vercel 做图床。

  2. 一开始我就用的大陆的,前期的话事比较多,备案就需要等一段时间了。
    但是备案了,后面感觉也就不需要多操心了,倒也省事。😁

    1. 是的,省心了。唯一担心的是以后会检查要求关闭评论。

  3. 我的域名根本就没法在国内备案,懒得折腾了

    1. 不影响访问,就没必要折腾了。

  4. 请问怎么备案成功,刚刚给我打电话说,不能有评论,不能有留言,不能有打赏,不能有任何交互性的东西。备案太难了。。。

    1. 我的备案号 15 年申请的,那个时候没有这些要求。
      现在的话,备案期间把这些功能都关掉吧,通过了再考虑加上这些功能。

  5. 使用 docker-compose,从此爱上迁移。

    1. 之前装 mastodon 的时候用了 docker,感觉初次使用有些新概念需要理解,都一知半解,哈哈。

  6. 未备案,也无所谓被 Ban,就是嫌麻烦。

    1. 哈哈,如果没 ban,我也不会迁回大陆,麻烦。

  7. 不容易呀,香港主机我比较担心访问不稳定有时候慢,不用备案确实挺吸引人,不过国内如果备案号基本上也没啥事,总是有得有失

    1. 期间看了几个关注的博友,香港主机的都没出问题,不知为啥就我被 kill 了。。无奈。
      是的,国内备案,一劳永逸,我的博客很日常。

  8. 我比你幸运一些,大陆能访问香港主机,但移动 4G 网络不行,搞得我还要反代一下

    1. 还能反代解决啊,不懂,早知道试试了。。

  9. 这几天突然发现你的博客上不了,也不知道怎么回事,还好没删书签。我刚开始建博客,以后多多交流😊

    1. 哈哈,多谢支持,多多交流。

  10. 说起来之前看你的网站明明备案了呀_(:з」∠)_原来备案了也能无声无息被拔网线的吗……

    1. 看起来,备案域名 + 大陆之外的服务器是可能的了。总感觉是一刀切被误伤了,委屈。

添加新评论