
安装前准备
-
首先登陆vps需要执行如下命令更新各种依赖
-
为防止机器没有安装epel,先安装epel(必须安装)
-
升级 CentOs 内核
yum -y update
-
安装 Git
yum install git-core
导入key
rpm --import http://download-i2.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
安装epel,分别是32位和64位
rpm -Uvh http://download-i2.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://download-i2.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
然后安装yum-priorities
yum install yum-priorities -y
安装好后用命令看下,如果成功的话输出内容里有epel字样
yum repolist
- 安装Node.js
sudo yum install nodejs
sudo yum install npm --enablerepo=epel
安装Dropbox
1.网上给出的教程试了好几次都有问题,自己搜到了正确的姿势
参考说明:nstall Dropbox In An Entirely Text-Based Linux Environment
安装代码如下:
cd
32位
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"
64位
wget https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86_64-30.4.22.tar.gz
tar -xvzf dropbox-lnx.x86_64-30.4.22.tar.gz
然后执行,登录Dropbox的账号。
~/.dropbox-dist/dropboxd
首次打开需要你验证账户。选择有右键复制上面一段,浏览器打开,登录你的Dropbox账号,授权这台机器参与你的网盘同步,关联成功会出现如下画面,Ctrl+C一下


注意:进入连接后,一定要等刷新完毕后再点,并且不能结束终端,等到关联成功的消息。
Dropbox使用
切换到dropbox.py脚本所在位置
查看dropbox 工作状态./dropbox.py status
开始同步 ./dropbox.py start
停止同步 ./dropbox.py stop
帮助 ./dropbox.py exclude help
选择性同步文件夹
例如你不需要同步Dropbox/books/
目录,进入Dropbox目录cd ~/Dropbox
,运行exclude来排除books目录:
./dropboxy.py exclude add books #当前目录最好在Dropbox
更多不需要同步的目录:
./dropboxy.py exclude add book photos Public Documents #排除Dropbox目录下books, photos, Public, Documents等目录
安装hexo
- 在刚才上面的结束之后 ls一下看看
[root@vultr ~]# ls
Dropbox dropbox.tar.gz----这行是结果 别执行
- 切进去Dropbox目录
cd Dropbox
- 接下来创建博客的目录
mkdir hexo
cd hexo
- 开始正式安装hexo
npm install hexo-cli -g 网上教程里的很多命令在256或者128内存下全部是坑,因为内存关系安装不了
hexo init 初始化hexo的意思
hexo generate 可缩写为:hexo g
hexo server 可缩写为:hexo s
这时端口4000被打开了,我们能过浏览器打开地址,http://<服务器ip>:4000/. 访问测试一下看能不能看到首页,如果看不到或者结果不是OK,请排查错误。
添加防火墙例外
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4000 -j ACCEPT
或直接关闭防火墙
临时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
这个时候可以去你的Dropbox网盘里看看有没有hexo目录,并且目录结构如下

-
下载Dropbox官方提供的一个用于管理的 Python 脚本
wget https://linux.dropbox.com/packages/dropbox.py
所有命令可以点击这里查看 -
增加这个脚本的权限
chmod +x ./dropbox.py
-
加入到自启动
./dropbox.py autostart y
然而实际测试发现这个在重启后 root 用户登录后没有自动启动,需要手动登录到 dbox 用户下进行启动,启动代码为./dropbox.py start
可以用ps -e
命令来查看当前进程看看有没有成功启动 -
关闭局域网同步
./dropbox.py lansync n
话说不关应该也没事

