在vps上搭建hexo博客用Git Hooks 更新
2016-03-08阅读量
很早以前就想搭一个博客了,三个月前为了翻越伟大的防火墙,去搬瓦工买了个vps,配了个shadowsocks。既然有了vps,当然也希望搞个博客,这个寒假在家没事就开工了。
之前一直不清楚搭一个博客需要啥,所以用了hexo这个静态博客系统。
我的vps系统是Centos 6 x86。 本机是windows7.
搭建过程
搭建过程分两部分,需要在本机和服务端都安装Hexo和Git,VPS上还需要安装Nginx服务器,配置Git Hooks。
本机1
装Git
下载Git for windows,一路默认安装
安装Node.js
在Node.js官网下载最新版,一路默认安装
创建网站目录
在你电脑的任意位置创建一个文件夹(我的是D:\blog,下文以此代替),作为网站目录。
安装Hexo
打开你创建的网站目录,右键git bash here打开命令行。
$npm install -g hexo-cli
$hexo init
$npm install
$hexo d -fg
$hexo serve
打开http://localhost:4000 如果看到hexo的初始页面证明安装成功。
PS:在我的电脑上4000貌似被占了,如果要改端口的话:
$hexo serve -p ****
配置Git
在网站目录git bash,执行
$ git init
$ git add .
$ git commit -m "Initial commit"
我们还要给他加个插件 $npm install hexo-deployer-git –save
生成ssh密钥
输入命令 ssh-keygen -t rsa -C “blog”
,生成公钥和私钥,打开生成密钥的文件夹,找到id_rsa.pub。
VPS(CentOS 6)
我们选择Git仓库+Git Hooks作为服务器端的解决方案. PS:我操作的用户是root,因为这样可以方便点.
安装Git
yum update && apt-get upgrade -y #更新内核
yum install git-core
Git仓库
cd ~
mkdir blog.git && cd blog.git #创建GIT仓库目录
git init --bare #初始化一个空仓库
SSH公钥配置
为了本机不登录自动部署
cd ~
mkdir .ssh && cd .ssh
vim authorized_keys
然后把id_rsa.pub里的那一串复制过去。
本机Git Bash里实验一下
ssh username@yourVps(IP Or URL)
如果配置成功的话不用输入密码就会登陆。
配置本机Hexo
设置git用户名
$ git config --global user.email "email@example.com"
$ git config --global user.name "username"
配置站点目录里的_config.yml
# Deployment
# Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
message: update
repo: root@YOURVPSIP:blog.git
branch: master
这应该是单用户的设置,多用户请自行google,基本是
repo:
s1: root@YOURVPSIP:blog.git,master
运行 hexo g && hexo d
,如果一切正常,静态文件已经被成功的push到了blog的仓库里
PS:注意配置文件的冒号 : 后面一定要有空格
配置Nginx
安装Nginx和Node.js
$yum update && apt-get upgrade -y #更新内核
$yun install nodejs -y
$yum install nginx -y
$cd /etc/nginx/conf.d/
$vi default.conf
我这里为了方便直接改默认配置文件了,其他博客一般介绍新建一个vhost的方法。
server {
listen IP:80 ;
root /var/www/blog; # 这里是你网站的路径 路径下包含index.html等一系列文件
server_name _; # 如果没有域名就像我这样写,有域名就写域名
access_log /var/log/nginx/example_access.log;
error_log /var/log/nginx/example_error.log;
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
root /var/www/example.com/public;
access_log off;
expires 1d;
}
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
root /var/www/example.com/public;
access_log off;
expires 10m;
}
location / {
root /var/www/example.com/public;
if (-f $request_filename) {
rewrite ^/(.*)$ /$1 break;
}
}
}
创建目录 分配权限
$cd /var/www
$mkdir blog
$chmod 775 -R /var/www/blog
顺便初始化一下仓库
git init
git remote add origin ~/blog.git
git fetch
git checkout master
运行Nginx
$/etc/init.d/nginx restart
配置 Git Hooks
这个是不同于网上搜的大多数方法的git hooks配置,因为他们那种方法我用不成功==
cd ~/blog.git/hooks
touch post-receive
vi post-receive
配置如下
#!/bin/sh
unset GIT_DIR
NowPath=`pwd`
DeployPath="/var/www/blog"
cd $DeployPath
git pull origin master
cd $NowPath
exit 0
更改权限
$ chmod +x post-receive
到这里就配置ok了,回到本机站点目录git bash测试一下,可以略作修改,比如换一下标题 title: Xiao555
,然后
hexo g && hexo d
从浏览器打开你的网站或者服务器的ip看看是否成功。 当然,每次更新完都要写这行虽然不多但是还有感觉有点麻烦,在这里我们可以给Git配置一下,编辑~/.bashrc文件,没有会加上:
vim ~/.bashrc
编辑内容:
alias blog='cd D:/blog;hexo g && hexo d'
cd 后面是你的本机站点目录。保存并退出,再运行(不然不生效):
source ~/.bashrc
这样以后写完一篇文章要更新只需要直接打开git bash输入blog就可以了。
至于hexo站点的配置,参照官网就好。这里添加一项就是站点配置文件里的auto_detect: false
要改为true,否则代码块行号只有1,其他为空白:
啊,突然发现写个博客好难啊,记性不好怕写得不对,有错误还希望读者多多指出,参考资料基本就是你能google到的那些有关的博文,就不一一列举了,主要的区别就是git hooks的。
v1.4.14