唠唠闲话

暑假用 Github pages 快捷部署博客,但国内访问比较慢。正好之前买了腾讯云服务器,索性把网站部署上来,即能加快访问速度,还支持百度收录。

参考文章
腾讯云:在 Ubuntu 14.04 服务器上部署 Hexo 博客
腾讯云:个人 hexo 博客的服务端部署及构建

导语

Hexo 是用 Node.js 开发的一个静态站点生成器,支持 Markdown 语法写作,有着强大的插件系统,而且性能优异。

本文将介绍如何在一台 Ubuntu 系统的 CVM 云服务器上快速部署 Hexo 博客站点并通过云服务器上的私有 Git 仓库部署到 Web 服务器目录下。

部署教程

本地设置

  1. Hexo 安装及初始化,参看这篇

  2. 编辑 _config.yml 文件,找到 Deployment 部分,如下修改:

    1
    2
    3
    4
    deploy:
    type: git
    repo: <用户名>@<公网IP>:/var/repo/hexo_static
    branch: master

    其中 <公网IP> 为服务器 IP 地址或域名(如果有的话)

服务器设置

完成本地端的操作后,回到服务器的配置。服务器的连接,命令执行和文件传输参看这篇

安装 Nginx 和 Git

在云服务器上安装 Git 和 Nginx 两个必备的软件包。Git 用于版本管理和部署,Nginx 用于静态博客托管。

1
2
sudo apt-get update
sudo apt-get install git nginx -y

创建私有 Git 仓库

  1. 创建 /var/repo 目录,并在目录下,创建一个名为 hexo_static 的裸仓库(bare repo)。

    1
    sudo mkdir -p /var/repo/ # 创建文件夹

    注:-p 参数表示文件夹存在时忽略操作。

  2. 修改目录的所有权和用户权限,使 $USER 用户具备 /var/repo 目录下所有新生成的目录和文件的权限

    1
    2
    3
    4
    # 更改文件所属
    sudo chown -R $USER:$USER /var/repo/
    # 更改文件权限(可读可执行,不可写)
    sudo chmod -R 755 /var/repo/
  3. 初始化 git 仓库

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

配置 Nginx 托管文件目录

  1. 创建 /var/www/hexo 目录,用于 Nginx 托管。和上一步类似,这里也需要修改目录的所有权和权限。

    1
    2
    3
    sudo mkdir -p /var/www/hexo
    sudo chown -R $USER:$USER /var/www/hexo
    sudo chmod -R 755 /var/www/hexo
  2. 修改 Nginx 的 default 文件

    1
    sudo vim /etc/nginx/sites-available/default
  3. 修改 root 参数为 /var/www/hexo

    1
    2
    3
    4
    5
    6
    7
    ...
    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/hexo; # 站点目录
    index index.html index.htm;
    ...

如果购买了域名,可以将配置中的 default_server 修改为你的域名,例如:
20211004130054

  1. 最后,重启 Nginx 服务,使得改动生效。
    1
    sudo service nginx restart

做完这一步之后,你去访问服务器的 IP 时,应该还是会报错的,因为 /var/www/hexo 目录是空的。

创建 Git 钩子

接下来,在服务器上的裸仓库 hexo_static 创建一个钩子,在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下,即 /var/www/hexo

  1. 在自动生成的 hooks 目录下创建一个新的钩子文件:

    1
    vim /var/repo/hexo_static.git/hooks/post-receive
  2. 在该文件中添加如下代码,指定 Git 的工作树(源代码)和 Git 目录(配置文件等)。

    1
    2
    #!/bin/bash
    git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f
  3. 保存并退出文件,并让该文件变为可执行文件。

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

其他

部署及访问

到这一步,服务器端的设置基本完成,本地端执行 hexo d 部署网站,上传成功后,浏览器输入公网 IP 访问网站。

域名设置

网站部署后,下一步设置域名访问,相关设置参看这篇: 服务器教程(四) | 域名相关

免密登录

设置服务器的 ssh 免密登录,方法同这篇教程,设置后使用 hexo deploy 命令省去密码输入。