安装并配置Nginx
注意:如果有单独数据盘,建议您先挂载数据盘,建议将网站内容、数据库放在数据盘中。如何挂载数据盘,请参考(支持阿里云、腾讯云):《如何利用脚本自动化挂载数据盘?》
- 安装步骤参考:安装说明
yum -y install wget screen curl python #for CentOS/Redhat #
apt-get -y install wget screen curl python #for Debian/Ubuntu wget http://aliyun-oss.linuxeye.com/oneinstack-full.tar.gz
#阿里云用户下载
wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz
#包含源码,国内外均可下载
wget http://mirrors.linuxeye.com/oneinstack.tar.gz
#不包含源码,建议仅国外主机下载
tar xzf oneinstack-full.tar.gz
cd oneinstack
#如果需要修改目录(安装、数据存储、Nginx日志),请修改options.conf文件
screen -S oneinstack
#如果网路出现中断,可以执行命令`screen -r oneinstack`重新连接安装窗口
./install.sh
#注:请勿sh install.sh或者bash install.sh这样执行
- 安装好之后添加虚拟主机
cd oneinstack
./vhost.sh
3.修改Nginx配置文件
这里路径缓存你自己的虚拟主机路径,也就是你自己的域名
vim /usr/local/nginx/conf/vhost/blog.liangs.me.conf (你的配置文件名)
如果只想要静态的页面
server
{
listen 80;
#listen [::]:80;
server_name blog.liangs.me; (你的站点域名)
index index.html index.htm index.php default.html default.htm default.php;
root /root/Dropbox/hexo/public; (hexo的目录)
...
}
如果要想实现hexo s
后实时动态的页面
server {
listen 80;
server_name blog.liangs.me;
location / {
proxy_pass http://127.0.0.1:4000/;
}
}
增加文件夹权限,否则会出现[permission denied]错误无法同步文件。根据你的目录来,还有我是直接都赋予777属性(所有人可以读写运行)了以防出错,
chmod -R 755 /root/Dropbox/hexo/public
chown www:www /root/Dropbox/hexo/public
chmod +x /root/ /root/Dropbox/ /root/Dropbox/hexo/
然后重启nginx
service nginx restart
内容同步发布
- 安装和配置 incrond 检测文件变化。incrond 可以监控指定目录的文件指定变化(删除修改打开移动等等),并且运行指定命令。
yum install incron
启动并加入自启
service incrond start
chkconfig incrond on
修改默认编辑器为 Vi (貌似默认编辑器本来是一个 GUI,我们远程状态下没有 GUI)
echo 'editor = vi' >> /etc/incron.conf
这个时候使用以下命令来进行编辑
incrontab -e
打开后添加:
/root/Dropbox/hexo/source/_posts/ IN_MODIFY,IN_CREATE,IN_DELETE,IN_MOVE bash /root/runhexo.sh
/root/Dropbox/hexo/theme/ IN_MODIFY,IN_CREATE,IN_DELETE,IN_MOVE bash /root/runhexo.sh
最后写 runhexo 这个脚本
-
首先我们可以用以下指令新建空文本
touch runhexo.sh
注意要在 root 目录下创建。目录要对应你在 incrontab 的里写的目录。 -
然后打开文件进行编辑
vim /root/runhexo.sh
-
代码如下:
#!/usr/bin/env bash
exec 200<$0
flock -n 200 || exit 1
sleep 10
cd /root/Dropbox/hexo && hexo clean && hexo g && hexo d
cd /root/Dropbox/hexo/source/ && git add -A && git commit -m "auto commit" && git push
上面push到github还需要配置SSH等步骤,见后面的描述。
以上代码会在特定时间内只允许一个脚本实例运行。运行后会清理 Hexo 原有的静态文件, 生成新的静态文件以供读取,并且会自动传到相应的Github上的repo备份。
好了到这里就应该可以了。然后可以 debug 测试一下,并且可以关机给服务器搞个 snapshot 快照进行备份,以防以后出错 (重启后记得手动运行一下 Dropbox)。
使用hexo-hey插件为博客添加后台编辑

hexo-hey项目地址:https://github.com/nihgwu/hexo-hey
安装:
npm install hexo-hey --save
配置_config.yml
文件
添加如下几行
# Admin
admin:
name: hexo
password: hey
secret: hey hexo
expire: 60*1
# cors: http://localhost:3000
运行
hexo serve
这个时候你的博客网站的管理后台就可以远程的在你 VPS 的 IP地址的4000端口访问到。比如 <vps的ip>:4000/admin
。
配置Github/Coding多账号管理SSH Key
- 单个网站通过Https链接,避免22端口关闭错误。
测试https端口连通性
ssh -T -p 443 git@ssh.github.com
添加ssh配置文件
vim ~/.ssh/config
写入内容
Host github.com
Hostname ssh.github.com
Port 443
- 多网站多账号SSH Key配置
- 生成Github和Coidng的SSH Key
ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C “wmwwmv@gmail.com”
ssh-keygen -t rsa -f ~/.ssh/id_rsa_coding -C "wmwwmv@163.com”
检查key是否生成
ls ~/.ssh
- 添加private key
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_coding
如果执行ssh-add时提示"Could not open a connection to your authentication agent",可以先执行命令:
ssh-agent bash
然后再运行ssh-add命令。
可以通过 ssh-add -l 来确私钥列表
ssh-add -l
可以通过 ssh-add -D 来清空私钥列表
ssh-add -D
- 修改配置文件
#Github
Host github.com
HostName ssh.github.com
Port 443
User wmwwmv@gmail.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
#coding
Host git.coding.net
Hostname git-ssh.coding.net
User wmwwmv@163.com
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_coding
- 上传public key 到 GitHub/Coidng
GitHub设置过程如下:
登录github,点击右上方的图标,点击“Settings”

选择“SSH and GPG keys”,点击“New SSH key”,在出现的界面中填写SSH key的名称,填一个你自己喜欢的名称即可,然后将上面拷贝的 ~/.ssh/id_isa_github.pub 文件内容粘帖到 key 一栏,在点击“Add SSH key”按钮就可以了。

添加过程github会提示你输入一次你的github密码 ,确认后即添加完毕。
- 测试
# 测试github
$ ssh -T git@github.com
# 测试Coding
$ ssh -T git@git.coding.net
# 测试gitlab
$ ssh -T git@gitlab.example.com
_config.yml
配置
deploy:
type: git
repo:
github: git@github.com:wmwwmv/wmwwmv.github.io.git
coding: git@git.coding.net:shichao/xiaozhu.git
branch: master
遇到的问题
hexo deploy时重复输入用户名密码的问题
每次部署执行hexo deploy都需要输入用户名

问题原因及解决方案:
最主要的原因可能是你没有采用git@github.com

而是用https//github.com

修改后重新提交部署:

注意
-
为了避免上传一次就重新将pulic .git文件夹就同步一次,所以在本地Dropbox上要选择性同步。
-
想利用分布式解析国内解析到coding 国外解析到github,结果国内访问github比coding还快
这里可以解析国内到Coding的repo解析国外到github的repo
网友评论