现在时不时会在Ubuntu系统中编辑文档,将这个系统中的.md编辑完在发回WIN7系统deploy到hexo是一个很烦的过程,尤其是这事儿以后会经常发生的时候。
所以必须寻求一个解决方案,可以在Ubuntu中同样设定一个hexo的文件夹,并通过github同步数据源。
Hexo文件夹并不需要完全同步,涉及到的修改主要涉及Hexo文件夹下的_config.yml, source文件夹和themes文件夹。_config.yml和themes一旦设定,并不需要经常更新,可以在新设备中的Hexo文件夹设定好了以后用老设备中的文件覆盖上去。而source是更新最频繁的,需要将这个文件夹跟github同步。
同步WIN7中的Hexo/source文件夹至Github
因为在搭建hexo博客的时候已经设定过一次ssh key,此处不用另外创建。
登陆Github的个人账户,然后新建一个repository,名字叫source
。创建完成后你会看到以下页面:
我的Hexo文件夹放在E盘中,在git bash中输入:
倒数第二步的git pull origin master
,第一次做的时候,如果github的source仓库中中没有任何文件,会返回错误值,可以忽略。
Github为WINDOWS和OS X系统都提供了Github Desktop,这是一个十分方便的github桌面管理工具,能自动检测github repo和local repo之间的版本差别并提示更新。上面那些步骤也可以通过desktop这样实现:
- 备份E:\Hexo\source文件夹,删除原始文件夹
- 点击Github Desktop左上角的”+”号并点选”Clone”,从刷新后的目录中选择source这个repo
- 继续上一步,选择local path: E:\Hexo。这样你可以在E:\Hexo中看到一个新生成的source文件夹
- 将备份中的所有.md文件转移到source文件夹中
- 点击Github Desktop右上角齿轮图标下面的”Sync”。这样本地source文件夹中的内容就全部上传到Github了。
Ubuntu 14.04中Hexo文件夹设定
安装node.js
node.js和git是搭建hexo博客的两个基础。
在Ubuntu中可以用nvm安装node.js。
我尝试了各种nvm官方提供的自动安装方法,然而都失败了(RP啊。。。),于是只好”manually install it”. 安装需要用到管理员权限。
同样也是官方文档建议,将以上命令的最后一行添加到~/.bashrc, ~/.profile或~/.zshrc三个文件中的任意一个中。
安装node.js,可以先查看一下可以安装的版本。
最近的版本是v4.1.1
检查是否安装成功,可以看现有node的版本。
编辑于10/5/2015
重启电脑以后输入hexo generate
发现hexo命令无法调用,多方查询,说有可能是nodejs的问题
发现node的版本是N/A
,说明之前安装的4.1.1并不成功(或许本身这个版本就不能用nvm来安装。。。)
那么还是回到稳妥的node版本
再次查看
返回
这次才是真的成功了。。。
编辑于11/6/2015
圈子里大牛们讨论上面的问题时,说到了nodejs的发展历史。
搜索条目里去年处理这个问题的解决方案之一就是用nvm安装0.10.xx版本的nodejs
今年官网上就已经推出5.0的版本了
版本演进之快,令人乍舌,不过hexo命令之所以无法使用,极有可能就是因为nodejs在发展过程中将底层调用命令(不是IT,不知道这样表述是否精确)从node变成了nodejs,而hexo仍然使用node去执行命令,并没有考虑nodejs版本上的巨大变化。
上面的解决方案是目前比较靠谱的方法。
期望有一天这个问题可以解决,让hexo可以使用更高级的nodejs。
安装git
Ubuntu有可能已经安装过git了,如果没有,用下面命令可以安装:
安装hexo
在Terminal中输入:
创建一个Hexo文件夹(这个在之前的博客中也有提到过搭建Hexo博客)
Hexo文件夹中所有文件生成以后,将WIN7系统中的themes,config.yml和source文件替换进去。
设置git
同样要在Ubuntu中新建SSH key并复制到Github中,让Github认证Ubuntu系统的这个电脑。此过程也可以参见原来的文章搭建Hexo博客。
用git命令行复制source到本地。大同小异。
这样基本设置就完成了。
我的麻烦点儿,除了这几个基本文件和文件夹的同步以外,还有一些小文件需要从WIN7中拷过来,no zuo no die。
注意事项
每次更新要注意先git pull origin master
。这样才能保证本地是最新的状态。
同样,每次deploy以后,也要记得把source push到Github上,这样才能保证远端Github的repo上是最新的状态。