这几天因为服务器快过期了,就想着把博客从 WordPress 迁移到 Hexo 上来.一是因为 1M 的小水管跑 WordPress 加载速度有点点慢,再就是因为就我个人来讲更习惯 Hexo 这种本地写作再 Push 的方式(主要是以后万一还要迁移的话导出方便,不想 WordPress 都不支持 Markdown, 还得自己手动装插件,而且插件还有不兼容的地方)
但是 Hexo 主体文件是部署在本地的,而我写作的环境有多个(一台装着 Ubuntu 的电脑, 还有一台笔记本). 所以就需要两边相互同步,这样才方便
这里我们需要用到 GitHub 或者是其他的代码托管服务.笔者这里选择了 GitHub 和 腾讯开发者平台 来托管我的代码.
GitHub 放静态网页其实不是最优选择,一是因为百度不爬取 GitHub pages, 二是因为 GitHub 在国外,虽然可以通过*修改Hosts提升访问速度, 但是修改了自己Hosts的毕竟是很少很少一部分. 所以笔者建议 GitHub 只用于代码托管(因为其他的代码托管服务说不定什么时候就崩了,部署在 GitHub 上总是不会错的)
先是去网上查了一下,结果发现大多数采用的方案都是在一个 git 仓库里开两个分支. 一个放静态网页, 一个放源码. 但是这样其实是很不安全的! 在 Hexo 中我们为了方便会加一些插件,而某些插件会用到第三方平台.比如笔者博客中的评论功能( Power by Valine ) 就用到了 LeanCloud 的服务. 将评论内容, 访问量等信息存储在容器里,而这个容器的 Token
是万万不能给别人的. 而网上的通用方案因为仓库公开, 所以任何人都能看到你在里面设置的 Token
, 这样是不行的, 下面笔者将给出自己的方案
前置
- 已成功安装 Hexo 和 npm
- 已成功安装 git 并添加进环境变量中
- 已成功将自己的公钥添加进 GitHub(可用
ssh -T git@github.com
测试)
多地部署
首先,我们要去 GitHub 创建两个 repository ,其中一个命名为 xxxx.github.io
并设为 Public, 如下图所示(没有帐号的请自行学习注册帐号并学习 GitHub 的使用)
这里需要注意的是,笔者已经创建过名为 bestsort.github.io
的 repo 了,所以再创建会报该 repo 已存在(记得勾选 Initialize this repository with a README
初始化)
这个仓库就是别人以后访问你网页时候所使用到的仓库了
我们还需要一个仓库存源码,再新建一个权限为 Private 的仓库
,以后我们要重新部署就从这个仓库里 Clone 下来.
这里我的私有仓库命名的是 my-blog
,所以我们在本地进入放置 Hexo 的地方,执行 git remote set-url origin https://github.com/bestsort/my-blog.git
这里记得将链接中的 bestsort 替换为你自己的 GitHub 用户名,将 my-blog 替换为你放博客的私有仓库名
然后我们打开 Hexo 的配置文件 ~/_config.yml
注意这里是全局配置文件,不是主题配置文件.将 deploy 配置如下:
配置里面的仓库名填刚才创建的 公共仓库 的名称
这里笔者由于为了提升国内访问速度,所以在 腾讯开发者平台 也创建了一个仓库,就是下面的第二个 type
1 | deploy: |
至此,多地部署已经设置完成.
每次更改或者创建新文章后,需执行以下命令:
1 | hexo g |
因为是多地部署,所以每次修改前最好是执行 git pull
命令拉取远程仓库
在新环境中部署
执行 git remote set-url origin https://github.com/bestsort/my-blog.git
老样子,替换用户名仓库名
然后再执行npm install
即可写作了