--愿你内心有种不灭的火焰,将你与别人区分开来--

0%

Hexo系列之部署篇

Hexo系列之部署篇

配置 Nginx

服务器端使用 Nginx 作为 Web 服务器,如果没有安装 Nginx,请安装 Nginx。

然后专门为 Hexo 创建一个部署目录 /wwwroot/hexo,然后在 Nginx 中写入配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# /etc/nginx/nginx.conf
server {
listen 80;
listen [::]:80;
server_name iojo.xyz;
root /wwwroot/hexo;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
index index.html;
}
}

服务器上搭建hexo博客

配置 Git

初始化一个公共仓库

1
2
3
mkdir /wwwroot/hexo-repo
cd /wwwroot/hexo-repo
git init --bare blog.git

使用--bare参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

配置 Git hooks

在 blog.git/hooks 中添加一个 post-receive 的 hook,这个 hook 会在整个 Git 操作过程完结以后被运行,借助 hexo-deploy-git 在每次 push 完成自动化部署。

1
touch /wwwroot/hexo-repo/blog.git/hooks/post-receive

编辑该文件,写入如下内容:

1
2
#!/bin/sh
git --work-tree=/wwwroot/hexo --git-dir=/wwwroot/hexo-repo/blog.git checkout -f

设置该文件的可执行权限:

1
chmod +x post-receive

添加 Git 用户

为了安全,为服务器添加一个单独的 Git 用户来运行 Git 服务。

添加证书登录

将本地 ~/.ssh/id_rsa.pub 中的文件上传到服务器的 /home/git/.ssh/authorized_keys 中。

1
2
# 复制 ssh
cat ~/.ssh/id_rsa.pub | pbcopy

如果使用的是腾讯云服务器,请参考官网添加 ssh 的说明。

改变 blog.git 目录的拥有者为 git 用户

1
sudo chown -R git:git blog.git

禁用 git 用户的 shell 登录权限

出于安全考虑,我们要让 git 用户不能通过 shell 登录,编辑 /etc/passwd

1
2
3
vi /etc/passwd
# 将 git:x:1001:1001:,,,:/home/git:/bin/bash 改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

如此 git 用户可以通过 ssh 正常使用 git,但是无法登录 shell。

至此,服务器端的配置已经完成了。

自动化部署 Hexo

修改 hexo 目录下的 _config.yml 找到 deploy, 修改为:

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: git@123.206.74.118:/wwwroot/hexo-repo/blog.git
branch: master

然后每次添加文章以后只需要执行:

1
hexo clean && hexo g && hexo d