テスト項目運用システムV0.5.1 インストール手順(Ubuntu編)
|
|
テスト項目運用システム V0.5.1 をLinuxにインストールする場合の手順を説明します。Linuxといっても多数のディストリビューションがありその全てを包括した説明をすることは無理があります。というのを理由に、かなりはしょった内容になってます。個々のディストリビューション固有の情報はネットを検索するなりして補間してください。この手順書の検証はUbuntuでのみ行っています。CentOS版の手順書もありますので、Debian系以外をご使用の方はそちらを参照してください。
インストールイメージを入手してインストールしてください。例えば、Ubuntuの日本語版であれば次のサイトからダウンロードできます。
http://www.ubuntulinux.jp/
インストールパッケージを選択できる場合には、次のものを選択しておくと楽できます。
- Apache
- PHP
- PostgreSQL
- Subversion (Subversionを使ってバージョン管理している場合のみ)
本システムを動作させるには次のパッケージが必要になります。
- Apache2 - Webサーバ
- PHP - アプリケーションサーバ
- PostgreSQL - データベース
- PHPのPEARパッケージ
- PHPのPostgreSQL用パッケージ
- PHPのmbstringパッケージ
- PHPのGDパッケージ
- Subversion - バージョン管理システム(必須ではありません)
これらがまだインストールされていない場合には追加インストールする必要があります。現在のインストール状況を確認したい場合は、例えばコンソール(GNOME端末など)で次のようにします。行頭の$はプロンプトです。
$ dpkg -l | egrep 'apache2|php|postgres|subversion'
上記の全てのパッケージをインストールするなら次のようにします。既にインストールされているものは省略してください。
$ sudo apt-get install apache2 php postgresql libapache2-mod-php php-pear
php-pgsql php-mbstring php-gd subversion
Subversionでソースファイルや仕様書のバージョン管理を行っていない(又は本システムで利用しない)のであればsubversionをインストールする必要はありません。
ここでは、Apacheのドキュメントルート直下に tisystemというディレクトリを作ってそこにインストールするものとして説明します。ドキュメントルートは、設定によって異なりますが、ここでは
/var/www/html を前提とします。
作業を簡便にするため、tisystemディレクトリの所有者をこのインストール作業者(ここでは仮に
foo としています)に変更しています。
- $ cd /var/www/html
- $ sudo mkdir tisystem
- $ sudo chown foo tisystem
- $ sudo chgrp foo tisystem
- $ cd tisystem
- ここに tisystem-0.5.1.tar.gz を配置します。
- $ tar xvzfo tisystem-0.5.1.tar.gz
- $ chmod -R o+rx *
- $ chmod o+w attach
インストール先はドキュメントルートでなくてもかまいません。ディレクトリもtisystemである必要はありません。ただし、以降の説明は/var/www/html/tisystemにインストールしたことを前提としています。
本システムを実行するにはPHPの環境変数を次のように設定する必要があります。
- include_path に、pearへのパスと、テスト項目運用システムのインストール先のlibディレクトへのパスを追加
例)include_pat=.:/usr/share/pear:./lib
- file_uploads を On
- magic_quotes_gpc を Off
- magic_quotes_runtime を Off
include_path 以外は、初期値が上記の通りになっているものと思われますがphp.iniを確認しておいてください。
(最近のPHPでは廃止された項目もあります。)
これらの設定を行う方法として次の2つを挙げておきます。
- php.iniを編集する
- インストール先の.htaccessを有効にする
方法A:
他に運用しているシステムが無いのであればAが手っ取り早いです。以下は私のやり方です。
- http://localhost/tisystem/test.php をブラウザで開く。
- 「Configuration File (php.ini) Path」の項目を見てphp.iniの在り処を確認する。
- 「include_path」の項目のMaster Valueの値をコピーする。
- php.ini をエディタで開き、include_pathを探す。
- include_pathの設定値を3でコピーした内容に書き換える
- :./lib を追加する(3でコピーした内容にpearへのパスが無い場合はそれも追加)。
- include_path以外の変更も必要な場合にはその項目も変更。
- 上書き保存。
方法B:
php.iniを書き換えるのに問題がある場合にはBを行います。この場合は、Apacheの設定ファイルを編集することになります。以下は私のやり方です。標準的な環境なら5.以降は省略しても大丈夫だと思います。
- Directoryの設定が定義された設定ファイルをエディタで開きます。ubuntu14.04では 私の知る環境では/etc/apache2/apache2.conf
がそれにあたると思います。ubuntu12.04では/etc/apache2/sites-available/default でした。
- インストール先に対応した区画のAllowOverrideを探す。例えば、ドキュメントルート配下にインストールしたなら<Directory
"/var/www">〜</Directory>にあるAllowOverrideを探す。
- 「AllowOverride Options 」と書き換える。
- 上書き保存。
- http://localhost/tisystem/test.php をブラウザで開く。
- 「include_path」の項目のMaster Valueの値をコピーする。
- /var/www/tisystem/.htaccess をエディタで開く。
- 「php_value include_path」の設定値を7でコピーした内容に書き換える。
- :./lib を追加する(7でコピーした内容にpearへのパスが無い場合はそれも追加)。
- 上書き保存。
AllowOverrideを変えればその配下に配置された全てのドキュメントに影響を与えることになりますので良く考えて設定してください。
次は、3.の具体例です。
<Directory
/var/www/>
Options Indexes FollowSymLinks
# AllowOverride None ← コメント化
AllowOverride
Options ← この行を追加
Require all granted
</Directory>
PostgreSQLの初期化やPL/pgSQLのインストールとかを行う項目ですが、ubuntuではapt-getが完了した段階で既にこれらの処理が実行されるようです。ですので、ここでは特に行うことはありません。
ただ、少し古いknoppixで試したところ、UTF8を受け付けないlocaleでinitdbされていて嵌ったことがありました。このような場合は、手動でinitdbをやり直す必要があります。
本システムはPEARのAuthとMDB2及びMail関連のパッケージを使用しています。よってこれらをインストールする必要があります。コンソールで次のように操作します。
$ sudo pear install Auth
$ sudo pear install MDB2-beta
$ sudo pear install MDB2_Driver_pgsql-beta
$ sudo pear install -a Mail
MDB2で-betaを使用しているのは、安定版ではPHP5.3以降で非推奨、PHP7以降ではエラーとなる記述が残っているためです。同じ理由で/usr/share/php/Auth.phpに以下の変更を行います。
function &_factory($driver, $options = '')
{
$storage_class = 'Auth_Container_' . $driver;
include_once 'Auth/Container/' . $driver . '.php';
//$obj =& new $storage_class($options); ← 469行目 コメント化
$obj = new $storage_class($options); ← 追加 (要は&を取るだけ)
return $obj;
}
PDOに移行すべきなのでしょうけどまだ未対応です。
古い環境でpear install が 「but it is not a valid package archive」といったエラーになる現象を遭遇したことがあります。同様な現象になって対処方法が分からない場合には、次の「+」を押してください。私が行った回避手順を表示します。ただし動作を保障できません。
+
- とりあえず上記の sudo pear install を全て実行する
- 次を実行してダウンロードされた.tgzを .tar に展開する
$ sudo gunzip /build/buildd/php5-5.5.9+dfsg/pear-build-download/*.tgz
- 次を実行して .tar を元にインストールする
$ sudo pear upgrade /build/buildd/php5-5.5.9+dfsg/pear-build-download/*.tar
本システム内のTreeViewはjQueryとそのTreeviewプラグインを使用しています。次の手順で入手・配置してください。
- jQueryのインストール
- 次のダウンロードサイトから入手してください。リンクを右クリックして「名前を付けてリンク先を保存」でダウンロードします。開発時点では1.xを使用していましたが、3.1.1でも大丈夫そうです。compressed,
uncompressedの何れでもかまいません。slimバージョンでもよいです。
保存先は、ドキュメントルート(/var/www/html/)の tisystem/jq です。
ファイル名は、jquery.js に変名してください。
- Treeviewプラグインのインストール
- 次のダウンロードページからTreeviewのプラグインを入手します。
GitHub Repository内の[Clone or download]ボタンを押して"Download ZIP"を選択してZIPをダウンロードします。このZIPファイルを展開してできるファイル群のうち、次のものをドキュメントルート(/var/www/html/)の
tisystem/jq/tv にコピーします。
- jquery.treeview.js
- jquery.treeview.css
- images ← ディレクトリです。ディレクトリごとコピーします
ここでは、/etc/postgresql/*/main/pg_hba.conf の METHOD の指定が peer である場合を想定します。この設定で動作させようと思うと、Apacheの実行ユーザと同じ名前のPostgreSQLユーザを作成し、そのユーザがデータベースオブジェクトを使用できるようにする必要があります。
ubuntuのApacheの実行ユーザは www-data のようです。
http://localhost/tisystem/test.php をブラウザで開くと EnvironmentのAPACHE_RUN_USERの項で確認できます。次のようにして権限付与用のSQLを作り直します。
$ cd /var/www/html/tisystem/setup
$ php Gr_ti.php
実行するとApacheの実行ユーザの入力が要求されます。成功すればGr_ti.sqlを作り直します。
postgresユーザになってデータベース(ここではpgti)と、Apacheの実行ユーザ(ここではwww-data)に対応したPostgreSQL
ユーザを作成します。
$ sudo su postgres
$ createdb -E UTF8 pgti
$ createuser www-data
createuserではy/n入力応答がある場合がますが、全てnでかまいません。
次に、/var/www/tisystem/setup/ にあるSQLファイルを使用してオブジェクトを作成します。
オブジェクトの所有者をpostgres以外にしたい場合には、そのユーザをcreateuserしてからそのユーザにsuしておきます。例えば、foo
ユーザがテスト項目運用システムのDBのメンテ担当だとしたら次のようにします。
$ createuser foo
$ su
foo
このようにしておけば、postgresにsuしなくてもオブジェクトを操作できて便利だと思います。このcreateuserのy/n応答も全てnでかまいません。
では、psqlを使ってオブジェクトを作成します。
$ psql -d pgti -f Cr_titb.sql ← テーブルやシーケンスを作成
$ psql -d pgti -f Cr_tifunc.sql ← ビューやファンクションの作成
$ psql -d pgti -f Cr_const.sql ← 参照整合性制約を付加
$ psql -d pgti -f Gr_ti.sql ← Apache実行ユーザにアクセス権限を与える
Cr_titb.sqlでNOTICEが表示され場合がありますが、これは主キーやUNIQUE制約の索引が作成されたことを示すもので表示されて正常です(表示されない場合もあります)。
Cr_tifunc.sqlで dose not exist のERROR
が表示されますが、初回の実行においては表示されて正常です。これは、再実行を考慮して、dropしてからcreateしているためです。気になる場合は続けてもう一度実行してください。
pg_hba.conf のMETHOD 部分が peer
や ident でなく md5 とかの場合はユーザとパスワードを指定することになります。この場合は次の作業を行います。
- createuser -P foo とか SQLの ALTER ROLE とかでユーザにパスワードを設定
- tisystem/lib/ti_local.inc の $c_dsnary
を編集する
DB名をpgti以外にした場合も ti_local.incの$c_dsnaryを編集する必要があります。詳細は、
Windows版のインストール手順書を参照してください。
一度Apacheを再起動してください。次のコマンドラインを実行します。
$ sudo apachectl restart
その後で、Firefoxなどのブラウザを起動して、
http://localhost/tisystem
にアクセスします。JavaScriptが有効である必要があります。
ログイン画面が表示されれば、次のように入力してログインしてみます。
ユーザID: |
admin |
パスワード: |
admin |
うまくいかない場合には、次を試してみてください。
- http://localhost/tisystem/test.php
を試します。PHPの情報画面が表示されるようなら、ApacheとPHPは取り合えず動作していると判断できます。
- 1.が成功するのならば、同様に http://localhost/tisystem/test2.php
を試します。インストール状態を確認する簡単なPHPスクリプトです。何かヒントになる情報が表示されるかもしれません。
Apacheの設定ファイルやphp.iniを書き換えた場合にはApacheの再起動をお忘れなく。
しばらく悩んで解決できないようなら、状況と実行環境の詳細を書いたメールを作者に送りつけてください。こちらで分かるようでしたらサポートします(私は
Linuxにはそれほど詳しくないので期待してはいけません)。
障害票や相談のメール送信機能を使用する場合には以下の設定が必要です。
lib/ti_local.inc の編集
次の各変数に適切な値を設定します。
$c_mail_vaild |
メール送信機能を使用する場合には true
にします。これをtrueにしなければ、以降の全ての設定は意味を持ちません。 |
$c_mail_backend |
SMTPを使わず、sendmailで送信する場合には 0 に変更します。 |
$c_mail_enc |
メール本文のエンコードを指定します。通常は変更の必要は無いと思います。GNOME端末でmailxを使って見ると文字化けしたので回避策として設けました。 |
$c_smtp_auth |
SMTP認証が必要な場合には true にします。 |
$c_smtp_user |
SMTP認証のユーザ名($c_smtp_auth = true の場合のみ有効) |
$c_smtp_passwd |
SMTP認証のパスワード($c_smtp_auth = true の場合のみ有効) |
$c_mail_from |
送信元とするメールアドレスを設定します。 |
$c_server_url |
クライアントから見たテスト項目運用システムのURLを設定します。メール内のリンク生成に使用します。 |
SELinuxが有効な場合、初期設定のままだとエラーになると思います。この場合、SELinuxを無効にするか、SELinuxの設定を適切に変更してください(すいませんが、SELinuxについてのサポートはできません)。
php.ini の編集
php.iniの以下の設定値を適切な値に編集します。
SMTP |
SMTPサーバ
例)SMTP =
tls://smtp.gmail.com |
smtp_port |
SMTPサーバのポート番号 |
sendmail_path |
sendmailへのパス($c_mail_backend = 0;
の場合に使用) |
□Subversion 連携
本システムでは、Subversionのsvnコマンドを実行することでSubversion連携を実現します。このため、この機能を使用する場合には以下を考慮する必要があります。
- Apacheの実行ユーザがリポジトリを参照可能なようにアクセス権を設定する必要がある
- SELinuxを無効にするか、svnコマンドをApacheが実行可能なように設定する必要がある