将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的版本。1sudo yum install nginx安装git
1sudo yum install git创建app和git库目录
1234567891011121314151617181920212223242526272829# 创建hexo的web目录sudo mkdir -p /opt/app/web/hexosudo chown -R nginx:nginx /opt/app/websudo chmod g+w /opt/app/web/hexo# 创建git账号和代码库路径sudo mkdir -p /opt/app/gitsudo useradd gitsudo chown -R git:git /opt/app/git# 添加git到nginx组sudo usermod -a -G nginx git# 建立hexo.git库sudo -u git bashcd /opt/app/git/git init --bare hexo.git# 创建git钩子,用来自动发布vim /opt/app/git/hexo.git/hooks/post-receive#!/bin/bashgit --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
1234567891011121314151617181920# 修改nginx配置文件, 添加hexo的serversudo vim /etc/nginx/conf.d/hexo.confserver {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># 启动nginxsudo service nginx start# 测试是否OK浏览器访问: http://54.203.178.195/# 设置开机自启动sudo chkconfig nginx on
本地hexo设置
将本地常用的public key拷贝到git用户中, 再设置本地~/.ssh/config
生成ssh identity key
1234# 生成key 在目录~/tmp/tmp/下, 会生成私钥id_rsa_for_hexo_git和公钥id_rsa_for_hexo_git.pubmkdir -p ~/tmp/tmp/cd ~/tmp/tmp/ssh-keygen -f ./id_rsa_for_hexo_git拷贝公钥到lightsail instance的git账号下
123456789# 登录服务器,切换为git账号sudo -u git bash# 创建.ssh,拷贝id_rsa_for_hexo_git.pub内容到~/.ssh/authorized_keys中cdmkdir .sshchmod 700 .sshecho "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDm2R5Siv8mig2wyBBRhdCxjGE437zTXslAA0j5XLaeBQRF+m+Zw45ygMYG9DEWUMCSXo1OZWefWeKX+pMGibZ4GxHGgGlVChr9DFwmIWoKR+vOKnL6S48ZqFf3idASFyqxiSH5s+RrB74DQj1n4rGIM5djkniyRWt4hCCp+ZHXuH1F3VLlt38MusO5nctdroYUbuIGPA50rU+NHLxEKeN55Yn0jzq7KaaRcNiRbpb2rKGirhb6YbWSLq2v9OoYP2GSDaM8/JsBO9saeF1nt5PYstJT3Re4SbHxiUODGlif8ExHANIf/DKCyn6Quok9PhMVUUrlaTOX49WEIfmfXiIh" >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys设定本地ssh config,设置免密登录lightsail的git账号
1234# 设置本地~/.ssh/config, 添加如下内容Host "54.203.178.195"User "git"IdentityFile ~/tmp/tmp/id_rsa_for_hexo_git修改hexo deploy 配置
12345# 修改hexo deploy config, 修改hexo目录下_config.yml的deploy节点为如下deploy:type: gitrepo: git@54.203.178.195:/opt/app/git/hexo.git/branch: masterhexo发布
1234# 发布hexo cleanhexo generatehexo deploy验证
访问http://54.203.178.195/, 看是否能正常work