网站迁移,全站启用HTTPS
目前已全站启用 HTTPS
选择主机商
下面是一些个人吐槽,你可以选择 >> 跳过 <<
DigitalOcean NMSL
之前本站一直架设在 Bandwagon 上,虽然便宜倒也一直稳定。而且同一 VPS 上还同时托管了好几个网站(如 getnote.cf ),搭建的 ss 速度也算不错。用了两年快到期了,换套餐的话现在最低 $49.99/ 年,比起当时 $19.99/ 年 可是贵了一倍不止。可惜搬瓦工更新换代,OpenVZ 架构的主机不支持续费了,只得进行迁移。
一开始从 Linode,DigitalOcean,Vultr 中选择了 DO,主要是 Linode 只能使用信用卡付款。
但 DO 着实把我恶心到了。刚注册好账号用 PayPal 付了 5 刀,直接就退款还把我账号锁了,简直莫名其妙。从 5 月 13 日注册起,到现在 5 月 25 号,我一共发了 3 个 Tickets,不断询问它们为什么要锁定我的账户。我甚至还跑去问 PayPal 客服为什么会退款,结果客服告诉我是 DO 那边拒收了。三个 Tickets 全都是敷衍回复,说什么:
- "We appreciate your patience during this process."
- "If you have any other questions, please let us know, we are always here to help."
- "I am passing this ticket over to our Security team for further review."
通篇只字不提为什么我的账户会被锁定,我询问该提供什么信息来解锁账户也直接不理。回复 Tickets 的速度更是 1~3 天回一次,24 小时起步。
¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ ShitalOcean NMSL
这么差的服务态度我真是第一次见。正在考虑 DigitalOcean 的,主观上我真的不推荐你去尝试。
Vultr
最后还是选择尝试使用 Vultr。从注册到支付 $10 并成功创建实例,几分钟便完成了,由此可见 DigitalOcean 是真的哈批。
但是 ss 的速度确实比搬瓦工慢了不少,可能是对国内移动网络不太友好。如果用上一段时间后,速度一直一般的话,我可能还会迁回搬瓦工。
LNMP
由于几个网站一直都是部署在 LNMP 环境下,而且我对 nginx 更熟悉一些。这次依然选择使用 LNMP 一键安装包 ,只是从 LNMP1.4 换成了 LNMP1.5 。同时把 PHP 5.5.38 换成了 PHP 7.2.6。
注意把 /home/wwwroot/default
下的文件和文件夹通过移动、重命名隐藏起来。
值得一提的是:在 LNMP1.5 中,增加了 LetseEcrypt 通配符 / 泛域名 SSL 证书生成,官网上有 泛域名 SSL 教程 。
网站迁移
对于 LNMP 环境,网站从 LNMP1.4 迁移到 LNMP1.5 配置有几点需要注意:
修改
/usr/local/nginx/conf/vhost/域名.conf
# LNMP1.4 使用以下语句配置 Rewrite rule include other.conf # 而 LNMP1.5 改为 include rewrite/other.conf
- 修改完 nginx 的
.conf
文件后,需要重启 nginx 才能生效。/etc/init.d/nginx restart
下面对每个网站的迁移过程分别记录,以便日后再次迁移的可能。
Typecho: blog.lussac.net
首先配置 SSL 证书,使用的是免费的 Let's Encrypt 。配置过程参照教程:
- Let'sEncrypt 免费通配符 / 泛域名 SSL 证书添加使用教程
- LNMP 一键环境快速配置 Let's Encrypt 泛解析 SSL 证书教程
- Let's Encrypt 泛域名 SSL 证书申请 配合 DNSPOD API 快速获取
完整迁移 Typecho 并不是特别复杂:
- 从原 VPS 打包站点目录下所有文件。(打包不了以
.
开头的文件,如.gitignore
,请手动迁移)zip -r blog.lussac.net_backup.zip ./*
- 转移
blog.lussac.net_backup.zip
到目标 VPS 的/home/wwwroot/blog.lussac.net
下unzip blog.lussac.net_backup.zip
- 通过 phpMyAdmin 新建数据库
Typecho
- 修改 DNS 解析,把原 VPS 的 IP 改成目标 VPS 的 IP。等待生效。
- 移走目标 VPS 上 Typecho 的配置文件
config.inc.php
,访问域名并配置 Typecho ,重新建立数据库绑定。(因为从 PHP5.5.38 换成了 PHP7.2.6, 是 Pdo_Mysql 的问题) - 通过原 VPS 的 phpMyAdmin 导出原
Typecho
所有数据表为backup.sql
文件。 - 导出目标 VPS 上
Typecho
所有数据表,作为备份。 - 通过目标 VPS 的 phpMyAdmin 将
backup.sql
导入。
接下来确保全站启用 HTTPS,首先将所有 HTTP 请求 (80 端口) 跳转到 HTTPS (443 端口):
修改
/usr/local/nginx/conf/vhost/域名.conf
listen 80; #listen [::]:80; server_name example.com ; # 添加下面这句 return 301 https://example.com$request_uri;
- 同样在
域名.conf
中,把server{ 80 }
的 Rewrite 规则复制到server{ 443 }
中。
接下来逐步查找博客中对站内资源的 http 引用(主要是图片资源),全部更换成 https。
- 登录 Typecho 后台 -> 设置 -> 基本设置 -> 站点地址改成 https 的域名。
编辑 Typecho 站点根目录下的
config.inc.php
,加入下面一行配置,否则网站后台还是会调用 HTTP 资源。/** 开启HTTPS */ define('__TYPECHO_SECURE__',true);
- 使用 Chrome 浏览器打开网站,
F12
打开审查元素,查看 Sources 和 Network ,逐一定位对 HTTP 资源的引用。主要是每篇文章的头图、文章内对以附件形式上传的图片的引用。后台无法修改的可以尝试去数据库中修改,但注意做好备份。一一修改直到网站每个页面都显示小绿锁。
更多细节请参照:
- Typecho 全站启用 HTTPS 教程 - 小 z 博客
- typecho 博客程序,如何将内连由 http 转到 https? - V2EX
- Nginx 强制 https,HTTP 301 重定向到 HTTPS - 小 z 博客
getnote.cf
- 从原 VPS 打包站点目录下所有文件。(打包不了以
.
开头的文件,如.gitignore
,请手动迁移)zip -r getnote.cf_backup.zip ./*
- 转移
getnote.cf_backup.zip
到目标 VPS 的/home/wwwroot/getnote.cf
下unzip getnote.cf_backup.zip
- 启用 HTTPS ,在
index.php
中修改$base_url
为https://getnote.cf
因为压缩打包解压后,文件所有者都变为 root ,程序没有权限修改。所以需要修改文本保存目录中文件的权限。
cd /home/wwwroot/getnote.cf/text chown www:www * chown root:root .htaccess
其他
此外,我还为 Typecho 添加了几个插件。现在文章顶部启用了浏览次数统计,当然因为之前没有进行数据统计,现在就相当于重新开始了。