MENU

#教程#VPS+Dropbox+Nginx实现Hexo同步博文

November 20, 2017 • Read: 3447 • 网络笔记

注意:如果你不会科学上网,请自行PASS掉这篇低级教程,如果你不知道Hexo是啥(我想能点进来应该不会不知道吧==.)也请你PASS掉,如果你按照我的教程没有成功或出现问题,也请PASS或者在评论下方留下你的问题亦或者打赏博主100R+QQ.

环境

本次教程环境使用的是debian9 理论而言centos6也可以,主要是需要安装epel,但是在debian这步过程中我pass掉了。

更新

sudo apt-get update
sudo apt-get install build-essential libssl-dev

安装git

apt-get install git-core

安装node.js

这里推荐安装node的管理工具nvm

1.curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash(安装好断开ssh重新连接进行第二步)

2.nvm install v6.9.5(此处安装6.9.5)

如果你无法curl 请先安装 apt-get install curl

安装Dropbox

32位:

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf -

64位:

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

然后,从新建的 .dropbox-dist 文件夹运行 Dropbox 守护程序.

~/.dropbox-dist/dropboxd

输入后会弹出一个连接需要你的Dropbox与Linux主机连接(此处需要科学上网)

配置Dropbox

wget https://linux.dropbox.com/packages/dropbox.py

更改权限:

chmod +x ./dropbox.py

启动Dropbox:

./dropbox.py start

加入自启动:

./dropbox.py autostart

关闭局域网广播:

./dropbox.py lansync n

设置同步列表,把不需要同步的文件夹加入到排除列表,按照你的实际情况更改:

./dropbox.py exclude add ~/Dropbox/这/
./dropbox.py exclude add ~/Dropbox/里/
./dropbox.py exclude add ~/Dropbox/是/
./dropbox.py exclude add ~/Dropbox/不/
./dropbox.py exclude add ~/Dropbox/同/
./dropbox.py exclude add ~/Dropbox/步/
./dropbox.py exclude add ~/Dropbox/文/
./dropbox.py exclude add ~/Dropbox/件/
./dropbox.py exclude add ~/Dropbox/夹/
./dropbox.py exclude add ~/Dropbox/名/

Hexo安装配置

cd /Dropbox #root账户下
mkdir Hexo #建立文件夹
cd Hexo
npm install -g hexo-cli

修改权限

chmod -R 755 /root/Dropbox/Hexo/public
chown www:www /root/Dropbox/Hexo/public
chmod +x /root/Dropbox /root/Dropbox/Hexo

使用incrond监测文件变化

安装 incrond

apt-get install incron

加入开机自启动

service incrond start
chkconfig incrond on

incrond 监测文件夹配置

incrond 和 crond 以及 crontab 一样,也可以用 incrontab 来配置,不过它默认是用 vim 编辑,需要改一下(因为VPS没有装GUI界面,VIM默认是有GUI的):

echo 'editor = vi' >> /etc/incron.conf #修改incrond默认编辑器为vi
这时就可以用 incrontab -e 来编辑配置了,命令输入

rm -f /etc/incron.allow
incrontab -e

会自动用 Vi 打开一个文件,在其中添加:

/root/Dropbox/Hexo/source/_posts/ IN_MOVE,IN_MODIFY,IN_CREATE,IN_DELETE /root/runhexo.bash
/root/Dropbox/Hexo/theme/ IN_MOVE,IN_MODIFY,IN_CREATE,IN_DELETE /root/runhexo.bash

说明:
/root/runhexo.bash 监测到动作之后执行的程序,即hexo自动生成html
监测的动作可以用:

IN_ACCESS,即文件被访问
IN_MODIFY,文件被 write
IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等
IN_CLOSE_WRITE,可写文件被 close
IN_CLOSE_NOWRITE,不可写文件被 close
IN_OPEN,文件被 open
IN_MOVED_FROM,文件被移走,如 mv
IN_MOVED_TO,文件被移来,如 mv、cp
IN_CREATE,创建新文件
IN_DELETE,文件被删除,如 rm
IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
IN_UNMOUNT,宿主文件系统被 umount
IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)
注:上面所说的文件也包括目录。

后台运行HEXO

首先需要你在HEXO的安装目录中新建名为app.js(看自己喜好命名)
编辑一下内容保存

var spawn = require('child_process').spawn;

free = spawn('hexo', ['server', '-p 4000']);/* 其实就是等于执行hexo server -p 4000*/

free.stdout.on('data', function (data) {

    console.log('standard output:\n' + data);

});

free.stderr.on('data', function (data) {

    console.log('standard error output:\n' + data);

});

free.on('exit', function (code, signal) {

    console.log('child process eixt ,exit:' + code);

});

其中4000为hexo的运行端口,可自己修改。

安装PM2

安装PM2保持app.js的运行。

npm install pm2

使用pm2运行app.js

pm2 start app.js #运行app.js
pm2 stop app.js #暂停运行app.js

安装Nginx

apt-get install nginx

配置nginx

首先找到你的nginx配置文件,一般为nginx.conf

修改成如下配置:

server
{
    listen 80;
    server_name 此处填写域名; #(你的域名)
    root /var/www/xxx; #(HEXO所在目录)
    
    
    location / {
client_max_body_size 35m; 
proxy_set_header Host $http_host; 
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:2370; #(你的端口)

      }

 }

nginx -s reload 重启nginx

Last Modified: November 30, 2017
Archives QR Code Tip
QR Code for this page
Tipping QR Code