前言

本文将介绍如何从零开始,将Hexo项目部署到服务器(Ubuntu 20.04)上。

注意:

本篇教程的服务器环境为虚拟机(Ubuntu 20.04),所有的操作均使用Xshell连接进行。对于购买的云服务器环境仍具有适用性。


正文

环境

  • 服务器:虚拟机(Ubuntu 20.04)

    IP:192.168.75.138

  • 客户端:Windows 10

客户端使用Xshell与服务器连接,进行操作。

Ubuntu搭建Git服务器

首先使用Xshell连接服务器,并切换root用户,回退到根路径

创建Git仓库

  1. 安装 openssh

    命令如下:

    1
    sudo apt-get install openssh-server

  2. 安装完成之后,查看ssh服务是否启动

    命令如下:

    1
    ps -e|grep ssh

  3. 创建一个名为blog的用户,用于管理Hexo项目

    命令如下:

    1
    adduser blog

    会提示输入密码,重复确认密码,后面的内容直接回车就好

  4. blog用户添加文件的写权限

    使用vim编辑/etc/sudoers

    1
    vim /etc/sudoers

    找到User privilege specification部分,添加如下内容:

    1
    blog    ALL=(ALL:ALL) ALL

  5. 切换至blog用户

    1
    su blog
  6. 安装git

    命令如下:

    1
    sudo apt-get install git-core

  7. 退回到根路径(cd /),在/var/repo下创建名为hexo_static的裸仓库

    命令如下:

    1
    2
    3
    4
    5
    6
    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

  8. 可以进到该目录进行查看

配置Nginx托管文件目录

  1. 首先安装Nginx

    命令如下:

    1
    sudo apt-get install nginx -y

  2. 创建/var/www/hexo目录,用于Nginx托管,修改目录所有权和权限

    命令如下:

    1
    2
    3
    4
    sudo mkdir -p /var/www/hexo

    sudo chown -R $USER:$USER /var/www/hexo
    sudo chmod -R 755 /var/www/hexo

  3. 使用vim修改/etc/nginx/sites-enabled/default,使root指向hexo目录

    命令如下:

    1
    sudo vim /etc/nginx/sites-enabled/default

    找到server部分,修改如下内容

    1
    root /var/www/hexo;

    该步骤将Nginx服务的默认路径修改为指定目录hexo

  4. 重启Nginx服务,使得改动生效

    命令如下:

    1
    sudo service nginx restart

创建Git钩子

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

    命令如下:

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

    在其中写入如下内容:

    1
    2
    3
    #!/bin/bash

    git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f

    保存后退出

  2. 让该文件变为可执行文件

    命令如下:

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

Windows搭建客户端

  1. 首先安装git,这里不再过多赘述

  2. 使用命令ssh-keygen -t rsa在windons用户下/.ssh文件夹中生成密钥

  3. 将生成的公钥id_rsa.pub拷贝到ubuntu服务器的/home/blog/.ssh/authorized_keys

    首先创建.ssh目录,并进入该目录

    1
    2
    sudo mkdir .ssh
    cd .ssh/

    接着创建authorized_keys文件

    1
    sudo touch authorized_keys

  4. 将Windows下id_rsa.pub文件中的内容复制到Ubuntu下的authorized_keys文件

    命令如下:

    1
    sudo vim .ssh/authorized_keys

部署Hexo项目

编辑hexo的config.yml文件,在deploy处修改repo项:

1
2
3
4
deploy:
type: git
repo: blog@server_ip:/var/repo/hexo_static.git
branch: master

执行命令hexo deploy,将静态文件上传至Ubuntu服务器

进入目录var/www/hexo/下,可以看到静态文件已全部上传

访问测试

打开浏览器,输入Ubuntu服务器的IP地址,就可以看到博客页面啦


补充

如果部署到购买的云服务器(阿里云)上,可能出现访问服务器IP没有响应的情况

点击云服务器/ECS,在安全组规则中手动添加一条80端口的规则:


后记

(后续补充域名的配置操作)

参考文章: