介绍

Github Pages的访问最近有些慢,感觉不太稳。最近正好买了台Lightsail,就考虑将blog丢到Lightsail上去, 试试Lightsail的访问速度。
整理了一下相关操作步骤,该步骤应该也同样适用于EC2。区别就是Lightsail默认配置了22和80端口是开放的。部署到EC2的话,需要自己设置Security Group开放22和80端口。

步骤前提

步骤中特定的信息,部署时可能需要根据自己实际情况进行修改

  • 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侧步骤

  1. 安装Nginx
    Amazon yum源中的nginx版本是1.14.1, 原生的nginx 1.14.1是带有一些已知安全漏洞的buggy版本, Amazon yum源中的版本不知道是不是bug fixed的版本。

    1
    sudo yum install nginx
  2. 安装git

    1
    sudo yum install git
  3. 创建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
  4. 配置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

  1. 生成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
  2. 拷贝公钥到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
  3. 设定本地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
  4. 修改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: master
  5. hexo发布

    1
    2
    3
    4
    # 发布
    hexo clean
    hexo generate
    hexo deploy
  6. 验证
    访问http://54.203.178.195/, 看是否能正常work

留言