利用GitHook持续部署Hexo博客
2017-07-17 本文已影响157人
16643f454ce8
Hexo博客是一款基于Node.js的静态博客框架。
安装Hexo
首先确保本地已经安装Node.js。
安装并创建hexo博客
cd ~
npm install hexo-cli -g
hexo init blog
cd blog
npm install
安装发布插件
npm install hexo-deployer-git --save
服务器创建静态博客存储Git仓库
示例服务器环境:
- Centos 6.8
- Git 1.7.1
创建git用户
sudo useradd git
创建仓库并附权限
sudo git init --bare /home/git/hexo-server.git
sudo chown -R git:git /home/git/hexo-server.git
给git用户附sudo权限
visudo
在文件最后一行加上
git ALL=(ALL) NOPASSWD: ALL
给root用户创建ssh-key
sudo mkdir ~/.ssh
sudo ssh-keygen
给git用户创建ssh-key
sudo mkdir /home/git/.ssh
su git
cd ~
ssh-keygen
多用户免密使用Git
将多用户的ssh-key添加到服务器git用户的authorized_keys
本地:
cat ~/.ssh/id_rsa.pub | ssh root@your_host "cat - >> /home/git/.ssh/authorized_keys"
服务器:
cat ~/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys
cat /home/git/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys
创建GitHook
cd /home/git/hexo-server.git/hooks
vim post-receive
创建 post-receive
:
#!/bin/sh
cd /var/www/hexo-server
unset GIT_DIR
sudo git pull origin master
附权限:
chmod +x post-receive
服务器克隆部署仓库
cd /var/www
su git
sudo git clone git@localhost:/home/git/hexo-server.git
nginx配置(https协议):
server {
listen 443 ssl http2;
server_name your_host;
server_tokens off;
ssl_certificate /var/www/ssl/chained.pem;
ssl_dhparam /var/www/ssl/dhparams.pem;
location / {
root /var/www/hexo-server/;
index index.html index.htm;
}
}
server {
listen 80;
server_name your_host;
return 301 https://$host$request_uri;
}
本地Hexo配置远程部署仓库
cd ~/blog
vim _config.yml
修改 _config.yml
:
deploy:
type: git
repository: git@your_host:/home/git/hexo-server.git
branch: master
发布博客
hexo generate && hexo deploy
至此可以在实现本地一键发布Hexo博客在私有的服务器了。