Gude

  厌倦了Wordpress越来越庞杂却无用的功能,想让网站回归单纯,Octopress本是个不错的选择,但在OS X下总有这样那样的问题,自己对Ruby也不了解,于是就在Python下折腾出了这个Gude。

  如下图,在Gude下网站日常管理的几个简单命令。

Gude

  • 基于Python2.7
  • 使用GIT进行管理和发布
  • 使用Markdown或HTML撰写文章
  • 支持分类、标签
  • 支持文章模板、站点皮肤
  • 评论系统Disgus,统计系统Google Analytucs
  • 支持发布到Github或任意的FTP服务器1
  • 简单的插件支持

Project on GitHub

安装

1. 准备

  必须安装:

  • Python 2.7.3 Gude使用的开发语言
  • Git 分布式版本管理 Gude用于站点的备份发布等

  另外最好对以下的语言有所了解:

  • Markdown 轻量级的标记语言,易读易写,Gude中用于书写文章内容
  • YAML 一种对人阅读友好的标记语言,可存储多种数据格式,Gude中用于配置文件
  • mako Gude使用的模板系统,如果希望自定义网站,就必须掌握它
2. 下载
  • 从GitHub clone到本地 推荐
  • 直接下载
3. 安装

  git clone git://github.com/JinnLynn/gude.git && cd gude && python setup.py install

  系统必须有pip,安装gude时也将安装一些依赖的第三方库。

使用

1. 概述

  基本的命令格式:gude [-h] [-v] {serve,add,publish,init,build,backup} ...

  各子命令作用:

子命令说明
init在当前工作目录下初始化一个新的网站
add添加新的文章
build生成网站内容
serve在本地启动一个简单的网页服务器
publish发布网站到服务器,服务器的相关信息需在配置文件中配置
backup备份
2. 初始化

  命令:gude init [-h] [-f]

  在任意目录下执行gude init可初始化一个新的站点,如果该目录下已存在文件则需要参数-f--force强制清空目录并初始化。

  若初始化成功将会产生如下的目录结构:

目录或文件说明
content存放原始文章文件
deploy存放生成的文件
static一些需要在生成站点时拷贝到deploy目录的文件
theme皮肤
site.yaml网站配置文件 该文件会被GIT跟踪
privacy.yaml私用配置文件 该文件不会被GIT跟踪 且优先级高于site.yaml
README.mdgithub说明文件
...Git版本管理文件 .git .gitignore
3. 配置

  配置文件有两个:site.yamlprivacy.yaml,其中privacy.yaml的优先级高于site.yaml,且进行网站版本管理时不会被跟踪,主要用于存储一些私有的信息,如FTP服务器地址密码等。

  比较主要的键值参考如下:

键名默认值说明
domain域名
subdirectory/子目录
title网站名称
author作者
category[Other]文章分类
num_per_page5每页显示的文章数
num_in_feed10FEED显示的文章数
num_in_archive50存档页显示的文章数
themedefault皮肤风格
default_layoutpost默认文章模板
header_menu页面头部菜单
comment_serviceduoshuo评论系统类型 可选值: duoshuo disgus
comment_service评论系统disqus或多说的shortname
google_analytics_track_idGoogle Analytucs跟踪ID
feed_url使用第三方FEED服务时的地址
content_filter[Shortcode, CenterElement]文章内容处理插件 见这里
designated指定生成的文件地址
file_copy拷贝文件到生成目录
local_domainhttp://localhost:8910用于调试的本地模式地址
local_subdirectory/用于调试的本地模式子目录
publish_type在privacy.yaml 发布模式 可选值 git、gitftp、rsync,其中git只能发布到GitHub
ftp_server在privacy.yaml FTP服务器
ftp_subdirectory在privacy.yaml FTP服务器子目录
ftp_usr在privacy.yaml FTP用户名
ftp_pwd在privacy.yaml FTP密码
github_project_pageno在privacy.yaml 使用git发布时是否是github的项目页面
git_remote在privacy.yaml GIT远程路径
rsync_serverrsync服务器地址
rsync_subdirectoryrsync同步目录
rsync_usrrsync用户名
rsync_sshkeyrsync用户密钥
4. 写文章
文章命名规则
  • 文章必须存放在content目录下,但也可以在content下另建文件夹存储
    • 直接在content目录下的,发布的文件将在article目录下,以类似http://YOUR-DOMAIN.COM/article/...的地址访问
    • content下其它文件夹的,发布文件将在其对应的目录下,以类似http://YOUR-DOMAIN.COM/DIR—NAME/...的地址访问
    • 自建文件夹不限嵌套层数,但顶层(即在content下)不允许如下命名:tag, tags, category, archive, article, assets, page
  • 文章必须以日期为前缀,形如2013-01-01-FILENAME.md,但生成的发布文件不会包括日期信息
  • 文章文件名后缀支持md markdown html,Gude将通过后缀名决定处理方式
  • 文章字符编码UTF-8
  • 默认情况下,Gude按照一定的规则生成文件,但你也可以指定生成文件路径,见这里
