(ヽ'ω`) < 一般的なLinux環境でPukiwiki Adv 1.0.3を動かす
(ヽ'ω`) < 動かんのよ
Pukiwiki Advのインストール方法は、公式のWikiに掲載されている。
http://pukiwiki.logue.be/Documents/Install
の、だがこのページの指示通りにインストールしても
(ヽ'ω`) < 全く動かん
(ヽ'ω`) < 何が悪いのか
色々調べたところ、色々なにかおかしい。
他のインストール方法解説ページとかを見てても、かなり手順がバラバラで何が正しいのかよくわからない。環境とかバージョンが書いてないのも混乱に拍車をかける。
とりあえず、自分で調べながら、自分の環境で動くようにするまでの記録を。
(ヽ'ω`) < 環境
環境 | 値 |
---|---|
OS | CentOS6.4 x86_64 |
apache | httpd-2.2.24 prefork |
Pukiwiki adv | 1.0.3 |
インストール先ディレクトリ | /home/wiki |
URL | http://hoge.com/wiki/ |
特記事項 | SELinux off |
(ヽ'ω`) < まずは配置を
最初の手順は、Pukiwiki Advのダウンロード・展開・パーミッション設定。
Pukiwiki advのダウンロードと展開
まず、Pukiwiki adv 1.0.3をダウンロード。
パッケージ PukiWiki Advance - PukiWiki Advance - SourceForge.JP
ダウンロードしたファイルを適当なディレクトリに展開。検証環境ではwikiという名前のディレクトリを作成。
ディレクトリのパーミッションを設定
下記URLの情報を参考に、展開したディレクトリやファイルに対して適切なパーミッションを設定していく。
http://pukiwiki.logue.be/Documents/Install
はずなのだが、上記のとおりに設定してもうまく動作しない。何度やっても。
というわけで、色々調べて下記のスクリプトを作成。パーミッションの設定を一括して行なってくれる。
#!/bin/bash #パーミッションの設定手順、Pukiwiki Advのルートディレクトリより実行 chmod 777 wiki-data/attach chmod 777 wiki-data/backup chmod 777 wiki-data/cache chmod 777 wiki-data/counter chmod 777 wiki-data/diff chmod 777 wiki-data/trackback chmod 777 wiki-data/wiki chmod 755 wiki-common/lib chmod 755 wiki-common/plugin chmod 755 webroot/image chmod 755 webroot/skin # ディレクトリの+xが無いのがあるので一律セット find . -type d -exec chmod +x {} \; # *.php 644 find . -name *.php -exec chmod 644 {} \; # *.lng 644 find . -name *.lng -exec chmod 644 {} \; # cache/* 666 find wiki-data/cache/* -type f -exec chmod 666 {} \; # image/* 644 find webroot/image/* -type f -exec chmod 644 {} \; # lib/* 644 find wiki-common/lib/* -type f -exec chmod 644 {} \; # plugin/* 644 find wiki-common/plugin/* -type f -exec chmod 644 {} \; # skin/* 644 find webroot/skin/* -type f -exec chmod 644 {} \; # wiki/* 666 find wiki-data/wiki/* -type f -exec chmod 666 {} \; # インストールマニュアルに記載されていないがエラーが出るので対応 chmod 777 wiki-data/log -R
上記スクリプトを適当な名前(set_perm.sh)で保存し、Pukiwiki Advのルートディレクトリ内から実行する。
(ヽ'ω`) < お次にPukiwiki Adv本体の修正
配置が終わったので、Pukiwiki Adv本体のファイルに手を加えていく。
(ヽ'ω`) < .htaccessの修正
対象はwebroot/.htaccess
このファイルを以下のとおりに修正する。
POSTのLimitを変更する。
デフォルトでは.jp
, .bbtec.net
以外からのPOSTリクエストが拒否されている。
<Limit POST> order deny,allow deny from all allow from .jp allow from .bbtec.net </limit>
ここを任意の値に修正。とりあえず動作確認という事であれば、allow from all
で。
<Limit POST> order deny,allow deny from all allow from all </limit>
more_rewriteの修正
mod_rewriteの部分を以下のとおりに変更。 https://github.com/logue/pukiwiki_adv/issues/1
<IfModule mod_rewrite.c> RewriteBase /wiki/ # (1 RewriteEngine on # RewriteRule ^.*$ ? [F] # (2 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.* - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?$1 [L,R] # (3 </IfModule>
ここでの修正点は3つ
- RewriteBaseが与えられないとRewriteした時に
add per-dir prefix: index.php -> /home/wiki/webroot/index.php
と言った感じで
http://hoge.com/RecentChanges
が
http://hoge.com/index.php?RecentChanges
と書き換えられるのを期待しているのに
http://hoge.com/home/wiki/webroot/index.php?RecentChanges
となってしまう。
今回の例ではhttp://hoge.com/wiki/
と、サブディレクトリでの運用を総指定しているので/wiki/
と設定したが、ドメイン直下で運用するのであれば/
となる。 - この箇所をコメントアウト。これがあると問答無用で403が返るんじゃ…
- Rフラグを付けたのは、302でブラウザのURLを明示的に変更して動作を確認しやすいように
(ヽ'ω`) < サブディレクトリ運用故に
今回はhttp://<domain>/wiki/
とサブディレクトリでの運用を想定しているので、以下の修正を行う必要がある。
標準では/js
や/css
などのディレクトリは、サブディレクトリ構成を考慮しない(自動的に検出しない)。
webroot/index.php
内の
define('ROOT_URI', '/'); // for Windows
を
define('ROOT_URI', '/wiki/webroot/'); // for Windows
と変更してやることで、サブディレクトリ構成に対応させる。
(ヽ'ω`) < for Windowsに関してはあれだ…無視
(ヽ'ω`) < さぁ準備は整った、はず
これでインストールが完了。http://<domain>/wiki/
にアクセスしてみる。
正常な画面が表示されたら、画面の指示に従ってパスワードを生成してwiki-common/auth.ini.php
の$adminpass
の値を書き換える。
さらに、デバッグモードを解除するように表示されているので webroot/index.php
の17行目
// Debug mode. define('DEBUG', true);
(ヽ'ω`) < 細かいこと
# インストールマニュアルに記載されていないがエラーが出るので対応 chmod 777 wiki-data/log -R
としているが、これをしないと設定後にURLにアクセスすると、一見正常に動作をしているけど、画面上部に
Warning: touch(): in /home/homepage/test/wiki/wiki-common/lib/file.php on line 915 Warning: touch(): in /home/homepage/test/wiki/wiki-common/lib/file.php on line 915 Warning: touch(): in /home/homepage/test/wiki/wiki-common/lib/file.php on line 915
というエラーが出る。file.phpの該当箇所を確認すると、log
ディレクトリにtouch()
しようとしてたので、書き込み権限を与えた。
(ヽ'ω`) < 正直なところ
動くところまでは確認できたものの、これで本当にいいのか(主にセキュリティー的な部分)確証が持てないので、実運用は閉じた環境のみかな…
というか、メモから記事に起こして気がついたけど、2.0がstableになってるし。
(ヽ'ω`) < あんまり意味なしですかねー