本站迁移到 AWS 记录
发布于 2024-03-10 00:53 阅读:173 评论:0 标签: AWS 迁移

估计近来上面给的压力大,SAE 终于顶不住把绕道海外流量的方式,也要求备案,直接把我的博客应用给禁用。有心备案,但国内又不支持 .org 域名备案。没有搞到同名 .com 和 .cn 域名,只能考虑迁移到海外了。

对比了一下,之前也用过 Linode,考虑 AWS 比较大,也想进一步学习、了解一下主流 SaaS 服务,所以选择迁移到 AWS。简而言之,一顿操作猛如虎,解题全靠 ChatGPT,熬了一周的晚上终于迁移完成。

基本过程:

  1. 通过 ChatGPT 了解和对比,选择最便宜、满足需求的 Lightsail 服务,3.5 美元/月,便宜、能承受;

  2. 创建实例后,分配的动态 IP 很快被墙,绑定的静态 IP 也很快同一个命运。ssh 到服务器,也得科学了。我对这个效率,是服气的,这 TM 给我后面带来了很多的工作量。

  3. 选择 Lightsail 实例中自带的 MySQL,而不是在后台创建数据库服务,省下 15 美元/月;

  4. 迁移域名 DNS 解析到 Lightsail 的“域和 DNS”,这个免费的;但由于 IP 被墙,下面开始整 CDN 来解决这个问题;

  5. CDN 在 AWS 有两个实现方式,有个专门的 CloudFront 服务,但和 Lightsail 的实例整合有点麻烦,不如直接使用 Lightsail 中的“联网(networking) - 分配”。是的,AWS 起了个很奇葩的名字:“分配”。英文是“distribution”,还是看英文好理解一点。这一步需要把域名分配(assignments)到 CDN (distribution)资源;

  6. 为了实现 https 访问,在 CDN distribution 实例的“自定义域”中申请和绑定证书。不要去 ACM(AWS Certificate Manager)里面申请证书,和 CDN 服务一起,在 Lightsail 可以闭环完成证书申请和应用;

  7. 完成配置后,就可以在不科学的前提,正常访问本站了。唯一不爽的,就是登录服务器还得科学一下;

  8. 整个过程,PHP 也完成 v8 版本的适配,又学到了一点点知识。


上面过程比较坑的是 https 证书绑定,由于过于信任 ChatGPT,走了点弯路:

  1. 和 SAE 中,申请证书,上传证书文件即可生效的逻辑不同,AWS 喜欢 DNS 解析验证。由于域名没有迁移到 AWS,无法使用 alias、aname 方式设置域名解析,导致按照 AWS 默认方式配置后,https 访问显示不安全。

  2. ChatGPT 给的方式是,先 www 通过 cname 方式解析到 CDN,然后 http 的裸域名通过重定向到 https 的 www 子域访问。副作用是实际只能访问 www 的二级域名了。

  3. 我想 AWS 不至于这么挫,研究一番,发现裸域名通过 A 记录解析到 CDN 域名时,勾选“是 AWS 资源别名(Is AWS resource alias)”即可。


AI 果然是工具,最终的准确性还是得靠自己。