MindTouch DekiWikiをセットアップした

今までその手軽さからPukiWikiを使っていましたが、PukiWikiは残念ながら「履歴管理」「ユーザー登録(誰が編集したか)」「ページへのタグ付け」ができません。
そこでMoonGiftさんでべた褒めで紹介されていたMindTouch Deki Wikiを使ってみることにしました。



MindTouch Deki Wikiのサイトを見る限り、非常に高機能でさらに嬉しいのがドキュメントページには各種OSごとのインストール方法が詳細に書かれています。
http://developer.mindtouch.com/en/docs/mindtouch_setup/010Installation


会社の人がUbuntsにセットアップしてみたところあっというまにセットアップ完了していましたが、私のチームではCentOS5.4で利用することにしました。(特に理由はありません)
事前にネット検索するとCentOS5でセットアップに苦しんでいる人が結構いたので、すんなりはいかなそうな予感、、、


基本的には公式サイトのやり方ににそって作業を行っていけばOKのはず。
私は同居しているredmineの関係でapacheのバージョンとapache上でrailsアプリを走らせるpassengerのバージョン、さらにはPHPのバージョンでつまずきまくりましたが、、、、


なんとか構築はできましたが以下2点メモとして残しておきます。


・サブディレクトリでの稼動はできないようです。
私が構築した環境ではredmineも同じサーバで動いているので、
www.hoge.co.jp/redmine
www.hoge.co.jp/wiki
みたいな感じで同一apache上で動かしたかったのですが、Aliasを使ってサブディレクトリで動かすみたいな方法はできないみたいです。
フォーラムの議論によるとサブディレクトリでのdekiwiki稼動はできないとのこと。



こちらでは無理してできないことはないだろうけど、今後のバグFIXなどのアップデートができなくなるからお勧めしないとのこと。
おとなしくVirtualHostか別ポートで動かしましょう。



・ブラウザからの必要事項入力後のインストールでエラーになる
インストール後にブラウザでアクセスして必要事項(管理者情報など)を入力した後にinstallをクリックするとエラーが出る。
mysqlのsuperuserという入力箇所ににrootを入力してパスワードは空欄にすると画面に

Error (Code: 2) mysql_select_db() expects parameter 2 to be resource, boolean given

と出ます。
詳細なところ(表示がちっちゃい)には

#0 [internal function]: DekiError::handleError(2, 'mysql_select_db...', '/var/www/dekiwi...', 1058, Array)
#1 /var/www/dekiwiki/includes/Database.php(1058): mysql_select_db('wikidb', false)
#2 /var/www/dekiwiki/maintenance/install-utils.inc(600): Database->selectDB('wikidb')
#3 /var/www/dekiwiki/config/includes/deki_installer.php(541): install_database(Object(ConfigData))
#4 /var/www/dekiwiki/config/install.php(53): DekiInstaller->installMindTouch(Array)
#5 [internal function]: InstallController->start()
#6 /var/www/dekiwiki/deki/cp/includes/deki_mvc.php(157): call_user_func_array(Array, Array)
#7 /var/www/dekiwiki/deki/cp/includes/deki_mvc.php(88): DekiController->executeAction('start', Array)
#8 /var/www/dekiwiki/config/includes/deki_installer.php(62): DekiController->initialize()
#9 /var/www/dekiwiki/deki/cp/includes/deki_mvc.php(60): DekiInstaller->initialize()
#10 /var/www/dekiwiki/config/install.php(130): DekiController->__construct(Array)
#11 {main}
Error (Code: 2) mysql_select_db() expects parameter 2 to be resource, boolean given

がでます。
mysql側を見るとdekiwiki用のデータベースはcreateされているのでその後の初期化で失敗している様子。


該当まわりのソースを見てみたところ、#1の mysql_select_db('wikidb', false)のところで第二引数にコネクションオブジェクトを渡さないといけないのが、コネクション取得に失敗して変数にコネクションオブジェクトではなくfalseが入ってしまっているのが原因ぽい。

/var/www/dekiwiki/includes/Database.php:228あたりでコネクションを取得していたので
$server
$user
$password
デバッグプリントを仕込んでもう一度実行してみたところ、画面からはmysql superuserの箇所にいろいろ入力してみたが$server以外の変数に何も表示されてこない、、、、


もう面倒なのでとりあえず
/var/www/dekiwiki/includes/Database.php:228行目あたりを

@/**/$this->mConn = mysql_pconnect( $server, $user, $password );

@/**/$this->mConn = mysql_pconnect( $server, "root", "" );

ってベタで書いた実行したらうまくいった。


最初のインストール時にだけ必要なテーブルやmysqlユーザーを自動生成するためにmysqlの管理者権限ユーザーが必要なだけみたいなので、インストール完了したらコードも元に戻せば大丈夫だよね、、、、


知らんけど。