testlink 1.9.9 から 1.9.12 へのアップグレードのお話

# Testlink 1.9.9 to 1.9.12 の作業メモ

### ダウンロード、サーバヘのアップロード
* [本家サイト](http://testlink.org/)にはWindows用のインストーラしか見当たらないので、[souceforge](http://sourceforge.jp/projects/sfnet_testlink/)からダウンロード
* Teratermでサーバ（CentOS)ヘSCP転送

### 解凍、テスト環境への配置

> \# tar zxvf /var/www/testlink-1.9.12.tar.gz

解凍

> \# rm /var/www/testlink-1.9.12.tar.gz

圧縮ファイルを削除

> \# ln -s /var/www/testlink-1.9.12 /var/www/testlink-test

シンボリックリンクを作成。テスト用のURLからアクセスするために-testをつけてある

> \# chown -R apache:apache /var/www/testlink-1.9.12
> \# chmod 777 /var/www/testlink-1.9.12
> \# chmod 777 /var/www/testlink-1.9.12/gui/templates_c -R

実行権限の付与と所有者・グループの変更

> \# cp /etc/httpd/conf.d/testlink.conf /etc/httpd/conf.d/testlink-test.conf

test環境用にhttpdのconfファイルを作成（既存のtestlink.confをコピーして作成）

> \# vi /etc/httpd/conf.d/testlink-test.conf

viで編集　「testlink」になっている文字列を全部「testlink-test」に変更（編集画面省略）

> \# service httpd restart

webサーバを再起動
ローカルマシンで、 http://サーバ名/testlink-test/ にアクセスして確認

### DB作成、Testlinkインストール

> \# mysql -u root -p
> mysql> show databases;

作成済みのデータベース名を確認。既存のtestlink用のデータベース名は「testlink」

> mysql> CREATE DATABASE testlink1912 CHARACTER SET utf8;

testlink-1.9.12用のデータベースを作成

> mysql> quit;

ローカルマシンで、 http://サーバ名/testlink-test/ にアクセス
インストール用の画面がでるので進める New installation → i agree → continue でDB configの画面になる
DB名＝testlink1912 mysqlのrootアカウントとパスワード、mysqlのtestlinkユーザのアカウントとパスワードを指定して「process testlink setup」ボタン
インストールが行われるので完了後、再度リモートでの作業

### 新DBの設定

> \# mysqldump -u root -p testlink > dump.sql

旧データベースをダンプ出力

> \# mysql -u root -p testlink1912 < dump.sql

新バージョン用のDBにダンプファイルから流し込む

> \# rm dump.sql

ダンプファイル削除
ローカルマシンで、 http://サーバ名/testlink-test/ にアクセス

> Unknown Schema version DB 1.9.9, please upgrade your Testlink Database to DB 1.9.12

と言われる。（DBスキーマが1.9.9用のものをダンプで流し込んだので当たり前）
testlink-1.9.12/READMEに以下が書いてあるので従う

> - Upgrade from 1.9.9 to 1.9.10
> WARNING: if you are using a table prefix replace /\*prefix*/ with your prefix
> a) Execute install/sql/alter_tables/1.9.10/\<your_db>/DB.1.9.10/step1/db_schema_update.sql
> b) Execute install/sql/alter_tables/1.9.10/\<your_db>/DB.1.9.10/stepZ/z_final_step.sql
> 
> - Upgrade from 1.9.10 to 1.9.11
> WARNING: if you are using a table prefix replace /\*prefix*/ with your prefix
> a) Execute install/sql/alter_tables/1.9.11/\<your_db>/DB.1.9.11/step1/db_schema_update.sql
> b) Execute install/sql/alter_tables/1.9.11/\<your_db>/DB.1.9.11/stepZ/z_final_step.sql
> 
> - Upgrade from 1.9.11 to 1.9.12
> WARNING: if you are using a table prefix replace /\*prefix*/ with your prefix
> a) Execute install/sql/alter_tables/1.9.12/\<your_db>/DB.1.9.12/step1/db_schema_update.sql
> b) Execute install/sql/alter_tables/1.9.12/\<your_db>/DB.1.9.12/stepZ/z_final_step.sql

以下の内容で実行

> \# cd /var/www/testlink-1.9.12
> \# mysql -u root -p testlink1912 < install/sql/alter_tables/1.9.10/mysql/DB.1.9.10/step1/db_schema_update.sql
> \# mysql -u root -p testlink1912 < install/sql/alter_tables/1.9.10/mysql/DB.1.9.10/stepZ/z_final_step.sql
> \# mysql -u root -p testlink1912 < install/sql/alter_tables/1.9.11/mysql/DB.1.9.11/step1/db_schema_update.sql
> \# mysql -u root -p testlink1912 < install/sql/alter_tables/1.9.11/mysql/DB.1.9.11/stepZ/z_final_step.sql
> \# mysql -u root -p testlink1912 < install/sql/alter_tables/1.9.12/mysql/DB.1.9.12/step1/db_schema_update.sql
> \# mysql -u root -p testlink1912 < install/sql/alter_tables/1.9.12/mysql/DB.1.9.12/stepZ/z_final_step.sql

1.9.10の２つはパスが見つからない。
db_schema_update.sql　ではなく　db_data_update.sql　が正しい模様なのでやり直す。
（これをしないとrightsテーブルに権限が正しく追加されないので注意）
1.9.10のz_final_step.sqlは存在しない状態で正しい模様（今のところ問題がおきていないので）

