Hexo托管到AWS S3

有点长,慢慢写

注册AWS

首先得有AWS吧,新账户有免费套餐,刚又新注册一个,没注册过的邮箱地址+信用卡即可,信用卡双币不成功的话试试单币种,免费套餐介绍

创建S3存储桶

创建前测个速,看哪个区域比较快就在哪个区域创建S3,测速网站

如果不用域名访问,存储桶名字随便,但是域名cname访问,存储桶名字必须和域名一样

公开访问

创建过程记得打开公开访问,即取消“阻止所有公开访问”的对勾,其他没啥特别,过程不表;

启用静态托管网站

创建后,进入存储桶——权限——(最下面)静态网站托管——启用“静态网站托管”、托管类型选择”静态网站托管“、索引文件”index.html”

打开ACL

存储桶——权限——对象所有权——编辑——ACL已启用

IAM用户、权限和密钥

创建IAM用户,给予S3的权限,具体啥权限我没研究,就把S3所有权限都给了;

用户——添加权限——直接附加现有策略——搜S3选择“AmazonS3FullAccess“

安全证书——创建访问密钥,保存下来,后面aws cli会用到;

安装AWS CLI

这里下载AWS CLI安装,安装后重新打开cmd窗口,aws configure,提示输入ak和sk,就是上面下载的访问密钥,默认区域自己找,默认输出模式可以不填直接回车,这样aws cli就有了上面那个用户的密钥了,cli访问aws就有权限了;

安装 hexo-deployer-aws-s3

AWS设置好了,现在要给hexo安装 hexo-deployer-aws-s3插件,否则无法deploy到S3上;

在blog目录下,

1
npm install hexo-deployer-aws-s3 --save-dev

安装完毕还要去hexo的_config.yml里设置depoly,原来deploy是git,现在改成aws-s3,按照下面改就没问题,bucket和region当然是上面创建的bucket名和创建区域了,

1
2
3
4
5
6
7
8
9
deploy:
#type: git
#repo: https://github.com/samzzzz/samzzzz.github.io.git
#branch: master
type: aws-s3
region: ap-southeast-1
bucket: samzz.ml
prefix:

至此设置完毕;

测试下hexo d看是否部署到AWS S3成功,不成功试下hexo三联,还不行,回头再看一遍找问题吧。

题外话:同时部署到github pages和AWS S3上

没想到好办法,我是在blog文件夹下创建了两个yaml文件,分别是S3和git的,名字为_config-s3.yml_config-git.yml,写了两个批处理

git.bat

1
2
del _config.yml
copy _config-git.yml _config.yml

s3.bat

1
2
del _config.yml
copy _config-s3.yml _config.yml

最笨的办法了,就是想部署到哪里,就运行bat删除_config.yml然后把对应的配置文件复制成_config.yml