October 23rd, 2013
Github建站系列教程

缘起

在之前的文章一步步在GitHub上创建博客主页(7)--兼容Windows Writer的服务提供器中,为了使编写博客和发布博客更加方便,我实现了一个windows writer的服务提供器,基于.NET和XML-RPC.NET。在实际使用过程中其实遇到不少问题,比如文章的二次编辑修改将无法支持,多个windows writer客户端无法同步编辑,提供器部署复杂等。思考下来觉得还是得有数据库支持,而且要尽可能的方便部署和同步数据。于是决定用PHP重新实现一个,PHP有以下特点:

  • 轻巧,部署方便
  • 能够轻便的支持基于文本的数据库,可以实现多客户端“分布式编辑”

系统运作方式

一台电脑维护博客

假设用户现在只有一台PC1用来写blog,系统运行机制如下:

  1. 在PC1上克隆好了github page的项目
  2. 用户在PC1上部署一个PHP站点,并配置指向上面的github page的项目目录
  3. 在PC1上使用windows writer配置这个站点为日志帐户
  4. 在PC1上使用windows writer编写文章
  5. 在PC1上将文章发布到PHP站点
  6. 打开PHP站点的页面,修改分类、标签等必要信息,点击发布,PHP站点将把文章创建在github page的项目目录的对应文件夹中(包括图片)
  7. (可选)用jekyll测试页面,返回4,直到满意
  8. 在PC1上使用git将github page的项目push到github

图中黄色的2、3步骤是一次性的配置工作,以后不需要重复进行。另外可以看到这里的PHP站点起到了“代理”的作用,因为github不能支持windows writer嘛,所以只能依靠代理了;而且这个代理是在你PC本机的,链接你的Writer和本地的仓库。

多台电脑维护博客

如果你在家中和公司各有一台PC,可能希望在两台PC上都能编写博客,甚至发布博客,而这个代理是本机的,如何能实现在博客正式发布前”共享“呢?答案是文本数据库。来看多客户端情况下的工作机制(左边是之前的PC1):

  1. 这个PHP站点包含一个基于文本的数据库,用来存放每一篇发布到PHP站点的文章。并将这个PHP站点本身作为一个仓库推送到github
  2. 在另一台PC2上克隆或拉取仓库代码(包括文本数据库)
  3. 3~5步跟上面的1~3相同,克隆或拉取github page所在仓库,配置PHP站点,配置writer
  4. 利用writer的”打开远程文章“的功能,从PHP站点上得到文章标题、内容等
  5. 继续编辑文章
  6. 将文章发布到PHP站点
  7. 打开PHP站点的页面,修改分类、标签等必要信息,点击发布,PHP站点将把文章创建在github page的项目目录的对应文件夹中(包括图片)
  8. (可选)用jekyll测试页面,返回7,直到满意
  9. 在PC2上使用git将github page的项目push到github

总结

通过上面的步骤可以继续编辑文章,达到共享的目的。起作用的关键其实是,PHP站点利用文本数据库和站点本身作为仓库这两点,保存了在PC1上的文章内容,可供PC2克隆或拉取。同理,也可以将PC2的PHP站点(及其数据文件)推送到github上,供PC1继续编辑发布。

本文介绍了系统的工作机制。虽说有了这套东西,写博客会方便不少,但是操作还是比较琐碎的,因此需要对工作机制有比较清晰的了解,这对于用户来说是十分重要的。下一篇将指导用户具体操作过程。


1块2块也是钱,小额赞助