(本文最先发表于Zhu’s Blog,未经书面授权许可,任何个人和组织不得以任何形式转载、引用本人的任何文章。本人保留追究侵权者法律责任的权利。)
Amplify是大名鼎鼎的AWS提供的Web和移动应用程序托管服务,按实际使用量付费,并提供12个月的免费试用(注意存储、构建和访问量过大可能会产生额外收费,详见定价页面)。本文介绍使用Amplify部署Jekyll站点的方法。
一、进入AWS Amplify
登录AWS的控制台,点击顶部右侧的“区域”,选择一个你喜欢的服务器地点。建议选择离我们地理距离相对较近的东京、香港、新加坡。实际测试中发现Amplify是提供CDN的,所以也不必太纠结选择哪个区域。
在顶部的搜索框中搜索“Amplify”,点击第一个搜索结果“AWS Amplify”,进入Amplify的控制台。接着滑动到页面的最下方,找到“托管Web应用程序”,点击“开始使用”。
二、指定代码仓
Amplify支持直接从GitHub、GitLab获取代码,也支持孤陋寡闻的阿猪从没听说过的BitBucket和AWS CodeCommit,还支持直接上传代码。
我们这里选择从自己的GitHub代码仓获取代码。点击“GitHub”,然后点击“继续”,跳转到GitHub的授权页面。
在授权页面中点击右下角绿色的“Authorize AWS Amplify”按钮,跳转到GitHub的“Install & Authorize AWS Amplify”页面,根据需要选择将GitHub账户中的哪些代码仓授权给Amplify。你可以只选择存放Jekyll的代码仓,也可以选择全部代码仓。选择好后,点击页面底部的“Install&Authorize”按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/2a27719bc9d51a48fc682b4c565e744f.jpeg)
三、构建设置
授权成功后,页面会跳转回Amplify,进入构建(CI/CD)设置页面。
第1步是“添加存储库分支”,这里根据你的实际情况选择。一般是使用main分支。
![](https://i-blog.csdnimg.cn/blog_migrate/3a81901e9ec9b8ad25ebdb8851ba96c5.jpeg)
第2步是配置用于构建页面和部署的脚本。Amplify会自动识别出应用的类型是Jekyll,并提供对应的预设脚本。
![](https://i-blog.csdnimg.cn/blog_migrate/07e916594664100b5973b13485962779.jpeg)
但是经过测试,阿猪发现这个预设脚本无法正常完成部署任务,日志中会出现如下错误信息:
[WARNING]: /usr/local/rvm/rubies/ruby-2.7.6/lib/ruby/2.7.0/bundler/resolver.rb:290:in `block in verify_gemfile_dependencies_are_found!': Could not find gem 'jekyll-sitemap' in any of the gem sources listed in your Gemfile. (Bundler::GemNotFound)`
按照错误信息的提示,大致是因为jekyll-sitemap
这个gem没有被正确的安装。需要在执行构建任务之前先升级RubyGems到3.3.22以上版本,然后执行bundle install
命令,以确保Amplify环境安装了部署Jekyll所必需的gems。以下是修改后的完整代码:
version: 1
frontend:
phases:
preBuild:
commands:
- gem install bundler
- bundle install
build:
commands:
- jekyll b
artifacts:
baseDirectory: _site
files:
- '**/*'
cache:
paths: []
第3步是审核,直接点击页面中的“保存并部署”按钮即可。
四、构建和部署
接下来Amplify会开始执行构建和部署,我们可以在页面中看到状态进度。
执行完成后,会看到下图所示的三个绿色对勾。这个时候Jekyll站点已经部署完成了,点击下图红框位置的链接即可正常访问。这个链接使用的是Amplify提供的免费二级域名。
![](https://i-blog.csdnimg.cn/blog_migrate/14d464a4e32febac53b9d33bd51fd597.jpeg)
五、绑定自己的域名
如果你希望绑定自己的域名,可以参考下边的操作:
点击Amplify控制台左侧的“域管理”,进入“域管理”界面,然后点击右上角的“添加域”按钮。在“添加域”界面的搜索框中填入自己的域名,然后点击“配置域”按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/c5ae5c2173acdeca8ce65544a67c47d0.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/8d174a79e2448f77e2b3ebbac799529c.jpeg)
记录类型 | CNAME |
主机记录 | .example.com之前的字符串 |
记录值 | CNAME之后的字符串 |
![](https://i-blog.csdnimg.cn/blog_migrate/6bdb04f8c9c549e8fd521f22cb328eef.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/09844f9feda46ac23c7cbc30fc86aba3.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b84e48ba67f97fec1264bdbd4ffbc535.jpeg)
记录类型 | CNAME |
主机记录 | @ |
记录值 | <替换为你的记录值>.cloudfront.net |
如果你同时使用www前缀,需要再添加一条对应的CNAME记录:
记录类型 | CNAME |
主机记录 | www |
记录值 | <替换为你的记录值>.cloudfront.net |
域名解析记录一般会即刻生效,但是受网络节点中的DNS缓存和本地DNS缓存、浏览器缓存的影响,可能有几分钟甚至更久的延迟。你可以尝试刷新本地DNS缓存、清空浏览器缓存,然后通过在浏览器中查看SSL证书信息来判断你的Jekyll站点是否已经托管在Amplify。
![](https://i-blog.csdnimg.cn/blog_migrate/c1b02a267e4b7a8b2447df910ecc3e19.jpeg)