> \# mysql -u root -p testlink1912 < install/sql/alter_tables/1.9.10/mysql/DB.1.9.10/step1/db_data_update.sql

ローカルマシンで、 http://サーバ名/testlink-test/ にアクセス

> Unknown Schema version DB 1.9.9, please upgrade your Testlink Database to DB 1.9.12

のエラーがなくなっていることを確認

### 設定ファイル

ローカルマシンで、 http://サーバ名/testlink-test/ にアクセス

> There are security warnings for your consideration. See details on file: /var/testlink/logs/config_check.txt. To disable any reference to these checkings, set $tlCfg->config_check_warning_mode = 'SILENT';

警告が出る。

> \# vi /var/testlink/logs/config_check.txt
> 
> Install directory should be removed! following parameters of email feature:
> tl_admin_email
> from_email
> return_path_email
> smtp_host

とのこと。インストールフォルダの削除はいったん後回し。Emailの設定等を行うことに。

> \# cp /var/www/testlink-1.9.12/custom_config.inc.php.example /var/www/testlink-1.9.12/custom_config.inc.php

サンプルをコピーしてcustom_config.inc.phpを作成。

> \# vi /var/www/testlink-1.9.12/custom_config.inc.php

編集

> $g_smtp_host        = 'smtpサーバアドレス';  # SMTP server MUST BE configured
> $g_tl_admin_email     = '管理者メールアドレス'; # for problem/error notification
> $g_from_email         = 'fromに設定するメールアドレス';  # email sender
> $g_return_path_email  = 'return pathに設定するメールアドレス';
> $g_mail_priority = 0;
> $g_smtp_username    = 'smtpユーザ名';  # user
> $g_smtp_password    = 'smtpパスワード';  # password
> $g_smtp_connection_mode = '';
> $g_smtp_port = 587;

この辺を書き換えてメールの設定を行う

> $tlCfg->results['status_code'] = array (
>         'failed'        => 'f',
>         'blocked'       => 'b',
>         'passed'        => 'p',
>         'not_run'       => 'n',
> //      'not_available' => 'x',
> //      'unknown'       => 'u',
> //      'all'           => 'a',
>         'my_status'     => 'm'
> );
> 
> 
> $tlCfg->results['status_label'] = array(
>         'not_run'       => 'test_status_not_run',
>         'passed'        => 'test_status_passed',
>         'failed'        => 'test_status_failed',
>         'blocked'       => 'test_status_blocked',
>         'my_status'     => 'test_status_my_status'
> ////    'all'           => 'test_status_all_status',
> ////    'not_available' => 'test_status_not_available',
> ////    'unknown'       => 'test_status_unknown'
> );
> 
> $tlCfg->results['status_label_for_exec_ui'] = array(
>         'not_run'   => 'test_status_not_run',
>         'passed'    => 'test_status_passed',
>         'failed'    => 'test_status_failed',
>         'blocked'   => 'test_status_blocked',
>         'my_status' => 'test_status_my_status'
> );
> 
> $tlCfg->results['default_status'] = 'not_run';
> //
> $tlCfg->results['charts']['status_colour'] = array(
>         'not_run'   => '000000',
>         'passed'    => '006400',
>         'failed'    => 'B22222',
>         'blocked'   => '00008B',
>         'my_status' => 'FF8C11'
> );

この辺を書き換えて、「みなしOK」のステータスを追加する
allのステータスを有効にしようとするとエラーが出るので注意。デフォルトのnot_run、passed、failed、blockedに加えて、 my_status を有効にする形

> $tlCfg->default_language = 'ja_JP';
> $tlCfg->charset = 'UTF-8';
> $tlCfg->config_check_warning_mode = 'SILENT';
> $tlCfg->charts_font_path = "/usr/share/fonts/ipa-gothic/ipag.ttf";

この辺はもともとの設定ファイルに該当箇所がないので追記している。
最下行はグラフの日本語文字化けを回避するためにフォントファイルを指定。

custom_config.inc.phpの編集を終了

> \# cp /var/www/testlink-1.9.12/locale/ja_JP/custom_strings.txt.example /var/www/testlink-1.9.12/locale/ja_JP/custom_strings.txt

my_status を「みなしOK」の文言で表示するために「custom_strings.txt」を作成

> \# vi /var/www/testlink-1.9.12/locale/ja_JP/custom_strings.txt

> $TLS_test_status_my_status = "みなしOK";

に編集して保存
cssを編集してみなしOKがオレンジ色で表示されるようにする。
custom.css.example にその内容が書いてあるが、これの名称をcustom.cssに変えても読み込まれない。
cssファイル名を指定している箇所を特定するのが面倒なので、大元のtestlink.cssに埋め込んでしまおう。

> \# cd /var/www/testlink-1.9.12/gui/themes/default/css
> \# mv testlink.css testlink.css.original
> \# cat testlink.css.original custom.css.example > testlink.css

元ファイルをリネームして cat で連結。
ローカルマシンで、 http://サーバ名/testlink-test/ にアクセス
問題なし。

### 本番用のアドレスに変更

> \# cd /var/www

/var/www フォルダに移動

> \# rm testlink

これは1.9.9のころのシンボリックリンクを削除している

> \# ls -s testlink-1.9.12 testlink

1.9.12用のシンボリックリンクを作る

> \# service httpd restart

httpdを再起動
ローカルマシンで、 http://サーバ名/testlink/ にアクセスして確認。完了。