テスト項目運用システムV0.5.1 インストール手順 (Windows編)

TOP

テスト項目運用システム V0.5.1 をWindows7にインストールする手順を説明します。
作業はすべて管理者権限ユーザで行うものとします。エディタやコマンドプロンプトも「管理者として実行」で起動します。

□PostgreSQLのインストール

  1. Windows版インストーラを入手します。以下のサイトからたどれば見つけられると思います。
     http://www.postgresql.jp/
  2. インストーラを実行してインストールします。
    インストール先の次にデータの保存先を聞かれます。デフォルトだとプログラムのインストール先のdataフォルダになってますが、私はこれをUACの影響下にないパスに変更したもので動作確認しています。
    次に入力要求されるパスワードはpostgres(PostgreSQLのスーパーユーザ)のものです。忘れずに記録してください。
    ポート番号はデフォルトのままで。
    次にLocaleを聞かれます。ここでは、Cを指定してください。
    Stack Builderは実行しなくてもかまいません。

□Webサーバのインストール

テスト項目運用システムはApacheとIISで動作確認しています。どちらを使うかは好みで選択してください。
IISの場合
Windows7では次の手順でインストールできます。
  1. 「コントロールパネル」-「プログラム」-「Windowsの機能の有効化または無効化」
  2. 「インターネット インフォメーション サービス」のチェックをON
  3. 配下の「World Wide Web サービス」-「アプリケーション開発機能」-「CGI」のチェックもON
  4. 【OK】ボタン押下
Apacheの場合
Apache LoungeのZipパッケージ版を使用します。
  1. 以下のサイトからZipファイル(例:httpd-2.4.25-win64-VC14.zip)を入手します。
    http://www.apachelounge.com/download/
  2. Zipファイルを解凍します。
  3. 作成された Apache24 というフォルダをフォルダごと C:\ にコピーします。
  4. 管理者権限でコマンドプロンプトを起動します(右クリックして「管理者として実行」を選択)。以下はコマンドプロンプト上の操作です(先頭の > はプロンプトです)。
  5. > cd \Apache24\bin
  6. > httpd -k install
  7. > httpd -k start
インストール先は C:\Apache24 でなくてもかまいませんが、この手順書では C:\Apache24 にインストールしたものとして解説しています。

IISなどの他のWebサーバが動いている場合には事前に停止させておいてください。

□PHPのインストール

Windows版のZipファイルは次のサイトから入手できます。
http://windows.php.net/download/

Non Thread Safe版とThread safe版がありますが、次のように選択します。
Non Thread Safe 非スレッドセーフ版 IISではこれを選択
Thread Safe スレッドセーフ版 Apacheではこれを選択

次のフォルダを作成します。

C:\php

このフォルダに、ダウンロードしたZipファイル(例:httpd-2.4.25-win64-VC14.zip) を解凍してできたファイル群をフォルダも含め全てコピーします(php.exeがC:\phpの直下にくるようにコピーします)。

PHPのzip packageにはインストーラがありません。以下の手作業が必要です。
  1. php.ini-productionC:\WINDOWS にコピーして php.ini に変名する
  2. Apacheの場合にはphp?ts.dll (?にはPHPのメジャーバージョンの数値が入ります)を C:\WINDOWS\SYSTEM32 にコピーする(Non Thread Safe版にはphp?ts.dllがありません)
また、Windows Server 2008より前のOSの場合には別途次がインストールされている必要があります。

□PEARのインストール

本プログラムではPEARのAuthとMDB2及びMail関連のパッケージを使用しています。インターネットを使用できる環境で次の操作を行いインストールします。
  1. 次のフォルダを作成します。
    C:\php\PEAR
  2. 次のURLから go-pear.phar をダウンロード(このリンクを右クリックして「対象をファイルに保存」)します。
    http://pear.php.net/go-pear.phar
    保存先は1.で作成した C:\php\PEAR です。
  3. 管理者権限でコマンドプロンプトを起動します(右クリックして「管理者として実行」を選択)。以下はコマンドプロンプト上の操作です(先頭の > はプロンプトです)。
  4. > cd \php
  5. > php PEAR\go-pear.phar
  6. C:\php\PEAR_ENV.reg をエクスプローラでダブルクリックしてレジストリ登録する
  7. > pear install Auth
  8. > pear install MDB2-beta
  9. > pear install MDB2_Driver_pgsql-beta
  10. > pear install -a Mail
