传送门

  1. Hexo 之旅
  2. Hexo 博客部署到 Ubuntu 服务器    ⇦当前位置📌
  3. Ubuntu 下为 Nginx 添加 SSL 证书
  4. 多端实现 Hexo 文章发布

前期准备

  • 服务器 root 账户
  • ssh 访问
  • 创建名为 blog 的用户和密码,用于管理 Hexo 项目

    adduser blog
  • 给 blog 用户添加文件的写权限

    # 用 vim 编辑 /etc/sudoers
    vim /etc/sudoers
    # 找到User privilege specification部分,添加如下内容:
    blog ALL=(ALL:ALL) ALL

搭建环境

在服务器上搭建 Git 服务

  • 切换至 blog 用户,后续操作都在 blog 用户下进行

    su blog
  • 安装 git

    sudo apt-get install git-core
  • /var/repo 下创建名为 hexo_static 的裸仓库

    sudo mkdir /var/repo/
    sudo chown -R $USER:$USER /var/repo/
    sudo chmod -R 755 /var/repo/

    cd /var/repo/
    git init --bare hexo_static.git

配置 Nginx 托管文件目录

  • 安装 Nginx

    sudo apt-get install nginx -y
  • 创建 /var/www/hexo 目录,用于 Nginx 托管,修改目录所有权和权限

    sudo mkdir -p /var/www/hexo
    sudo chown -R $USER:$USER /var/www/hexo
    sudo chmod -R 755 /var/www/hexo
  • 用 vim 修改 /etc/nginx/sites-enabled/default,使 root 指向 hexo 目录

    sudo vim /etc/nginx/sites-enabled/default
    # 找到 server 部分,修改 root 指向刚刚创建的 hexo 目录
    # 请注意结尾有个 ; 号
    # 从 root /var/www/html; 修改为
    root /var/www/hexo;
  • 重启 Nginx 服务,使得改动生效

    sudo service nginx restart

创建 Git 钩子

  • 在之前创建的 hexo_static 裸仓库下的 hooks 文件夹中,创建一个名为 post-receive 的钩子文件

    vim /var/repo/hexo_static.git/hooks/post-receive

    # 并写入以下内容后保存退出
    ----------------------------------------
    #!/bin/bash

    git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f
    ----------------------------------------
  • 为钩子文件添加可执行权限

    chmod +x /var/repo/hexo_static.git/hooks/post-receive

本地搭建客户端

  • 在本地机器上安装 Git
  • 使用命令 ssh-keygen -t rsa 在 windons 用户下 /.ssh 文件夹中生成密钥
  • 将生成的公钥 id_rsa.pub 的内容拷贝到 ubuntu 服务器的 /home/blog/.ssh/authorized_keys 上
    • 若没有这个 .ssh 文件夹,创建即可
      sudo mkdir .ssh
      cd .ssh
      sudo vim authorized_keys
      # 此时复制本地的 id_rsa.pub 的内容到 authorized_keys 文件中

配置 Hexo

  • 若还没搭建过 Hexo 博客,请自行搭建,参考 Hexo 之旅 一文
  • 编辑 Hexo 的 config.yml 文件,在 deploy 处修改 repo 项
  • 请换为服务器 ip 地址
    deploy:
    type: git
    repo: blog@<server_ip>:/var/repo/hexo_static.git
    branch: master
  • 执行命令 hexo d 部署到服务器上,此时输入 Ubuntu 服务器的 IP 地址,即可看到博客页面

参考