Bitnami Testlinkのバージョンアップ 

Bitnami Testlink の バージョンアップ について
僕はPMでもありテスターです。会社でTestlinkは僕のPJだけですが、
僕が採用してお客様に納品成果物としています。
2014年より採用して5年経過。定期的（1､2年毎）にバージョンアップしています。
phpベースでデザインもいまいちですが、僕的には慣れもありますし、愛着もあります。
但し、元の開発者（だぶんインドの人）が後継者を募集している所をみたりすると、
メジャーVerupはほど遠いかも。でもバージョンアップしていってますね。

以下はバージョンアップメモです。(1.9.16→1.9.19（2年経過してゆるやかなVerUp。。））
環境はWindows7（もうじきサポート終わりますね）windows10でも大丈夫だと思います。

#【①】bitnamiにアクセス 
https://bitnami.com/
カタログからwindows版のTestlinkをダウンロードする。

#【②】インストール
１）旧サービス停止
C：¥BitNami¥testlink-1.x.xx¥manager-windows.exe （旧ver）を起動して全てのサービスを停止する。
２）インストーラ起動
ダウンロードしたexeを起動する。
以下は留意事項
・言語を「English」でインストール。
・管理者のユーザとパスワードは控える。
・ホート番号を設定
僕の会社の環境ではredmineと共存しているので以下とする。
apache : 8080 
ssl : 2443 
MySQL : 3356 
３）確認
インストール終了後、アクセス できることを確認する。
http://127.0.0.1:8080/testlink/login.php

#【③】データ移行
１）バックアップしたＤＢのVerが同じであれば、通常のリカバリーで良いですが、
　スキーマが違うと怒られます。
　Bitnamiでない、本家のサイトではスキーマコンバートのスクリプトが用意されています(Readmeに記載）
　Bitnamiではうまくいきません。（Readmeに記載無）
　以下の手順で移行します。
　C:¥BitNami¥testlink-1.x.xx¥manager-windows.exe （新Ver）で
　phpmyadmin を起動して、テーブル内容を控えます。（ハードコピーとか）
　その後、すべてのサービスを停止します。

２）C:¥BitNami¥testlink-1.x.xx¥manager-windows.exe （旧ver）を起動し、
　全てのサービスを立ち上げます。
　phpmyadmin を起動して、テーブル内容を控えます。（ハードコピーとか）

３）同件数以外のものをphpmyadminからデータのみエクスポートします。
※新しくできたテーブルはありますが、無視します。
　今までのVerUpの経験上問題名無と思っています。
　あまり古いVerからのVerupだとテーブルのカラムが追加されたりしていると思いますので、
　エクスポートデータを加工する必要があるかも。。。（過去に苦労した経験あったかも。。覚えてない。）

古いですが　以下@bamchohさんの記事でテーブル構成がある程度わかります。
https://qiita.com/bamchoh/items/aeee48b2fff08f752d31

４）C:¥BitNami¥testlink-1.x.xx¥manager-windows.exe （旧ver）を起動し、
　サービスをすべて停止します。

５）C:¥BitNami¥testlink-1.x.xx¥manager-windows.exe （新Ver）を起動し、
　サービスをすべて起動します。

６）phpmyadmin を起動して、エクスポートしたデータをインポートします。

#【④】確認
http://127.0.0.1:8080/testlink/login.php
にて　過去のテスト結果がちゃんと移行されているか確認する。

#【⑤】メール設定省略
いちいちメールを飛ばすのは、ナンセンスと僕は思っており、以下を設定する。
config.inc.php の 編集 
C:¥BitNami¥testlink-1.X.XX¥testlink¥htdocs  
以下記述変更
１）警告もみ消し

``` 
$tlCfg->config_check_warning_mode = ‘SCREEN’;
　↓
$tlCfg->config_check_warning_mode = ‘SILENT’;
```

２）メール設定無

```
$g_smtp_host    = ''; # SMTP server MUST BE configured 
↓
g_smtp_host    = '[smtp_host_not_configured]'; # SMTP server MUST BE configured

$g_mail_priority = 5;
↓
$g_mail_priority = 0;
```

#【⑥】会社名を表紙タイトルとする設定
config.inc.php の 編集 
C:¥BitNami¥testlink-1.X.XX¥testlink¥htdocs  
以下記述変更

```
$tlCfg->document_generatr->company_name = ' TestLink Community [configure $tlCfg->document_generator->company_name]'; 
↓ 
$tlCfg->document_generator->company_name = ' xxxxxx(会社名） Co.,Ltd.': 

$tlCfg->document_generator->company_copyright = ' 20xx ficopy; TestLink Community';
↓ 
$tlCfg->document_generator->company_copyright = ' ';
```

#【⑦】タイムゾーン設定
php.ini の 編集 
C:¥BitNami¥testlink-1.x.xx¥php
 
```
[Date] 
; Defines the default timezone used by the date functions 
; http://php. net/date. timezone 
date, timezone = " America/Los_Angeles"
↓ 
date, timezone = "Asia/Tokyo"
```

#【⑧】アップロードファイルのコピー
以下　旧verから新Verにコピー
C¥BitNami¥testlink-1.x.xx¥apps¥teslnk¥htdocs¥upload_area

#【⑨】旧Verのアンインストール
新Ver運用で問題なければ旧Verのアンインストール 

#■通常運用　バックアップ、リカバリー■
通常運用では以下バックアップ、何かあった時に再インストールしてリカバリー
MysqlのVerが同じことが前提
バッチファイルとか作成して運用
■バックアップコマンドサンプル
【ＤＢ】

```
C¥BitNami¥testlink-1.x.xx¥mysql¥bin¥mysqldump --user=root --password=XXXXXXXX --port=3356 bitnami_testlink > e:¥backup¥testlink_mysql.dmp
```

【関連ファイル】

```
xcopy C:¥BitNami¥testlink-X.X.X¥apps¥testlink¥htdocs¥upload_area e:¥backup¥testlinkfiles¥ /D /S /E /H /C /Y /R >> e:¥backup¥Testlink_backup.log
```

■リカバリコマンドサンプル

```
C:¥BitNami¥testlink-X.X.X¥mysql¥bin¥mysql --user=root --password=XXXXXXXX --port=3356 bitnami_testlink < e:¥backup¥testlink_mysql.dmp
```

関連ファイルは旧Verフォルダからコピペしても良いし、バックアップからコピーしても良いです。

■■ＭｙSqlチューニング■■
旧Ver1.9.16より遅くなった感じがする。
以下でチューニングを試みました。　幾分早くなった感じ。
以下を設定しています。あくまで導入環境でチューニングして下さい。
■Testlink Mysql設定 
C:¥BitNami¥testlink-X.X.X¥mysql¥my.ini
僕の環境では以下を追加しています。

```
   innodb_buffer_pool_size=3G
   read_buffer_size=256K
   sort_buffer_size=256K
   innodb_file_per_table=ON
```

■設定説明
innodb_buffer_pool_size
  InnoDBのバッファプールサイズ指定。物理メモリの7-8割程度を割り当てる。

sort_buffer_size
  ソート処理に利用するバッファ。

read_buffer_size
　全件スキャンをするときに利用するバッファ。

innodb_file_per_table=ON
  InnoDBの場合、データファイル、ログファイルがストレージ上に作成される。
   データファイルの管理方法には2通りあります。「共有領域」で管理する方法と、「テーブル個別領域」で管理する方法がある。
  共有領域
    全テーブルを一括で管理する領域。1つのテーブルの1レコードの変更でも、領域全体に更新がかかる。
  テーブル個別領域
    テーブルを１つずつ個別に管理する領域。更新対象のテーブルの領域にのみ、更新がかかる。

以上