go-pear.phar の実行に成功すると何回か質問されます。基本的には改行を押下していればよいと思います。
プロキシサーバを使用している場合はそのホスト名,ポート番号も聞かれるようです。
pear install でエラーになる場合は、pear clear-cache を実行してみるとよいかもしれません。

MDB2で-betaを使用しているのは、安定版ではPHP5.3以降で非推奨、PHP7以降ではエラーとなる記述が残っているためです。同じ理由で C:\php\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;
}
同様に、C:\php\PEAR\Auth\Container\MDB2.php に以下の変更を行います。
 function _connect($dsn)
 {
    $this->log('Auth_Container_MDB2::_connect() called.', AUTH_LOG_DEBUG);
    if (is_string($dsn) || is_array($dsn)) {
    //  $this->db =& MDB2::connect($dsn, $this->options['db_options']); ← 114行目 コメント化
        $this->db = MDB2::connect($dsn, $this->options['db_options']); ← 追加 (これも&を取るだけ)
    } elseif (is_subclass_of($dsn, 'MDB2_Driver_Common')) {
PDOに移行すべきなのでしょうけどまだ未対応です。

□php.iniの編集

WINDOWS\php.ini をエディタで開いて以下の編集を行います。エディタは管理者として実行します。
以降はIISの場合のみの作業です。参照する場合は次の+を押してください。

□テスト項目運用システムの展開

  1. tisystem-0_5_1.zip を解凍します。
  2. 解凍してできたtisystemフォルダをフォルダごとドキュメントルートにコピーします。
ドキュメントルートとは、IISなら通常 C:\inetpub\wwwroot 、Apacheなら C:\Apache24\htdocs とかのことです。

tisystem\attachフォルダはアップロードファイルなどの保存先です。このフォルダに対してWebサーバからの書き込みを許可します。具体的には管理者として実行したコマンドプロンプトで次のコマンドを実行します(今はcaclsよりicaclsが推奨されているようですが、古いOSも考慮してcaclsを使ってます)。
IISの場合
> cacls c:\Inetpub\wwwroot\tisystem\attach /E /G IUSR:C
> cacls c:\Inetpub\wwwroot\tisystem\attach /E /G IIS_IUSRS:C
IIS7.0より前のバージョンのIISでは、「IUSR」を「IUSR_マシン名」に読み替えてください。
Apacheの場合
> cacls C:\Apache24\htdocs\tisystem\attach /E /G SYSTEM:C

□Webサーバの設定

IISやApacheにPHPを認識させるための設定を行います。使用するWebサーバの+をクリックしてください。
IISの場合
Apacheの場合

□jQueryの配置

本システム内のTreeViewはjQueryとそのTreeviewプラグインを使用しています。次の手順で入手・配置してください。
jQueryのインストール
次のダウンロードサイトから入手してください。リンクを右クリックして「名前を付けてリンク先を保存」でダウンロードします。開発時点では1.xを使用していましたが、3.1.1でも大丈夫そうです。compressed, uncompressedの何れでもかまいません。slimバージョンでもよいです。
保存先は、ドキュメントルートの tisystem/jq です。
ファイル名は、jquery.js に変名してください。
Treeviewプラグインのインストール
次のダウンロードページからTreeviewのプラグインを入手します。 GitHub Repository内の[Clone or download]ボタンを押して"Download ZIP"を選択してZIPをダウンロードします。
このZIPファイルを展開してできるファイル群のうち、次のものをドキュメントルートの tisystem/jq/tv にコピーします。
  • jquery.treeview.js
  • jquery.treeview.css
  • images ← フォルダです。フォルダごとコピーします

□DBの作成等

データベースを作成し、テーブルなどのオブジェクトを生成し初期データを投入します。専用のユーザも作成します。
パスワードを要求されたら、特に明記していないものは、PostgreSQLのインストールで指定したスーパユーザ(postgres)のパスワードを入力します。
  1. コマンド プロンプトを管理者として起動
    プロパティのフォントタブでUTF-8に対応したフォント(「MSゴシック」など)になっていることを確認してください。ラスターフォントとかになっていれば、変更したのちにコマンドプロンプトを再起動します。
  2. PostgreSQLのインストール先のbinフォルダに移動
    例)> cd "\Program Files\PostgreSQL\9.6\bin"
  3. > chcp 65001コードページをUTF-8に変更
  4. > createdb -E UTF8 -U postgres --template=template0 pgtiデータベースの作成
  5. 接続用のPostgreSQLユーザを作成します。ここでは仮に tiuser とします。
    例) > createuser -U postgres -P tiuser
    パスワードの入力が求められますので、tiuserに設定するパスワード入力します。確認入力もあります。
    3回ほどy/n入力要求されるかもしれません。その場合、すべてnでかまいません。
  6. tisystem\setupフォルダに移動します。
    例)> cd \inetpub\wwwroot\tisystem\setup
  7. > \php\php Gr_ti.php
    5.で作成したユーザに権限を与えるためのSQL文を作成するスクリプトです。ユーザ名を聞かれたら5.で作成したユーザ名を入力してください。
  8. > \php\php Make_tidb.php
    各種データベースオブジェクトの作成や設定を行うSQLの実行を案内するスクリプトです。指示に従って応答入力してください。
    途中、場合によっては文字化けした表示がされるかもしれません。それはパスワード入力を促すメッセージですのでpostgresのパスワードを入力してください。
    テーブル作成の結果でNOTICEメッセージが表示されることがありますが、主キーのインデックスが作成されたことを示すものであれば表示されて正常です。
    ファンクション・ビューの作成では、DROP してから CREATEしてます。このため、初回の実行ではDROPでdose not existのERRORになりますが、これは無視してください。

