在Linode上的Ubuntu12.04中搭建Hexo
自从接触了Markdown后就喜欢上了,写博客自然也就想使用Markdown,但Wordpress中的Markdown插件都不怎么好用。找了很久终于找了一个在当时感觉还不错的方法,使用马克飞象写然后导出成Html在Wordpress的后台进行发布,具体参见《WordPress使用Markdown》。虽然效果还不错但操作起来比较繁琐,所以经过一番折腾,使用Hexo代替了Wordpress,本文主要讲下怎样在Linode中搭建Hexo。
如果您还不知道Linode和Hexo是什么,自行Google之,本文不做介绍。
2015年初在Linode购买了VPS,机房自然选择了亚洲的东京机房。安装的Ubuntu12.04的操作系统,因为对Linx系统不熟,选择了最省事的lnmp 。lnmp中自带nginx,所以Hexo的部署也就使用nginx做为服务器。
服务器安装Nodejs
Hexo是使用Nodejs写的,运行Hexo需要Nodejs环境,安装最新版Nodejs执行如下命令:
1 | apt-get update |
服务器安装Git
Git是用来在服务端配置Git Hook,以便在客户端可以实现文章一键发布。Git安装命令如下:
1 | sudo apt-get install git |
添加git账户
1 | sudo adduser git |
公钥绑定
在本地使用git命令创建公钥,我使用的是Mac,公钥的路径为~/.ssh/id_rsa.pub
,将公钥的内容添加到服务器上的/home/git/.ssh/authorized_keys
文件中。关于生成公钥文件id_rsa.pub
可以参考
服务器端创建Git仓库
服务端端Git仓库目录为/var/repo/hexoblog.git
,先创建目录,然后使用Git命令来初始化库,代码如下:
1 | $ sudo mkdir /var/repo |
配置Git Hook
Git Hook简单理解就是当代码Push到服务器上后会自动执行一个自定义的脚本,详细请参考
在这里要使用的是post-receive,post-receive的详细解释:
post-receive 挂钩在整个过程完结以后运行,可以用来更新其他系统服务或者通知用户。 它接受与 pre-receive 相同的标准输入数据。 它的用途包括给某个邮件列表发信,通知持续集成(continous integration)的服务器,或者更新问题追踪系统(ticket-tracking system) —— 甚至可以通过分析提交信息来决定某个问题(ticket)是否应该被开启,修改或者关闭。 该脚本无法终止推送进程,不过客户端在它结束运行之前将保持连接状态,所以如果你想做其他操作需谨慎使用它,因为它将耗费你很长的一段时间。
在上面创建的hexoblog.git目录中创建post-receive文件,代码如下:
1 | $ cd /var/repo/hexoblog.git/hooks |
post-receive文件的内容如下:
1 | #!/bin/bash -l |
上面的代码有对服务器目录的写操作,需要给相关的权限才能正常写入:
1 | sudo chmod 777 home.fwhyy.com |
关于权限详细参考:http://blog.csdn.net/mzy202/article/details/7178586
创建虚拟主机
lnmp创建的配置文件路径为:/usr/local/nginx/conf/vhost
在该路径下创建文件home.fwhyy.com.conf
,该文件内容如下:
1 | server { |
重启lnmp
1 | /root/lnmp restart |
本地配置
- 安装Nodejs
- 安装Hexo
1 | npm install hexo-deployer-git --save |
- Hexo根目录下的_config.yml文件的配置如下:
repo格式:git@服务器IP:服务器git库地址
写博客流程
- 在iTerm中使用
hexo n 'new post name'
来创建一篇博客; - 使用MWeb外部文档进行博客的编写,关于MWeb后面会单独开篇来介绍;
- 在iTerm中使用
hexo g
来生成博客; - 在iTerm中使用
hexo s
来启动服务,可以在本地使用http://localhost:4000预览博客; - 在iTerm中使用
hexo d
部署到服务器。
参考
http://www.swiftyper.com/2016/04/17/deploy-hexo-with-git-hook/
http://www.baseproapp.com/2016/02/01/%E5%9C%A8VPS%E4%B8%8A%E9%85%8D%E7%BD%AEhexo%E5%8D%9A%E5%AE%A2/
http://ibruce.info/2013/11/22/hexo-your-blog/
http://blog.csdn.net/mzy202/article/details/7178586
https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90