手把手教你搭建博客
由于 github 访问不太稳定,觉得将博客迁移到 AWS 上。可以借助 AWS 存储的功能。
为什么选择 hexo
-
生成页面速度快
-
支持 markdown
-
一键部署
-
超强的扩展性
-
海量的插件
创建博客
# 安装 npm install hexo-cli -g # 创建博客 hexo init myblog cd myblog npm install # 本地运行 hexo server
这短短的几步,博客便创建成功了。
安装部署工具
# 安装 npm install hexo-deployer-aws-s3 --save-dev # 将部署配置放入 _config.yml deploy: type: aws-s3 # 插件的名字 region: us-east-1 # 存储桶所在区域 bucket: my-bucket # 存储桶名字
AWS 使用指南
AWS 存储介绍
S3 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。首年使用会有 5 GB 的免费存储空空间。
接下来,就需要我们在 aws 上创建存储。
创建存储桶
保存后
此时,更新 deploy 配置
# 将部署配置放入 _config.yml deploy: type: aws-s3 # 插件的名字 region: ap-northeast-1 # 存储桶所在区域 bucket: robinblog # 存储桶名字
凭证
凭证的作用是为了获得 aws s3 存储的控制权限,便于部署静态网站。进入官方文档,需要生成凭证、配置策略、配置凭证。
生成凭证
-
登录 AWS Management Console,单击 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。
-
在导航窗格中,选择 Users (用户)。
-
选择要为其创建访问密钥的用户的名称,然后选择 Security credentials (安全凭证) 选项卡。
-
在 Access keys(访问密钥) 部分,选择 Create access key (创建访问密钥)。
-
要查看新访问密钥对,请选择 Show (显示)。关闭此对话框后,您将无法再次访问该秘密访问密钥。您的凭证与下面类似:
访问密钥 ID:AKIAIOSFODNN7EXAMPLE
秘密访问密钥:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
-
要下载密钥对,请选择 Download .csv file (下载 .csv 文件)。将密钥存储在安全位置。关闭此对话框后,您将无法再次访问该秘密访问密钥。
-
下载
.csv
文件之后,选择 Close (关闭)。在创建访问密钥时,预设情况下,密钥对处于活动状态,并且您可以立即使用此密钥对。
凭证生成后,还必须拥有执行所需 IAM 操作的权限。具体配置流程,请参阅 IAM 用户指南中的访问 IAM 资源所需的权限,下面是我配置的相关策略
配置策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:*", "s3-object-lambda:*" ], "Resource": "*" } ] }
配置凭证
aws 提供多种配置凭证的方式
-
从加载AWS Identity and Access Management适用于 Amazon EC2 的 (IAM) 角色
-
从共享凭证文件 (
~/.aws/credentials
) 加载 -
从环境变量加载
-
从磁盘上的 JSON 文件加载
-
JavaScript 开发工具包提供的其他 credential-provider 类
我采取了方式 2 ,从共享凭证文件 (~/.aws/credentials
) 加载
[default] aws_access_key_id = <YOUR_ACCESS_KEY_ID> aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>
看文档发现,可以通过 AWS CLI 配置凭证,安装操作官方文档很详细看这里,我们重点介绍下配置凭证的过程。
首次安装成功,命令行执行 aws configure
配置如下:
配置成功后,同样会在 ~/.aws/credentials
文件中创建对应的字段
至此,配置完成。
部署
# 构建 npm run build # 部署 npm run deploy
发现报错,The bucket does not allow ACLs
,还需要在存储中开启 ACLs
接下来要关闭「阻止共有访问操作」
再执行 npm run deploy
,部署成功
访问配置
部署成功后,开启静态网站托管功能
访问域名 http://robinblog.s3-website-ap-northeast-1.amazonaws.com/ 成功
总结
部署确实很方便,但文档还是不太完善,文档中提到「获取凭证」的操作,其中配置 IAM 操作权限也是关键步骤,在文档中确一笔带过,如下图:
在这块花费了不少时间。