我是一直使用 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 使配置生效
如何部署
其实和发布到 github page 一样无差异,都是下面三条命令
1 2 3
| hexo clean hexo g hexo d
|
最主要的是把_config.yaml
中的repo
改为远程的地址:
1
| repo: <uername>@<ip>:/home/unbuntu/git/blog.git
|