GIT

Dropbox + VPS + Incrond+Hexo搭建博客

2018-08-07  本文已影响6人  卮客
image

安装前准备

  1. 首先登陆vps需要执行如下命令更新各种依赖

  2. 为防止机器没有安装epel,先安装epel(必须安装)

导入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
  1. 安装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一下

image image

注意:进入连接后,一定要等刷新完毕后再点,并且不能结束终端,等到关联成功的消息。

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

  1. 在刚才上面的结束之后 ls一下看看
[root@vultr ~]# ls
Dropbox dropbox.tar.gz----这行是结果 别执行
  1. 切进去Dropbox目录
cd Dropbox
  1. 接下来创建博客的目录
mkdir hexo
cd hexo
  1. 开始正式安装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目录,并且目录结构如下

image image

安装并配置Nginx

注意:如果有单独数据盘,建议您先挂载数据盘,建议将网站内容、数据库放在数据盘中。如何挂载数据盘,请参考(支持阿里云、腾讯云):《如何利用脚本自动化挂载数据盘?》

  1. 安装步骤参考:安装说明
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这样执行
  1. 安装好之后添加虚拟主机
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

内容同步发布

  1. 安装和配置 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 这个脚本

#!/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插件为博客添加后台编辑

image

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

  1. 单个网站通过Https链接,避免22端口关闭错误。

测试https端口连通性

ssh -T -p 443 git@ssh.github.com

添加ssh配置文件

vim ~/.ssh/config

写入内容

Host github.com

Hostname ssh.github.com

Port 443
  1. 多网站多账号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
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

GitHub设置过程如下:

登录github,点击右上方的图标,点击“Settings”

image

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

image

添加过程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都需要输入用户名

image

问题原因及解决方案:

最主要的原因可能是你没有采用git@github.com

image

而是用https//github.com

image

修改后重新提交部署:

image

注意

这里可以解析国内到Coding的repo解析国外到github的repo

参考

centos 使用 Dropbox 同步

CentOS入门 >centos7关闭防火墙

hexo deploy时重复输入用户名密码的问题

CentOS7上GitHub/GitLab多帐号管理SSH Key

上一篇下一篇

猜你喜欢

热点阅读