网站服务器迁移+域名变更
背景
之前搭建网站使用的基础设施是AWS新账号free tier起的EC2,域名是在freenom上免费申请的。
这俩东西一年后就都不免费了……
为了继续白嫖,我需要新申请一个AWS账号和域名,并把之前自建网站的内容,全部迁移到新的AWS账号和域名下。
为了方便未来几年内,贫穷的我可以继续白嫖,这次我整理下迁移的步骤,以便一年后的我方便参考。
申请新的AWS账号
过程略,创建时间2022年11月28日。
AWS新账号下创建EC2
过程略,创建EC2前,账号要做些提前的配置,参考我的如下文章
《AWS账号使用前准备(1)–设置账单告警邮件》
《AWS账号使用前准备(2)–创建IAM账号》
注意:设置账单告警邮件中CloudWatch的账单告警只有在us-east-1区域才能看到!~
申请新域名
在https://www.freenom.com/上申请新域名yushuoxin.cf
2022年11月29日完成。
过程略。
2022年11月30日更新:
之前在freenom上申请的域名迟迟查不到更新的域名解析,我今天在godaddy上用gmail申请了一个账号,花15元RMB购买了域名yushuoxin.one,然后重新搭建这个域名的网站。
2022年12月1日更新:
11月29日注册的域名yushuoxin202211.cf,和11月30日注册的域名yushuoxin.tk,已经可以在公网查到freenom上设置的DNS解析了;
nameserver 改为 Cloudflare的域名yushuoxin.cf,在Cloudflare上显示还未激活。
anyway,我还是用godaddy上买的域名好了。
注意:下次要使用freenom的域名的话,最好提前至少5天就申请。我看freenom官方说明中,有提及过公网解析有时需要至多72小时。
2022年12月2日更新:
我刚试了下,把yushuoxin.tk的NS改成Cloudflare的,然后再Cloudflare上yushuoxin.tk就马上激活了呢。
所以下次如果我要用freenom,就这样:
- 提前5天再freenom上申请域名,并在freenom上添加一条测试的DNS解析,比如test.yushuoxin.tk解析为2.3.4.5;
- 第二天或者之后,确认公网可以解析到测试域名;
- 在Cloudflare上注册该域名,并修改freenom上该域名NS;
- 确认Cloudflare上该域名是否激活。
Cloudflare上新增site
在Cloudflare个人账号中,新增新域名的site;
并修改godaddy/freenom中的nameserver,为Cloudflare提供的name server.
然后顺手把Cloudflare上网站的DNS解析加上,设置为“仅限DNS”,之后等域名激活了就可以用了。
注:下图使用的是yushuoxin.cf的配置截图,我最终使用的是yushuoxin.one,这里仅做举例说明,下文其他类似情况不再做额外说明。
安装宝塔和WordPress
参考我的如下文章
《安装宝塔面板和安装WordPress个人网站》
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
登陆后绑定宝塔账号;
修改本地宝塔账号密码;
安装软件;
创建网站
记录:上述操作,在AWS HK ubuntu 22G ubuntu中,于2022年11月30日完成。
然后安装WordPress。
此时,通过绑定hosts文件,再访问新域名,即可进入初始的WP页面了。
数据迁移
数据备份
旧的WP中已经安装插件All-in-One WP Migration。
现在用它导出备份,因为免费版最大只能恢复50MB大小的备份文件,因此我这里选择只备份:数据库+主题+强制使用的插件。
我之前在旧服务器宝塔中,已经把ubuntu机器下/www/wwwroot/yushuoxin2022.cf/所有内容压缩打包下载下来;
宝塔中网站和数据库也都做了备份下载
数据迁移
我们在新服务器的WP中先安装插件All-in-One WP Migration,然后导入上面从旧服务器导出的备份文件。
导入成功后,我们看到文章已经都有了,但是文章中的图片都是没有的,因为新服务器还没有导入这些图片数据。
把旧服务器中/www/wwwroot/yushuoxin2022.cf/wordpress/wp-content/uploads路径下所有内容,也就是文章中的图片文件,复制到/www/wwwroot/yushuoxin.cf/wordpress/wp-content/uploads中。
然后文章中的图片就可以看到了。
这里还发现首页的图片没有显示。
这时,需要到这个主题下,把SpiceBox启用,然后主页就可以看到之前的大图片了。
之后,最好把旧网站中/www/wwwroot/域名/wordpress/wp-content/themes中的使用的主题文件夹honeypress和honeywaves复制到对应新网站相同位置中,否则我之前文章《删掉WordPress文章顶部大图片》的问题还需要重新修复。
站点图标没了,不知道为啥,重新选择下对应图片即可。
然后备份其他插件。
把原网站中\yushuoxin2022.cf\wordpress\wp-content\plugins下的
resume-builder和wp-ulike文件夹直接复制到新网站对应文件夹下,然后新WP中就可以看到了,此时需要启动下导入的插件即可。
之前的简历,和文章点赞数,都在。
wp-ulike的如下配置需要重新设置一下。
easy-table-of-contents这个插件按照上述操作好像不好用,不过没关系,我们在新WP中手动安装下这个插件即可。
安装并启用后,原文章中的目录就自动恢复了。
AWS Lambda等配置恢复
参考我的文章《为使用了Cloudflare CDN的AWS WordPress服务器设置安全组(用Lambda+CloudWatch Events实现自动化)》。
Cloudflare配置新域名
域名添加,在域名注册网站修改NS为Cloudflare以激活Cloudflare上该域名的配置,完成后,如下内容需要手动配置
部署新域名证书
参考我的文章《安装宝塔面板和安装WordPress个人网站》
这里宝塔证书和Let’s Encrypt其实申请其中一个就行,宝塔证书是一年有效期,另一个是几个月,但是可以自动续期。
Let’s Encrypt申请过程如下。
此时证书已部署,可打开强制HTTPS
宝塔证书(试用)申请过程大致如下。
申请后,可以到宝塔官网https://www.bt.cn/admin/safe 检查宝塔证书的申请状态,我这次是过了不到6个小时,由待验证变成已颁发的。
等证书申下来安装上后,再在Cloudflare上做如下变更
再把网站DNS解析,从“仅限DNS”改成“已代理”。
然后浏览器F12访问网站可见,已是Cloudflare提供的https的服务了。
直接访问http也会跳转到https。
备份网站和数据库
在宝塔中备份站点、备份数据库;
在WordPress管理的插件All-in-One WP Migration中,备份:数据库+主题+强制使用的插件;
并下载上述备份存档。
宝塔中配置数据库自动备份的计划任务。
删除旧AWS账号相关配置
- 停掉EC2
- 删除lambda
- 删除us-east-1 region中CloudWatch里Billing相关告警配置
- 检查SNS S3
- 检查Bills每月账单,看历史账单中有哪些条目
我最终想做如下操作:
* 登陆root账号,进入account设置,拉到最下面,选择Close Account。
但是根据官方关闭账号的说明
https://aws.amazon.com/cn/premiumsupport/knowledge-center/close-aws-account/
“关闭您的账户可能不会自动终止所有的活动资源。有些活动资源在您关闭账户后甚至可能还会继续产生费用。您需要支付关闭前产生的任何使用费用。
在关闭账户之前,请执行以下操作:
查找所有活动资源。有关更多信息,请参阅如何检查我的 AWS 账户中不再需要的活动资源
终止所有资源。有关更多信息,请参阅如何终止我的 AWS 账户中不再需要的活动资源”。
因此我决定账号先保留,等过一个月,查看下账单,没有产生费用再决定是否关闭账号。
小结
上述工作顺利的话,需要大约6个小时的工作量。
如下几点可能是需要提前准备的:
- 旧服务器的各种备份;
- 为新AWS账号申请准备的邮箱和信用卡(VISA/MasterCard/American Express);
- 新的域名(最好提前5天申请,确保修改nameserver后,在Cloudflare上能激活,建议确认新域名在Cloudflare可以激活后,再开始在宝塔上创建新域名的网站);
恩,就这些了。想到新的我再更新文章。
发表回复