テスト項目運用システムV0.5.1 インストール手順(CentOS編)
|
|
テスト項目運用システム V0.5.1 をLinuxにインストールする場合の手順を説明します。Linuxといっても多数のディストリビューションがありその全てを包括した説明をすることは無理があります。というのを理由に、かなりはしょった内容になってます。個々のディストリビューション固有の情報はネットを検索するなりして補間してください。この手順書の検証はCentOS7でのみ行っています(CentOS6以前では、少なくともsystemctl等を使用しているサービス管理周りの操作が異なりますのでご注意ください)。Ubuntu版の手順書もありますので、Debian系をご使用の方はそちらを参照してください。
本手順書では、特に指定がなければrootで実行するものとします。
各種ディストリビューションを入手してインストールしてください。例えば、CentOSであれば次のサイトからダウンロードできます。
http://www.centos.org/
インストールパッケージを選択できる場合には、次のものを選択しておくと楽できます。
- Apache
- PHP
- PostgreSQL
- Subversion (Subversionを使ってバージョン管理している場合のみ)
本システムでは、アップロードファイルを保存したり、Apacheから外部コマンドを実行する処理があります(具体的には、メール発信とSubversion連携)。SELinuxが有効な場合このような処理は通常エラーとなると思います。これらの機能を使用する場合には、SELinuxを無効にするか、適切な設定を行ってください。作者は、SELinuxについて詳しい知識がありませんので、本手順書では具体的な解説をしていません。ご了承ください。
取りあえず、エラーの原因を切り分けたい場合には、以下のコマンドを実行することでSELinuxを一時的に無効化できます。
# setenforce 0
テスト項目運用システムを動作させるには次のパッケージが必要になります。
- Apache(httpd) - Webサーバ
- PHP - アプリケーションサーバ
- PostgreSQL - データベース
- PHPのPEARパッケージ
- PHPのPostgreSQL用パッケージ
- PHPのmbstringパッケージ
- PHPのGDパッケージ
- Subversion - バージョン管理システム(必須ではありません)
これらがまだインストールされていない場合には追加インストールする必要があります。現在のインストール状況を確認したい場合は、例えばコンソール(GNOME端末など)で次のようにします。行頭の#,$はプロンプトです。
# rpm -qa | egrep 'httpd|php|postgres|subversion'
上記の全てのパッケージをインストールするなら次のようにします。既にインストールされているものは省略してください。
# yum install httpd php postgresql-server php-pgsql php-pear php-mbstring
php-gd subversion
PHP7.1での動作確認も行っていますのでそちらを選択されてもよいかと思います(運用実績はありませんのでリスク覚悟でお願いします)。
Subversionでソースファイルや仕様書のバージョン管理を行っていない(又は本システムで利用しない)のであればsubversionをインストールする必要はありません。
インストールに成功したらApacheを起動しておきます。
# apachectl start
OS起動時の自動起動設定も行っておきましょう。
# systemctl enable httpd.service
ここでは、Apacheのドキュメントルート(CentOSでは/var/www/html)直下に tisystemというディレクトリを作ってそこにインストールするものとして説明します。
- # cd /var/www/html
- # mkdir 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
インストール先はドキュメントルートでなくてもかまいません。$HOME/public_html とかもおすすめです。ディレクトリも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
おそらく、file_uploads, magic_quotes_gpc, magic_quotes_runtimeは初期状態のままでこのようになってます。現在の設定を確認したい場合には、ブラウザで次のURLを開いてみてください。
http://localhost/tisystem/test.php
(最近のPHPでは廃止された項目もあります。その場合には、test.phpの画面でも表示されないかもしれません。)
include_pathの設定を行う方法として次の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の設定ファイルであるhttpd.confを編集することになります。以下は私のやり方です。
- 「# locate httpd.conf」 とかしてhttpd.confを探す(CentOSでは
/etc/httpd/conf/ にあります)。
- httpd.conf をエディタで開く。
- インストール先に対応した区画のAllowOverrideを探す。例えば、ドキュメントルート配下にインストールしたなら<Directory
"/var/www/html">〜</Directory>にあるAllowOverrideを探す。
- 「AllowOverride Options 」と書き換える。
- 上書き保存。
- http://localhost/tisystem/test.php をブラウザで開く。
- 「include_path」の項目のMaster Valueの値をコピーする。
- /var/www/html/tisystem/.htaccess をエディタで開く。
- 「php_value include_path」の設定値を7でコピーした内容に書き換える。
- :./lib を追加する(7でコピーした内容にpearへのパスが無い場合はそれも追加)。
- 上書き保存。
AllowOverrideを変えればその配下に配置された全てのドキュメントに影響を与えることになりますので良く考えて設定してください。
次は、4.の具体例です。
<Directory "/var/www/html">
Options Indexes Includes FollowSymLinks
# AllowOverride None ← コメント化
AllowOverride Options ← この行を追加
Allow from all
Order allow,deny
</Directory>
次の作業はA,B共通です。
- 「# locate httpd.conf」 とかしてhttpd.confを探す(CentOSでは /etc/httpd/conf/ にあります)。
- httpd.conf をエディタで開く。
- DirectoryIndex を探して、
index.php が無ければ追加する。
- 上書き保存。
次は3.の具体例です。
DirectoryIndex index.html index.php
- DBの初期化、PostgreSQLの起動
- 次を実行してデータベースを初期化します。
# su postgres
$ initdb --encoding=UTF8 --no-locale --pgdata=/var/lib/pgsql/data
$ exit
次を実行してPostgreSQLを起動します。
# systemctl start postgresql.service
- サーバ起動時に自動起動するように設定
- 次を実行してOS起動時に自動起動するようにします。
# systemctl enable postgresql.service
- PL/pgSQLのインストール
- PL/pgSQLはOracleで言うところのPL/SQLのようなものです。本システムではPL/pgSQLでストアドファンクションを書いていますのでこれを使用可能にする必要があります。全てのデータベースで使用可能にするにはtemplate1データベースにインストールします。もっとも最近は最初から使用可能になっているようなので次を実行してもalready
installedになる可能性が高いです。 postgresユーザで実行します。
-
# su postgres
$ createlang plpgsql template1
$ exit
本システムはPEARのAuthとMDB2及びMail関連のパッケージを使用しています。よってこれらをインストールする必要があります。コンソールで次のように操作します。
# pear install Auth
# pear install MDB2-beta
# pear install MDB2_Driver_pgsql-beta
# pear install -a Mail
MDB2で-betaを使用しているのは、安定版ではPHP5.3以降で非推奨、PHP7以降ではエラーとなる記述が残っているためです。同じ理由で/usr/share/pear/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に移行すべきなのでしょうけどまだ未対応です。
本システム内の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 ← ディレクトリです。ディレクトリごとコピーします
ここでは、/var/lib/pgsql/data/pg_hba.conf の METHOD の指定が ident である場合を想定します。この設定で動作させようと思うと、Apacheの実行ユーザと同じ名前のPostgreSQLユーザを作成し、そのユーザがデータベースオブジェクトを使用できるようにする必要があります。trastでもこの設定で動作します。
まずは、Apacheの実行ユーザを確認してください。分からない場合には、httpd.confの「User」を探すとか、「# ps auxw |
grep httpd」とかしてみると分かると思います。もしこれが「apache」でない場合には次を実行してください。
# cd /var/www/html/tisystem/setup
# php Gr_ti.php
実行するとApacheの実行ユーザの入力が要求されます。成功すればGr_ti.sqlが作り直されます。
postgresユーザになってデータベース(ここではpgti)と、Apacheの実行ユーザ(ここではapache)に対応したPostgreSQL
ユーザを作成します。
# su postgres
$ createdb -E UTF8 pgti
$ createuser apache
createuserでy/n入力応答がある場合には、全てnでかまいません。
次に、/var/www/html/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 部分が ident でなく md5 とかの場合はユーザとパスワードを指定することになります。この場合は次の作業を行います。
- createuser -P foo とか SQLの ALTER ROLE とかでユーザにパスワードを設定
- tisystem/lib/ti_local.inc の $c_dsnary
を編集する
詳細は、
Windows版のインストール手順書を参照してください。
rootに戻って、一度Apache(httpd)を再起動してください。
# 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スクリプトです。何かヒントになる情報が表示されるかもしれません。
httpd.confや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が実行可能なように設定する必要がある