phdocとherokuでシンプルなwiki作成
phdocを触った
wikiっぽいものを作ってみようかと思ったんだけどpukiwikiみたいなちゃんとしたwikiは面倒だった…。機能は多くていいかもしれないけど大して複雑なことする気もないし、管理が面倒くさいなと。
でもテキストファイルだけは寂しいし、htmlごりごり書くのも面倒。マークダウンで作れないかなと思ったら**phdoc**なるものがあったので使ってみた。
pythonで書かれたマークダウン→html&css&js変換ツールみたいなイメージ?
インストール
$ pip install phdoc
wiki初期化
phdoc init wiki名 で初期化される。
$ phdoc init ponpoko-wiki
phdoc.init: INFO: Wiki initialization complete
phdoc.init: INFO: Your new wiki is at: /Users/licorice/Desktop/ponpoko-wiki
ディレクトリ構成。wikiディレクトリ以下にマークダウンのファイルを置く感じか。デフォルトで幾つかのファイルが生成されている。
$ cd ponpoko-wiki
$ tree
.
├── phdoc.yaml
├── static
└── wiki
├── index.md
├── notes
│ └── pnp.md
└── publications.md
wikiビルド
デフォルトの状態でビルドしてみる。ビルドするとマークダウンをhtmlとcss,jsに変換して吐き出してくれる。
wwwディレクトリが新たに作成されそこに吐き出されている。
$ phdoc build
$ tree
.
├── phdoc.yaml
├── static
├── wiki
│ ├── index.md
│ ├── notes
│ │ └── pnp.md
│ └── publications.md
└── www
├── _list.html
├── index.html
├── media
│ ├── _list.html
│ ├── css
│ │ ├── _list.html
│ │ ├── basic.css
│ │ ├── elements.css
│ │ ├── index.html
│ │ └── pygments.css
│ ├── index.html
│ └── js
│ ├── _list.html
│ ├── addcss.js
│ ├── fold.js
│ ├── hyphenator.js
│ └── index.html
├── notes
│ ├── _list.html
│ ├── index.html
│ └── pnp.html
└── publications.html
wiki確認
その場でサーバを立ち上げて作成したhtmlを閲覧できる。http://127.0.0.1:8008
へアクセスすると怪しげな博士の紹介ページ的なデフォルトのwikiページが見れる。
$ phdoc serve
phdoc.serve: INFO: Serving on http://127.0.0.1:8008
phdoc.wsgi: INFO: GET / - 200
phdoc.wsgi: INFO: GET /media/css/basic.css - 200
phdoc.wsgi: INFO: GET /media/css/elements.css - 200
phdoc.wsgi: INFO: GET /media/js/hyphenator.js - 200
phdoc.wsgi: INFO: GET /media/js/addcss.js - 200
phdoc.wsgi: INFO: GET /media/css/pygments.css - 200
phdoc.wsgi: INFO: GET /media/js/fold.js - 200
...
wiki設定
phdoc.yaml内でwikiの設定をする
$ cat phdoc.yaml
wiki-name: PHDoc wiki
html-dir: www
remote: example.com:public_html
nav:
pages:
- index
- publications
- notes
labels:
index: About
publications: Publications
notes: Notes
markdown:
extensions: [toc, codehilite, def_list]
safe-mode: false
output-format: html
wiki-nameでtitleの設定ができる。html-dirはpublic等に設定するとビルド時その名前のディレクトリに吐かれるようになる。
remoteはまだ使ったことがないがrsyncでリモートサーバへ設置してくれるものらしい。便利!
nav内にhtmlファイル一個相当のページ名を書いていく。新しくページを作成したいときはwikiディレクトリ内にマークダウンファイルを追加するのと、ここにそのファイルの名前を書くことになる。
labelsはwikiのナビゲーションタブで実際に表示されるページの名前になる。
markdown内ではエクステンションの設定等ができる。マークダウンファイルの先頭に[TOC]と入れると目次を作ってくれる。[toc]では認識されないので注意!
safe-modeやoutput-formatはまだ使ったことがない。
heroku
herokuにwikiページを設置してみる。
準備
sinatraで動かしてみる。
Gemfile準備。
$cat Gemfile
source :gemcutter
gem 'sinatra'
bundle。Gemfile.lock生成。
$ bundle
$ cat Gemfile.lock
GEM
remote: http://rubygems.org/
specs:
rack (1.5.2)
rack-protection (1.5.2)
rack
sinatra (1.4.4)
rack (~> 1.4)
rack-protection (~> 1.4)
tilt (~> 1.3, >= 1.3.4)
tilt (1.4.1)
PLATFORMS
ruby
DEPENDENCIES
sinatra
rack設定。
$ cat config.ru
require 'rubygems'
require 'sinatra'
get '/' do
open('www/index.html').read
end
run Sinatra::Application
デプロイ
heroku登録、herokuコマンドラインツール、gitを予め入れておく。
ローカルにコミット。
$ git init .
$ git add .
$ git commit -m "1st commit"
herokuアプリ(リポジトリ)作成。
$ heroku create ponpoko-wiki
Creating ponpoko-wiki... done, stack is cedar
http://ponpoko-wiki.herokuapp.com/ | git@heroku.com:ponpoko-wiki.git
herokuにプッシュ。
$ git push heroku master
これで公開されました。めでたしめでたs…
ん??なんかcssが読み込まれてない…。表示崩れてる…。
なぜかよくわかりませんが、wwwディレクトリではなくpublicディレクトリじゃないとうまくいかないようです。
修正
phdoc.yaml修正。
-html-dir: www
+html-dir: public
config.ru修正。
- open('www/index.html').read
+ open('public/index.html').read
ビルドしてコミット、プッシュ。
$ phdoc build
$ g add .
$ g commit -m "ディレクトリ名修正"
$ git push heroku master
$ heroku open
おおーうまく表示されたようです。 やったぜ。
完
phdocには他にもクールな機能があるとのことなので面白そうな機能あったら試してみます。
ノシ