Hexo在线运行

Hexo的好处就是配置十分灵活,而且想改博客源码也是非常方便的,但是麻烦就在于前期的配置环境和在不同的电脑上同步源代码的过程。它不像wordpress那样,可以很方便的在线编辑博文,尽管wordpress很好用,但是它是php做的,不喜欢,就是不喜欢。。。

于是想方设法的准备把Hexo搬到线上去,各种google之后,并没有收获。

自从某天扒拉扒拉的看到了cloud9 IDE。感觉就是神器降临了。

下面,我们就开始搭建环境。

准备工作

服务器:
VPS服务器 //作为在线环境的一个平台,推荐 使用国外的VPS,还可以使用服务器动手搭建ss翻墙平台

软件:
node //软件运行环境
cloud9 IDE //在线代码编辑器
APPNODE //VPS 管理工具(可选)
forever //由于c9是一个node,需要用forever保持后台运行

软件环境:
centos6.4

安装方式

VPS管理工具

由于我是购买的国外的BandwagonHost VPS服务器(确实挺便宜的,速度还可以接受)https://bandwagonhost.com/ ,其自带的kiwivm面板工具功能有限,所以在网上找到了一款linux控制面板工具:APPNODE(这款软件目前只支持centos 6.x)。它可以监控服务器的状态,安装软件以及提供了在线的命令操作面板。

具体安装过程参照:https://www.appnode.com/install

node环境

很简单啦,自行Google。

c9安装

安装过程参照官方git:https://github.com/c9/core

克隆c9代码:git clone git://github.com/c9/core.git c9sdk
进入c9目录:cd c9sdk
执行安装命令:scripts/install-sdk.sh

安装过程中会遇到各种报错,这时候耐心点儿,查看错误原因。我遇到的错误是python版本、缺少npm模块等问题,找到错误后使用手动安装好缺失的模块。

因为我们是vps没有浏览器,而c9默认只支持本地访问。需要修改config目录下的standalone.js文件,把localhost或者127.0.0.1换成你服务器的ip即可,当然你也可以用–listen 参数来指定ip,但是每次都要指定ip比麻烦嘛,所以就找了这么个方法。

启动c9命令

node server.js  //普通启动c9
或者 node server.js -w /usr/share/ -a userName:passWD    //c9 -w切换到/usr/share,-a设置访问密码

安装好后,根据自己的需要配置一个nginx转发,绑定域名。

forever安装

git地址:https://github.com/foreverjs/forever

我也是在cloud9的过程中才知道forever这个东西,安装方式如下

npm install forever -g

启动命令

forever start server.js
// 或者需要设置目录和用户名
forever start server.js -w /usr/share/ --auth userName:passWD //这里之所以要用--auth,是因为我使用-a 冲突,导致程序不能正常运行

查看后台运行程序

forever list

结束所有后台运行的程序

forever stopall

更多使用技巧,请参考官方git

写在最后

到这里基本上在线的运行环境就已经搭建完成了。

如果你同步Hexo编译结果到其他服务器,可以使用同步工具,或者自己写脚本。本文只提供一种思路,欢迎讨论!!!

update 2016-03-09

昨晚上开开心心的给博客换上新衣裳,又给博客换了个新房子(VPS),今天朋友访问的时候说慢的不行。点进去一看,这哪里是慢啊,是根本就进不去啊。

只有继续把博客推倒阿里虚拟云主机。但是想想每次发布实在是太麻烦了:把代码下载到本地然后通过FileZilla上传到虚拟云主机上,真是受不鸟这个过程。

我的虚拟云主机貌似只支持FileZilla和ftp两种同步数据的方式。网上找了半天发现FileZilla都是图形界面的,但我的VPS并没有界面,晕~~

俗话说,只要有Google,没有解决不了的问题,终于让我找到一个通过ftp同步资源的脚本,感谢这位大神(copy完脚本就下班了,没有把链接记下来,可不要过我盗窃你的成果哈)。其实看看这脚本,并不难,只是小弟我才疏学浅,不会呀。经过我的改造,奉献出下面这段脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
hexo clean #清除hexo编译文件
hexo g #重新编译博客
updir=/xhay/xxxx #要上传的文件夹
todir=/xxxWEB #目标服务器文件夹
ip=xxxServer.com #目标服务器ip或域名
user=xxxRoot #ftp用户名
password=xxxPasswd #ftp密码
sss=`find $updir -type d -printf $todir/'%P\n'| awk '{if ($0 == "")next;print "mkdir " $0}'`
aaa=`find $updir -type f -printf 'put %p %P \n'`
ftp -nv $ip <<EOF
user $user $password
type binary
prompt
$sss
cd $todir
$aaa
quit
EOF