Mantis をユーザ権限で動かす

これまで Mantis が使用する mysql サーバは init.d から起動されるプロセスを使っていたのですが、前々からユーザ権限で動かしたかったので移行しました。その手順を記します。

環境

  • OS: Debian Squeeze
  • データベース: mysql-5.1 (port 13306 apt)
  • データディレクトリ: ~/mantis/mysql/data
  • 公開ディレクトリ: ~/public_html/mantis
  • Mantis: Version 1.2.4 (公式サイトからダウンロードした最新版)
  • Apache: 2.2 系 (apt)
  • PHP: Version 5 (apt)

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

*1:それにしても Apache はいつまで使われ続けるんだろうか。

*2:.htaccessphp_value を参照