美文网首页GIT
Dropbox + VPS + Incrond+Hexo搭建博客

Dropbox + VPS + Incrond+Hexo搭建博客

作者: 卮客 | 来源:发表于2018-08-07 13:39 被阅读6次
    image

    安装前准备

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

    2. 为防止机器没有安装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
    
    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
    • 下载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话说不关应该也没事

    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 这个脚本

    • 首先我们可以用以下指令新建空文本 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插件为博客添加后台编辑

    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配置
    • 生成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”

    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

    注意

    • 为了避免上传一次就重新将pulic .git文件夹就同步一次,所以在本地Dropbox上要选择性同步。

    • 想利用分布式解析国内解析到coding 国外解析到github,结果国内访问github比coding还快

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

    参考

    centos 使用 Dropbox 同步

    CentOS入门 >centos7关闭防火墙

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

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

    相关文章

      网友评论

        本文标题:Dropbox + VPS + Incrond+Hexo搭建博客

        本文链接:https://www.haomeiwen.com/subject/fanovftx.html