□認証の設定

DBにアクセスするための設定を行います。DBとの接続情報は、ドキュメントルートの tisystem\lib\ti_local.ini$c_dsnary に設定します。
前項で作成した接続用ユーザの情報を設定してください。また、hostspecがコメント化されてますが、これを解除してください。
以下は設定例です。
$c_dsnary = array(
        'phptype'  => 'pgsql',       // 現版では変更不可
        'hostspec' => 'localhost',   // hostname[:port]
        'database' => 'pgti',        // データベース名
        'username' => 'tiuser',     // データベースのユーザ名
        'password' => 'ti051!pass',  // パスワード
        );
パスワードを平文で書いてしまっていますが、実はこのti_local.incはその気になればブラウザから普通に見えてしまう場所にあります。これが気になる場合には、libフォルダをWebで参照不可能な場所に移動させてください。この場合には、include_pathもそれに合わせて変更が必要です。

□ログイン確認

IEもしくはFirefoxを起動して次のURLを開きます。
http://localhost/tisystem/
ログイン画面が表示されれば、次のように入力してログインしてみます。

ユーザID: admin
パスワード: admin

うまくいかない場合には、次を試してみてください。
  1. http://localhost/tisystem/test.php を試します。PHPの情報画面が表示されるようなら、WebサーバとPHPは取り合えず動作していると判断できます。
    Apacheを使用している場合で、Loaded Configuration File が (none) になっている場合は、httpd.confに次の行を追加してみてください。
    PHPIniDir "C:/WINDOWS"
  2. 1.が成功するのならば、同様に http://localhost/tisystem/test2.php を試します。インストール状態を確認する簡単なPHPスクリプトです。何かヒントになる情報が表示されるかもしれません。
php.iniを正しく編集しているのにtest2.phpでpgsqlがロードされていない旨のエラーになる場合は、次を試してみてください。
  1. Windowsのシステム環境変数のPathにPHPのインストール先(C:\php)を追加
  2. Windowsを再起動
しばらく悩んで解決できないようなら、状況と実行環境を書いたメールを作者に送りつけてください(解決を保障することはできませんけど)。

