Hexo博客部署到服务器

服务器环境配置

我使用的是root执行,因为服务器只有我一个人用,不会出什么问题

安装git和nginx

请查看CentOS7 + nodejs + nginx + MySQL搭建服务器

配置ssh

执行:

cat ~/.ssh/id_rsa.pub

把拿到的公钥添加到~/.ssh/authorized_keys

如果你之前没有生成过公钥,则可能就没有 id_rsa.pub 文件,查看这里

初始化仓库

cd /home/jake
sudo git init --bare m.git

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

配置git hooks

我们这里要使用的是 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行。

m.git/hooks 目录下新建一个 post-receive 文件:

cd /home/jake/m.git/hooks
vim post-receive

post-receive 文件中写入如下内容:

#!/bin/sh
git --work-tree=/home/jake/m --git-dir=/home/jake/m.git checkout -f

/home/jake/m 要换成你自己的部署目录。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。

设置这个文件的可执行权限:

chmod +x post-receive

Nginx配置

我用的是lnmp(如果是直接安装的Nginx,配置文件为/etc/nginx/nginx.conf)

cd /usr/local/nginx/conf/vhost
vim m.conf

输入下面配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server
{
listen 80;
#listen [::]:80;
server_name i.jakeyu.top;
index index.html index.htm index.php default.html default.htm default.php;
#这里要改成网站的根目录
root /home/jake/m;

#error_page 404 /404.html;
location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf)$
{
access_log off;
expires 1d;
}

location ~ .*\.(js|css|txt|xml)?$
{
access_log off;
expires 12h;
}

location / {
try_files $uri $uri/ =404;
}

access_log /home/jake/m.log;
}

测试nginx配置是否可以用

nginx -t

如果返回successful,就表示成功了。重启Nginx

service nginx restart

本地配置

修改博客根目录下_config.yml文件

1
2
3
4
deploy:
type: git
repo:
vps: root@115.159.2.254:/home/jake/m.git

然后执行:

hexo new 测试.md
hexo d -g

访问刚刚的配置的域名就可以访问自己的网站了