服务器自建git托管hexo

安装软件

更新本地的软件源列表 + 更新本地软件 + 安装GitNginx

1
2
3
4
5
6
7
8
9
sudo apt update

sudo apt upgrade

sudo apt-get install git
git --version

sudo apt-get install nginx
nginx -v

Git服务器搭建

创建Git用户:

  • 创建一个专门的Git用户来管理Git仓库,运行sudo adduser git命令,并按照提示设置密码和其他信息。

创建Git仓库目录:

  • 在合适的位置(如/var/repo/)创建Git仓库目录,并设置正确的权限。运行以下命令:

    1
    2
    3
    sudo mkdir /var/repo/
    sudo chown -R git:git /var/repo/
    sudo chmod -R 755 /var/repo/

初始化裸仓库:

  • 在Git仓库目录下初始化一个裸仓库(即没有工作目录的仓库),用于存储Hexo博客的静态文件。运行以下命令:

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

创建Hexo目录:

  • 博客文件目录,用于做Nginx根目录(存放HTML文件)。运行以下命令:
1
2
3
sudo mkdir -p /var/www/hexo
sudo chown -R git:git /var/www/hexo
sudo chmod -R 755 /var/www/hexo

实现自动更新博客文件目录:

如果希望在将静态文件推送到服务器时自动更新博客文件目录,可以创建一个Git钩子脚本

1
sudo vim /var/repo/web_blog.git/hooks/post-receive

填写以下代码:

1
2
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/web_blog.git checkout -f

赋予脚本可执行权限:

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

修改nginx配置:

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

修改内容详见本博客“Nginx代理多站点及配置HTTPS”章节

重启nginx

1
sudo service nginx restart

本地Hexo博客搭建与配置:

详见本博客“Hexo博客搭建”章节

通过Git部署博客:

配置SSH密钥

  • 在本地计算机上生成SSH密钥对(如果尚未生成),运行ssh-keygen -t rsassh-keygen -t rsa -f ~/.ssh/id_rsa_webs命令(二者区别是后者可自定义生成密钥的文件名,可与其它已有密钥区分开),并按照提示操作。

  • 将公钥(id_rsa.pubid_rsa_webs.pub文件的内容)添加到Ubuntu服务器的远程仓库

    1
    ssh-copy-id -p 端口(一般为22) 用户名@ip地址(或域名)

修改配置文件

修改本地Hexo根目录的_config.yml文件中的推送地址路径和推送方式(一般在该文件的末尾处)

1
2
3
4
deploy:
type: git
repo: 用户名@ip地址(或域名):/var/repo/web_blog
branch: master

推送

在本地Hexo根目录右键Open Git Bash here执行

1
hexo clean && hexo g && hexo d