□メール送信設定

障害票や相談のメール送信機能を使用する場合、次の設定を行う必要があります。
SMTPサーバの指定
php.iniの[mail function]区画の  SMTP にSMTPサーバを設定します。
例)SMTP = tls://smtp.gmail.com
必要に応じてsmtp_portを変更します。
例)smtp_port = 465
有効化
lib\ti_local.inc$c_mail_validtrue に設定します。
また、$c_mail_backend1 に設定します。
SMTP認証の設定
SMTPに認証が必要な場合にはlib\ti_local.incに次の設定も行います。
$c_smtp_auth に true を設定
$c_smtp_user にSMTP認証のユーザ名を設定
$c_smtp_passwd にSMTP認証のパスワードを設定
パスワードを設定する場合は「認証の設定」でも説明したようにti_local.incの管理に気をつけてください。
送信元アドレスの設定
lib\ti_local.inc$c_mail_from に送信者のメールアドレスを指定します。php.iniのsendmail_from にも同じメアドを設定しておくことを推奨します。
サーバURLの設定
クライアントから見たテスト項目運用システムのURLを lib\ti_local.inc$c_server_url に設定します。メール内の障害票、添付資料などへの直接リンクの生成に使用されます。

□Subversion

Subversionを使用してソースファイルやドキュメントの履歴管理を行っている場合で、本システムの「修正内容表示」機能を使いたい場合には、Subversionのクライアント機能をインストールして下さい(WebDAV関連の設定は特に必要としません)。
Subversionは次のサイトから入手できます。
http://subversion.tigris.org/

修正内容表示の機能はSubversionのsvnコマンドをPHPから実行することで実現しています。よって、PHPをSafeモードで動作させている場合にはsvnコマンドのあるフォルダをsafe_mode_exec_dirに設定する必要があります。

本機能はすんなりとは動いてくれない可能性が高いです(関係するアプリの数が多いことやセキュリティ的に見てあまり推奨されないことをしているので)。実際、私も結構苦労しました。
以下にPHPでsvnコマンドを実行しようとしたときに発生する代表的な問題のトラブルシュートを挙げておきます。
IIS7.x(Vista,7)の場合はIUSR_XXXXX全体をIUSRに読み替えてください。
修正内容表示画面で変更ファイルリストが表示されず、「ログ情報表示>」で Unable to fork のエラーになる場合
IISの実行ユーザにコマンド実行の権限が無いものと思われます。この場合、コマンド・プロンプトで次のコマンドを実行することで対処できると思います。
> cacls c:\windows\system32\cmd.exe /E /G IUSR_XXXXX:R
XXXXX にはホスト名が入ります。
C:\phpにcmd.exeをコピーすることで対処できるという情報もありましたが、私が試した範囲ではダメでした。
セキュリティを緩和する設定変更です。よく検討のうえ各自の判断で行ってください。

「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」のエラーになる場合
Subversionをインストールした直後であるならOSを再起動してみてください。
それでも同じエラーになる場合は、lib\ti_local.inc$c_svn_pathにsvnコマンドへのパスを記述してみてください。
例)$c_svn_path = "C:\\Program files\\Subversion\\bin\\"

「Can't determine the user's config path」のエラーになる場合
次のようにしてSubversionの設定ファイルのパスを明示的に与えてやります。
  1. 何らかのsvnコマンドを実行する
  2. C:\Documents and Settings\Administrator\Application Data\Subversion を任意のフォルダにコピーする。ここでは仮に C:\svn\conf とする。
  3. コマンドプロンプトで以下を実行
    > cacls c:\svn\conf\Subversion /E /G IUSR_XXXXX:F
    XXXXX にはホスト名が入ります。
  4. lib\ti_local.inc$c_svn_conf にパスを設定
    例)$c_svn_conf = "c:\\svn\\conf\\Subversion"

□補足

ti_local.incなどのPHPスクリプトはUTF-8コードです。UTF-8に対応したエディタをご使用ください。私は、TeraPadを使用させてもらってます。