文章配置

  文章配置使用YAML书写,位于文章开始位置并被<!-- -->所包围,可配置的信息如下:

键名默认值说明
title文章标题
date文章文件生成时间形如2013-01-02 14:23:21
catrgory~文章分类,必须使用站点配置category中存在的分类名,否则将被忽略
tag~文章标签
author站点配置author的值作者
modify文章文件的最后修改时间修改时间
layout站点配置default_layout的值文章模板布局
unlisted[]不罗列的页面 序列类型数据 支持home sitemap archives feed
statuspublic文章状态 public sticky draft
custom~自定义信息,映射类型的数据
命令行生成新文章

  命令:gude add [-h] [--html] [--layout LAYOUT] [--status STATUS] [-f FILENAME] [-t TITLE]

参数说明
-h帮助
-t文章标题 不指定默认 Untitled
-f文件名称,不指定则是文章标题,支持设置目录, 规则见这里
--html默认生成.md文件,指定该参数则生成.html文件
--layout不指定使用配置文件键值default_layout所设定
--status文章状态 可选public、sticky、draft 默认public
手动生成新文章

  在content下自行手动创建符合命名规则的文本文件。

5. 生成网站

  命令:gude build [-h] [-i] [-l] [-p]

参数说明
-h帮助
-l生成本地文件,即站点地址使用 local_domain
-i输出详细信息
-p生成后启动服务器预览

  注意,在生成网站前,Gude会把deploy目录下的所有文件删除,如果你有某些文件需要存在于最终发布的网址中,请参考这里操作。

6. 本地服务器查看

  命令:gude serve [-h] [-p PORT]

参数说明
-h帮助
-p端口 默认 8910

  启动一个本地服务器访问网站,建议使用gude build -lp生成一个本地版本用于查看效果。

7. 发布

  命令:gude publish [-h] [-b] [-f] [-c]

参数说明
-h帮助
-b发布前重新生成网站
-c清理
-f强制,清空服务器上旧内容,如果发布失败可使用该参数,另:第一次发布时必须加该参数

  发布网站到预置的服务器。

8. 备份

  命令:gude backup [-h] [-f] [--remote] [-c]

参数说明
-h帮助
-c清理
-f强制
--remote推送到远程,目前仅支持GitHub,参考这里

进阶

1. 皮肤

  Gude支持皮肤,使用的模板系统是Mako,皮肤名即其所在的文件夹名,Gude将自动搜索站点所在目录和Gude目录下的theme文件夹。

  若你想设计自己的皮肤请参考默认皮肤default

2. 文章内容处理插件

  Gude支持一些简单的对文章内容处理的插件,文件位于plugin。默认已有Shortcode、CenterElement,具体作用参考源代码。   

3. 指定生成的发布文件路径

  正常情况下,Gudu按照一定的规则生成发布文件,但如果需要也可以自定义生成的发布文件路径,在site.yaml中配置参数designated即可。比如

designated:
    - src:      2000-01-01-projects.md
      dst:      projects/index.html
    - src:      2000-01-01-about.html
      dst:      about/index.html

  其中src为文章路径(相对content目录),dst为生成的发布文件(相对deploy目录)。

4. 生成时拷贝文件到发布目录

  在每次执行gude build生成站点时,Gude将删除deploy目录下的所有文件,因此如果你的网站需要一些额外的文件(如自己上传的文件)则在site.yaml中配置参数file_copy,如

file_copy:
    - src:      static/htaccess
      dst:      .htaccess
    - src:      static/favicon.ico
      dst:      assets/images/favicon.ico

  其中src为源文件路径(相对static目录),dst为生成的发布文件(相对deploy目录)。

5. GIT

  Gude的站点目录下有两个git版本库,一个位于站点根目录下,另一个在deploy目录下,前者用于管理站点源文件,后者用于管理发布文件,当你使用Github作为你的网站空间并使用gude backup --remote将站点备份到github上时有需要注意:

  • 用github的个人page时,站点提交到source分支,deploy提交到master分支
  • 用github的项目page时,站点提交到master分支,deploy提交到gh-page分支
6. 从Wordpress迁移

  tools目录下有wordpress-export.php可导出Wordpress日志到Gude,将其拷贝到Wordpress目录后浏览器中访问该文件即可,一些设置见源文件。

其它

  • Gude中使用的第三方库: commandomakoPyYAMLfeedgeneratorpython-markdown2
  • 感谢最好的版本管理系统Git和代码托管服务GitHub
  • 建议写一篇新文章的操作流程
    1. 添加新文章并撰写 gude add
    2. 生成本地版本并预览 gude build -lp
    3. 生成最终版本并发布 gude publish -b

  1. FTP发布需GIT-FTP支持