hexo在线编写博客——hexo系列文章(四)

引言

这篇文章就是在线写出来的~

从编辑、到生成,全部云上完成,妈妈再也不用担心我在别的电脑上没法写hexo了!

效果如图:

cloud9在线写博客

综述

搭建这个环境其实也并不麻烦啦,Cloud9我是用别人的镜像装的,所以简单很多。总体来说,大概需要这些东西:

  • VPS一台
  • Docker
  • Cloud9
  • nvm
  • node(建议>6.*)
  • npm
  • hexo
  • apache(可选)
  • rsync(可选)
  • incrond(可选)

安装

VPS篇

我VPS用的系统是CentOS6.8 x64

Docker安装

CentOS下安装Docker还是很简单的,命令如下:

1
sudo yum install docker-io

安装完后启动docker服务

1
service docker start

Cloud9安装(Docker)

用VPS

注:dockerhub上现成的image是没有密码的,我可不希望别人谁都可以进来编辑我的博客,所以改一下Dockerfile,自己构建镜像。

不要用这个办法了,dockerhub上有现成的镜像sapk/cloud9,地址点这里
想看旧方法,请点这里

1
2
3
4
docker pull sapk/cloud9

# start with auth 将username,password替换成自己的账号密码
docker run -d -v your-path/workspace:/workspace -p 8181:8181 sapk/cloud9 --auth username:password

http://ip:8181 查看效果吧!

用Docker云

这里仅以Arukas为例。
注册账号什么的就不说了。
直接创建应用,按照下图填写就行了:
Arukas
创建完成后启动应用,如果一次不成功就多试几次。
创建成功后,点击Endpoint后面的链接就可以进到你自己的cloud9了。

千万注意:我不知道这里的数据都储存在了哪里,所以一定要定时将自己的博文通过cloud9页面下载到自己的电脑上,以作备份。

nvm、node、npm、hexo

这些我们一起讲,因为都是在cloud9中安装的。

nvm、node、npm的安装

nvm是node的版本管理器。

首先安装必要的包
1
2
sudo apt-get update  
sudo apt-get install build-essential libssl-dev

注意:cloud9镜像是用ubuntu搭建的,所以要用apt-get,这个不是centos系统了,不要弄混了~

安装nvm的脚本
1
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash
使用nvm安装并使用node6
1
2
3
4
nvm install v6.10.3
nvm use v6.10.3
node -v
# v6.10.3 即表示安装成功

npm有了,就不必装了

hexo安装

这个不是本文重点,可以参考我以前的文章
搭建hexo博客小记——hexo系列文章(一)

1
2
3
4
5
npm install -g hexo-cli
mkdir hexo
hexo init
npm install
hexo g

好了,到此为止,整个在线环境就部署成功了,你可以hexo d来提交你的博客到github,当然,也可以用你的VPS来
做网页服务器。如果不想的话,下面的部分就不用看了。


apache安装

由于我没学过前端,这里我用的是lnmp一键安装包,可以只装Apache,别的都不用装。

将主机目录设置为your-workspace/hexo/public

我的这样做是不行,改了权限也不行,所以只能用默认的目录/data/wwwroot/your-domain-name然后同步两个文件夹了。
这是就用到最后两个工具:

  • rsync用来同步
  • incron用来监控文件改动

rsync的使用

使用方法如下:

1
rsync -av --delete /ressourcen /ressourcen_backup

这样当/ressourcen目录中的文件有变动、删除时,就会同步到/ressourcen_backup

我们要把这个文件写到一个脚本中,这样才能发挥他的作用(后述)。

incron

incron的使用,我在前面的文章中也提到过VPS+Hexo+Dropbox创建个人博客

安装incron

1
2
yum install incron
service incrond start

用incron来监测文件夹变动

1
2
3
incrontab -e
# 在其中添加:
your-path/hexo/public IN_MOVE,IN_MODIFY,IN_CREATE,IN_DELETE your-path/runrsync.bash

1
vim runrsync.bash

runrsync.bash中写入:

1
2
3
4
5
#!/usr/bin/env bash
exec 200<$0
flock -n 200 || exit 1
sleep 1
rsync -av --delete /ressourcen /ressourcen_backup

赋予权限

1
chmod +x runrsync.bash

这样当hexo gpublic文件夹就会发生变动,此时incron检测到了文件变动,运行脚本runrsync.bash,实现两个文件夹的同步。

补充

时区问题

若用国外主机,在hexo new时,会由于时区设置的问题,date显示的不是本地时间,可以更改时区:

1
2
date -R  # 查看当前系统时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 设置时区为东八区

开机启动

我们写了很多脚本,运行了很多服务,机器重启之后都不会开起来,所以我们要加入开机自启,才能保证功能的正常。

1
2
3
4
5
6
7
8
9
10
11
12
vim /etc/rc.d/rc.local

# 写入以下内容

# Docker
service docker start

# cloud9
docker start 3e9a55a

# incrond
service incrond start

old

cloud9-docker

(此方法已过期)
Dockerfile的github地址在这里:https://github.com/kdelfour/cloud9-docker

我们将它克隆下来:

1
2
3
4
cd ~
mkdir cloud9
cd cloud9
git clone https://github.com/kdelfour/cloud9-docker.git

然后就要改改文件了,方法如下:

(我是参考别人的)

参考issue页面https://github.com/kdelfour/cloud9-docker/issues/15
pbelyaev的回答:
Just clone this repository and edit conf/cloud9.conf:

[program:cloud9]
command = node /cloud9/server.js –listen 0.0.0.0 –port 80 –auth user:password -w /workspace
directory = /cloud9
user = root
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/cloud9.log
stderr_logfile = /var/log/supervisor/cloud9_errors.log
environment = NODE_ENV=”production”
Then edit docker-compose.yml file:


cnine:
build: ./dir/to/cloned/repository

改好以后就可以构建镜像了,build命令格式如下

1
docker build -t image_name Dockerfile_path

所以我们敲命令:

1
2
cd Dockerfile所在目录
docker build -t yourname/cloud9 .

构建完成后,我们来创建并启动容器:

1
docker run -it -d -p 80:80 -v /your-path/workspace/:/workspace/ yourname/cloud9 --auth user:password

注:记得将user:password改为你自己的用户名:密码;yourname/cloud9是你自己起的image名字。

http://your-server-ip

就可以进入icloud了。

推荐

推荐大家看我以前写的hexo系列:

搭建hexo博客小记——hexo系列文章(一)

利用Swiftype建立站内搜索——hexo系列文章(二)

VPS+Hexo+Dropbox创建个人博客——hexo系列教程(三)

文章作者: He Liu
文章链接: https://heliu.io/2017/05/10/hexo在线编写博客/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HeLiu的博客
支付宝打赏
微信打赏