Mantis をユーザ権限で動かす
これまで Mantis が使用する mysql サーバは init.d から起動されるプロセスを使っていたのですが、前々からユーザ権限で動かしたかったので移行しました。その手順を記します。
環境
Mysql のデータ移動
前に使っていたデータをユーザ向けのディレクトリに移動します。
sudo /etc/init.d/mysql stop mkdir -p ~/mantis/mysql/run sudo cp -pr /var/lib/mysql ~/mantis/mysql/data sudo chown **user**:**group** ~/mantis/mysql/data -R
Apache 設定
userdir.conf の AllowOverrides に Options を追加
/etc/apache2/mods-available/php5.conf
User Directory で php を有効にするために、書いてある通り php_admin_value をコメントアウトしてください。
.htaccess
~/public_html/mantis/.htaccess
php_flag display_errors Off php_value mysql.default_socket /**path-to-home**/mantis/mysql/run/sock
本当は ~/ 指定できるとよかったのですけど、これぐらいなら妥協できる範囲なので。。Apache の htaccess の設定はもっと勉強しておかないといけません。*1
php_value のさらなる設定は debian の場合 /etc/php5/apache2/php.ini を参照。
ユーザ権限の Mysql プロセス起動
Mysql プロセスを起動するためのスクリプト。基本的に /etc/init.d/mysql を真似しました。今回はデータは移行してあるので mysql_install_db や mysqladmin の呼び出しは不要ですが、新規にデータベースを作成する場合は必要だと思います。
OS を再起動した場合は手動で起動しないといけません。login スクリプトで呼び出しするとよいでしょう。
#!/bin/bash g_base=/usr g_mysql=~/mantis/mysql g_pid=${g_mysql%/}/run/pid g_sock=${g_mysql%/}/run/sock g_port=13306 g_data=${g_mysql%/}/data g_log=~/.log/mantis-mysql g_password="**password**" if [ -f ${g_pid} ] ; then exit 0 fi if [ ! -d ${g_data} ] || [ $(ls ${g_data} | wc -l) -eq 0 ] ; then /usr/bin/mysql_install_db --basedir=${g_base} --datadir=${g_data} \ >> ${g_log} 2>&1 || exit 1 # TODO 自前のサーバで使う分には大したことではありませんが、 # ps でパスワードが丸見えになるのであまりよくない。 /usr/bin/mysqladmin -u root password ${g_password} --socket=${g_sock} fi /usr/bin/mysqld_safe --pid-file=${g_pid} --socket=${g_sock} \ --port=${g_port} --basedir=${g_base} --datadir=${g_data} \ --skip-syslog >> ${g_log} 2>&1 & # wait several seconds. for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14; do sleep 1 if [ -f ${g_pid} ] ; then break fi done
Mantis の設定
今回はバージョン 1.2.4 を使いました。
mv mantisbt-1.2.4.zip ~/public_html mv mantisbt-1.2.4 mantis
config_inc.php の抜粋。Unix socket を経由してアクセスする *2 ので hostname や port 番号は不要です。
# --- Database Configuration --- $g_db_username = 'root'; $g_db_password = '**password**'; $g_database_name = 'bugtracker'; $g_db_type = 'mysql'; $g_default_language = 'japanese';
システム用 Mysql プロセス停止
今のところ他の用途に使っていなかったので停止しておきます。多分、Debian 系ならこのコマンドでよいでしょう。
sudo update-rc.d -f mysql remove
Mantis upgrade
今回 Mantis のバージョンを上げたので
http://**hostname**/~masa/mantis/admin/install.php
にアクセスして upgrade する。エラーになった場合はエラー箇所を確認して修正しましょう。
Mantis 後始末
ログイン画面で警告が出るので admin ディレクトリを移動。この警告の意味するところがよくわかっていないです。。
mv ~/public_html/mantis/admin ~/public_html/mantis/.admin