0%

使用Typora+Hexo+Google Drive打造自己的云笔记

流程说明:

  1. 在本地(我用的windows)写md笔记,写作软件强安利Typora
  2. 备份Hexo的source到Google Drive
  3. 推送Hexo的public到github,使用github page建站,注意项目可能会被别人一键fork走,虽然只是一些html文件,但也是可以一键建站的,这时候最好有个私有的项目
  4. 不同于3,推送所有的Hexo文件到github(最好是私有项目),travis-ci自动生成静态文件并rsync到VPS,使用VPS建站

其实完成第三步就已经可以建站了。

如果你有VPS,有github私有项目,那可以折腾下第四步,VPS可折腾性更高,但注意travis-ci只支持github

第四步中的私有项目是为了保证笔记文件的安全性,否则你的所有md文件可都是暴露在众目睽睽之下了,因此第三步也建议使用codinggitee等私有项目

初始化项目

cd D:\htdocs\liu.app
npm install hexo --save
hexo init

复制Next主题文件到themes下,然后上传到github

git init
git remote add origin git@github.com:yezige/liu.app.git
git pull origin master
git add .
git commit -m "first"
git push -u origin master

在vps上git clone项目

git clone git@github.com:yezige/liu.app.git

云同步到Google Drive

使用Google备份与同步备份source下的文件到Google Drive云存储,并使用Junction工具映射目录

自动同步的目录D:\cloudSync\blog

笔记的存放目录D:\htdocs\liu.app\source

映射云同步目录和Hexo的source目录,记得先删除D:\htdocs\liu.app\source目录

junction.exe "D:\htdocs\liu.app\source" "D:\cloudSync\blog"

映射后的效果是这个样子的

配置travis-ci

使用travis-ci自动部署到vpstravis-ci的原理是发现github push时,拿到github的代码后执行指定的命令(hexo g),然后rsync到vps

在项目根目录下新建.travis.yml文件

language: node_js
node_js: stable
branches:
only:
- master
before_install:
- git config --global user.name "sss"
- git config --global user.email "sss@foxmail.com"
install:
- npm install hexo --save
addons:
ssh_known_hosts: sss.com:22
script:
- hexo generate && rsync -az -vv --delete -e 'ssh -p 22' public/ www@sss.com:/data/www/liu.app/public

安装travis

yum install -y ruby
yum install -y rubygems
gem update --system
gem install travis

但是,centos使用yum默认安装的ruby是1.8.7版本,而travis最低需要1.9.0版本的ruby,所以需要手动编译安装个最新版本。

#如果使用yum安装过了,需要卸载掉
sudo yum remove ruby ruby-devel
wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz
tar xvfvz ruby-2.1.2.tar.gz
cd ruby-2.1.2
./configure
make
sudo make install

#发现sudo ruby --version还是1.8.7版本
#替换原来的老文件
cp /usr/local/bin/ruby /usr/bin/ruby

在项目目录下执行登录命令和记录ssh时的私钥命令

travis login
travis encrypt-file /path/to/private_key --add

因为hexo部署的时候需要ssh到服务器,所以需要加密保存私钥,travis会保存成private_key.enc文件,然后rsync时自动解密

执行上述命令后,会发现,目录下生成了private_key.enc.travis.yml中增加了加密和解密ssh私钥的脚本,注意可能需要修改下-out

before_install:
- openssl aes-256-cbc -K $encrypted_62e9ddb2e48f_key -iv $encrypted_62e9ddb2e48f_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d

注意在.travis.yml中增加know_host,否则rsync时会一直卡在等待同意加入know_host的界面

addons:
ssh_known_hosts: sss.com:22

.travis.yml中增加hexo g和rsync命令,注意修改ssh的地址和端口号为自己的

script:
- hexo generate && rsync -az -vv --delete -e 'ssh -p 22' public/ www@sss.com:/data/www/liu.app/public

最后附上我的配置文件

language: node_js
node_js: stable
branches:
only:
- master
before_install:
- openssl aes-256-cbc -K $encrypted_eb9f8sss7c68_key -iv $encrypted_eb9f8sssc68_iv
-in kikiku.enc -out ~/.ssh/id_rsa -d
- git config --global user.name "sss"
- git config --global user.email "sss@foxmail.com"
install:
- npm install hexo --save
addons:
ssh_known_hosts: sss.com:22
script:
- hexo generate && rsync -az -vv --delete -e 'ssh -p 22' public/ www@sss.com:/data/www/liu.app/public

然后你就全身心的写文章吧,git push的时候自动就会部署到VPS了,省心省心~

请我喝杯咖啡吧 Coffee time !