hexo 博客部署云服务器

我是一直使用 github page 免费的域名来部署博客的,没买域名,也就没有机会在服务器部署 hexo。今天碰巧帮别人部署一次,做个笔记。

思路

在本地写完博客,通过hexo d把编译好的博客推到服务器上的 git 裸仓库。

在远程的 git 仓库中设置git hooks,一旦推送成功,就把博客代码拷一份到 nginx 的静态文件夹下

配置 nginx 静态资源二级域名,即可访问

安装软件

登录云服务器,安装必要的软件

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

创建两个文件夹,home用于放首页,blog用来放博客

1
2
3
4
5
6
sudo mkdir /var/www/blog
sudo mkdir /var/www/home
sudo chown -R $USER:$USER /var/www/blog
sudo chown -R $USER:$USER /var/www/home
chmod -R 755 /var/www/blog
chmod -R 755 /var/www/home

git hooks 自动部署

创建裸仓库

1
2
3
mkdir ~/git
cd ~/git
git init --bare blog.git

设置 git hooks

1
echo "#!/bin/bash\ngit --work-tree=/var/www/blog --git-dir=/home/ubuntu/git/blog.git checkout -f" >> ~/git/blog.git/hooks/post-receive

nginx 配置二级域名

编辑 nginx 配置

1
sudo vim /etc/nginx/conf.d/home.conf

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;

root /var/www/home;

index index.html index.htm index.nginx-debian.html;

server_name lingleaves.cn;

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

1
sudo vim /etc/nginx/conf.d/blog.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;

root /var/www/blog;

index index.html index.htm index.nginx-debian.html;

server_name blog.lingleaves.cn;

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

重载 nginx 使配置生效

1
sudo nginx -s reload

如何部署

其实和发布到 github page 一样无差异,都是下面三条命令

1
2
3
hexo clean
hexo g
hexo d

最主要的是把_config.yaml中的repo改为远程的地址:

1
repo: <uername>@<ip>:/home/unbuntu/git/blog.git

hexo 博客部署云服务器
https://bubao.github.io/posts/7d851d0d.html
作者
一念
发布于
2021年1月22日
许可协议