因为自己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。
废话不多说,看操作。
配置云服务器
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d
部署到GitHub。
其步骤很多博客都有详细的描叙,不做累述。
安装nginx
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。
在安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径,
| include /data/hexo/nginx/cong.d/*.conf;
|
在/data/hexo/nginx/cong.d/
下添加配置文件blog.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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| server { listen 443;
server_name razeencheng.com; server_tokens off;
access_log /data/hexo/nginx/logdata/nginx.log;
include /data/hexo/nginx/ip.blacklist;
ssl_ct on;
ssl_trusted_certificate /data/hexo/nginx/ssl/ca.pem;
ssl_certificate /data/hexo/nginx/ssl/cert.pem; ssl_certificate_key /data/hexo/nginx/ssl/cert.key; ssl_ct_static_scts /data/hexo/nginx/ssl/scts/ecc/;
ssl_dhparam /data/hexo/nginx/ssl/dhparams.pem;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets on;
ssl_stapling on; ssl_stapling_verify on; resolver 114.114.114.114 8.8.8.8 valid=300s; resolver_timeout 10s;
if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { return 444; }
location / { root /www/blog; index index.html; } }
|
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html
文件夹。
安装git
1 2 3 4 5
| yum install git -y
sudo yum install git -y
|
配置git hook
1 2 3 4 5 6
| mkdir /www/blog
mkdir /hexo.git cd /hexo.git git init --bare
|
如果你是非root
用户,需要加sudo
,并改变文件夹权限。
1 2 3 4 5 6
| sudo mkdir /www/blog sudo mkdir /hexo.git
sudo chown -R ec2-user /www sudo chown -R ec2-user /hexo.git
|
配置git hook
。
1 2 3
| cd hooks touch post-receive vi post-receive
|
添加以下内容。
1 2 3 4
| #!/bin/sh WWW=/www/blog GIT_REPO=/hexo.git git --work-tree=${WWW} --git-dir=${GIT_REPO} checkout -f
|
这样将git仓库与文件隔离,互不影响。
最后赋予文件可执行权限。
到这服务器就配置好了。
本地配置
修改_config.yml
的deploy
内容,例如:
1 2 3 4
| deploy: type: git repository: user@your_site_ip:/hexo.git branch: master
|
如果你的ssh设置了免密登陆(点这里看怎么设置免密登陆)你就可以这么写:
1 2 3 4
| deploy: type: git repository: blog:/hexo.git branch: master
|
我的.ssh/config
这么配置的。
1 2 3 4 5
| Host blog HostName 120.78.181.210 User root IdentityFile ~/.ssh/blog.pem #Port 22
|
以后正常的hexo d
既可以一键部署。
之后,可以看看我的效果~