将hexo部署到AWS的Lightsail
介绍
Github Pages的访问最近有些慢,感觉不太稳。最近正好买了台Lightsail,就考虑将blog丢到Lightsail上去, 试试Lightsail的访问速度。
整理了一下相关操作步骤,该步骤应该也同样适用于EC2。区别就是Lightsail默认配置了22和80端口是开放的。部署到EC2的话,需要自己设置Security Group开放22和80端口。
步骤前提
- 本地已经有hexo环境
- 有可用的Lightsail Instance
步骤中特定的信息,部署时可能需要根据自己实际情况进行修改
- Lightsail Instance相关:
- AMI是原生的
- Public IP是
54.203.178.195 - 博客目录
/opt/app/web/hexo - 存放git库的账号名字为git, 博客git库代码存放目录:
/opt/app/git/hexo.git
- 本地信息
- 本地系统是
Macos 10.14.4 - 以identity key而不是密码形式登录远端服务器
- 此处在~/tmp/tmp/下新生成key,也可以按照实际要求修改为使用平时用的key
- 本地系统是
aws lightsail侧步骤
安装Nginx
Amazon yum源中的nginx版本是1.14.1, 原生的nginx 1.14.1是带有一些已知安全漏洞的buggy版本, Amazon yum源中的版本不知道是不是bug fixed的版本。1
sudo yum install nginx
安装git
1
sudo yum install git
创建app和git库目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29# 创建hexo的web目录
sudo mkdir -p /opt/app/web/hexo
sudo chown -R nginx:nginx /opt/app/web
sudo chmod g+w /opt/app/web/hexo
# 创建git账号和代码库路径
sudo mkdir -p /opt/app/git
sudo useradd git
sudo chown -R git:git /opt/app/git
# 添加git到nginx组
sudo usermod -a -G nginx git
# 建立hexo.git库
sudo -u git bash
cd /opt/app/git/
git init --bare hexo.git
# 创建git钩子,用来自动发布
vim /opt/app/git/hexo.git/hooks/post-receive
#!/bin/bash
git --work-tree=/opt/app/web/hexo --git-dir=/opt/app/git/hexo.git checkout -f
# 添加可执行
chmod +x /opt/app/git/hexo.git/hooks/post-receive
# 退出git用户
exit配置nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 修改nginx配置文件, 添加hexo的server
sudo vim /etc/nginx/conf.d/hexo.conf
server {
listen 80;
server_name 54.203.178.195;
root /opt/app/web/hexo;
}
# 添加测试页
sudo -u nginx vim /opt/app/web/hexo/index.html
<h1>I'm working here.</h1>
# 启动nginx
sudo service nginx start
# 测试是否OK
浏览器访问: http://54.203.178.195/
# 设置开机自启动
sudo chkconfig nginx on
本地hexo设置
将本地常用的public key拷贝到git用户中, 再设置本地~/.ssh/config
生成ssh identity key
1
2
3
4# 生成key 在目录~/tmp/tmp/下, 会生成私钥id_rsa_for_hexo_git和公钥id_rsa_for_hexo_git.pub
mkdir -p ~/tmp/tmp/
cd ~/tmp/tmp/
ssh-keygen -f ./id_rsa_for_hexo_git拷贝公钥到lightsail instance的git账号下
1
2
3
4
5
6
7
8
9# 登录服务器,切换为git账号
sudo -u git bash
# 创建.ssh,拷贝id_rsa_for_hexo_git.pub内容到~/.ssh/authorized_keys中
cd
mkdir .ssh
chmod 700 .ssh
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDm2R5Siv8mig2wyBBRhdCxjGE437zTXslAA0j5XLaeBQRF+m+Zw45ygMYG9DEWUMCSXo1OZWefWeKX+pMGibZ4GxHGgGlVChr9DFwmIWoKR+vOKnL6S48ZqFf3idASFyqxiSH5s+RrB74DQj1n4rGIM5djkniyRWt4hCCp+ZHXuH1F3VLlt38MusO5nctdroYUbuIGPA50rU+NHLxEKeN55Yn0jzq7KaaRcNiRbpb2rKGirhb6YbWSLq2v9OoYP2GSDaM8/JsBO9saeF1nt5PYstJT3Re4SbHxiUODGlif8ExHANIf/DKCyn6Quok9PhMVUUrlaTOX49WEIfmfXiIh" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys设定本地ssh config,设置免密登录lightsail的git账号
1
2
3
4# 设置本地~/.ssh/config, 添加如下内容
Host "54.203.178.195"
User "git"
IdentityFile ~/tmp/tmp/id_rsa_for_hexo_git修改hexo deploy 配置
1
2
3
4
5# 修改hexo deploy config, 修改hexo目录下_config.yml的deploy节点为如下
deploy:
type: git
repo: git@54.203.178.195:/opt/app/git/hexo.git/
branch: masterhexo发布
1
2
3
4# 发布
hexo clean
hexo generate
hexo deploy验证
访问http://54.203.178.195/, 看是否能正常work