NginxでTWiki

NginxでTWikiぱわふる追記:@peterthoenyさんに勧められてTWikiOnNginxを書きました。↓の個別にアクセス制限するやり方よりTWikiOnNginxに書いたアクセス制限するやり方のほうが綺麗に書けたのでnginx.confに書く内容はTWikiOnNginxを参照してください。
ついでに↓ではPerlスクリプトの拡張子を.plか.cgiとしたけど、拡張子はデフォルトの「なし」のままのほうが簡潔にnginx.confを書けました。(^_^;)

日本語固有の設定は↓にしか書いてないので↓を参照してみてください。
(追記 end)

TWiki・・・Perl製のウィキ。Wikipediaによると、あの「CERN研究所」や「Java.net」でも使われているらしい。

備忘録用の個人用または少人数向けのウィキが欲しいと思って探していました。
「PukiWiki」は使ったことあるけど、デザインをいじるのがしんどい。
(デフォルトのデザインは個人的に許せないのです)

デザインがマシでまともなHTMLでWebからアクセスできて柔軟にアクセス制限できてある程度セキュアなWikiが欲しい。
この要望に応えてくれそうな候補として「MediaWiki」と「Twiki」が浮かびました。

しかし、「MediaWiki」の説明ページには「ハイトラフィックなウェブサイトを提供するために設計されました。この利用方法のために最適化されてきており、ディスクスペースもしくはメモリが帯域よりも大きく制限される場合には最適ではないことがあります。」と書かれている。

ハイトラフィックにはならない予定なのに加えて、Perlのほうが自分でトラブルシューティングできるので「TWiki」をチョイスしました。

インストールは公式サイト(TWiki インストールガイド)を見るのがセキュアかつ最速だと思います。

日本語はほぼ正常に扱えていますが、日本語のページに画像を貼り付けるとリンクのアドレスが狂ってしまいます。
でも、Wikiで日本語がエンコードされている部分を日本語にして保存すればこの問題は解消されました。

インストールしてイイ感じに使えるようになるまでの流れは以下の通り↓
(拡張子なしにはPerlを実行できないと想定して書いています)

  1. メールアドレスと名前をフォームに入力してTWikiをダウンロード
  2. サーバにアップロード
  3. とりあえず自分以外のTWikiへのアクセスを遮断
  4. bin/configureをconfigure.(pllcgi)に変えて実行権限を与えてブラウザから実行
  5. bin/ディレクトリの他のPerlスクリプトも拡張子をplかcgiに変更
  6. perlbrewのperlを使いたい場合は適当にシェパング行(1行目)を書き換える
  7. 公式のインストールガイドを見ながら設定を進めていく
  8. 足りないCPANモジュールがあればインストール
  9. {UseLocale} -> チェックを入れる
  10. {Site}{Locale} -> ja_JP.UTF-8 を入力
  11. {Site}{CharSet} -> UTF-8 を入力
  12. ページ移動ができないのでNginxでPATH_INFOを受け取るようにする
  13. URLを短縮する場合はlib/LocalSite.cfg を編集
  14. NginxのRewriteモジュールでURL復元(?)
  15. binとpubディレクトリ以外のアクセスを全て拒否
  16. プラグインのインストール
  17. ロゴ変更
  18. コピーライト部分変更または削除

ここまでやれば↓のような感じになります

「URLを短縮する場合はlib/LocalSite.cfg を編集」はShorterUrlCookbookを参考に。
自分は以下のみ変更しました。

Nginx+FastCGIでPATH_INFOを受け取りたい場合はfastcgi_split_path_infoを使うと受け取れます。
Rewriteも含めた具体的な設定例は↓の通り(TWiki-5.1.1)

プラグインのインストールはbin/configureにアクセスしてExtensionsのタブを開いたところにある「Find More Extension」のリンクから自動でできます。もう一度bin/configureに戻ってPluginのタブを開いてプラグインを有効化しないとダメなものもあるので注意。

自分は「BreadCrumbsPlugin」のみ追加インストールしました。

ロゴ変更はMain/TWikiPreferencesを編集して「Set WEBLOGOIMG = 画像のアドレス」とすればOK。
コピーライト部分の変更または削除も同様にMain/TWikiPreferencesを編集して「Set WEBCOPYRIGHT = hoge」とすればOK。

新しい「Main」「TWiki」「SandBox」以外のWebを追加したい場合は「TWiki/ManagingWebs」にアクセスして「Adding a New Web」から追加すればOK。ただしあんまりWebを追加しまくらずに最小限のWebでやるのが良いっぽいことが書かれていました。

このWebの追加のときにAccess deniedになる場合はアカウントの権限が足りてないので、adminでログインし直して追加するかadminから権限のないユーザに権限を与えると上手くいきます。(この辺はなれないとちょっと分かりづらい)


コメントを残す

メールアドレスが公開されることはありません。