【2019年版】Docker Bitnami/TestLink を設定する

##TestLink を設定する

### 1. TestLink のコンテナにログインする
####docker ps で TestLink のコンテナIDを探す

 ```bash:ローカルPC
 $ docker ps -a
 ```


####TestLink のコンテナにログインする

 ```bash:ローカルPC
 $ docker exec -it コンテナID /bin/bash
 ```
>注： docker exec だと、/bin/bash プロセスを起動させて標準入出力を行う。仮にログインしたコンテナを exit しても、起動させた /bin/bash プロセスだけが終了して、コンテナは停止しない。類似コマンドの、docker attach は、ログインしたコンテナで exit するとコンテナが終了する
参考： [Docker・コンテナの確認と接続(ps, attach, execコマンド)](http://www.ajisaba.net/develop/docker/docker_attach.html)
参考： [Dockerコンテナ内で操作 attachとexecの違い](http://qiita.com/RyoMa_0923/items/9b5d2c4a97205692a560)

####参考：ログインしたコンテナからログアウト（終了）する

```bash:コンテナ
$ exit
```

### 2. TestLink を設定するためにVimをインストール

####TestLink のコンテナにログインする

 ```bash:ローカルPC
 $ docker exec -it コンテナID /bin/bash
 ```


####このコンテナに Vim と Git をインストールする

```bash:コンテナ
# debian バージョン確認
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

# パッケージダウンロードで利用するミラーサイトを日本のCDNサーバに変更して、リポジトリを追加する
$ cat <<- eof > /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian/ stretch main contrib non-free
deb http://ftp.jp.debian.org/debian/ stretch-updates main contrib
deb http://ftp.jp.debian.org/debian/ stretch-backports main contrib non-free
#deb-src http://ftp.jp.debian.org/debian/ stretch main contrib non-free
#deb-src http://ftp.jp.debian.org/debian/ stretch-updates main contrib
#deb-src http://ftp.jp.debian.org/debian/ stretch-backports main contrib non-free
eof

# apt コマンドの実行
$ apt update
$ apt upgrade
$ apt install vim-gnome git
```

####Vim のカラースキームをダウンロードして設定する

```bash:コンテナ
$ mkdir -p ~/.vim/colors
$ mkdir -p ~/temp/molokai
$ git clone https://github.com/tomasr/molokai ~/temp/molokai
$ mv ~/temp/molokai/colors/molokai.vim ~/.vim/colors/
$ rm -rf ~/temp
```
####catコマンドで .vimrc ファイルを設置、カラースキームと日本語対応とクリップボードを有効にする

```bash:.vimrc
$ cat <<- eof > ~/.vimrc
syntax on
colorscheme molokai
set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
set fileformats=unix,dos,mac
set clipboard=unnamed,autoselect
eof

#Vim が設定できているか確認する
$ vim ~/.vimrc
```


### 3. apachectl restart のエラーメッセージ対策をする
**エラーメッセージ：
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using IP address. Set the 'ServerName' directive globally to suppress this message**

####TestLink のコンテナにログインする

```bash:
$ docker exec -it コンテナID /bin/bash
```

####httpd プロセスを確認する

```bash:
$ ps aux | grep httpd
```
####vim で httpd.conf を編集する

```bash:
$ vim /opt/bitnami/apache/conf/httpd.conf
```

####httpd.conf の ServerName 行をコメントアウトする

```bash:
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName www.example.com:80
```

####編集した httpd.conf の設定を反映するために Apache を再起動する

```bash:
$ /opt/bitnami/apache/bin/apachectl restart
```



### 4. タイムゾーンの修正をする
TeskLink は PHP のタイムゾーンを引用する仕様なので php.ini のデフォルトタイムゾーンを変更する

####TestLink のコンテナにログインする

```bash:ローカルPC
$ docker exec -it コンテナID /bin/bash
```

####php.ini を探す

```bash:コンテナ
$ php --ini
Configuration File (php.ini) Path: /opt/bitnami/php/lib
Loaded Configuration File:         /opt/bitnami/php/lib/php.ini
Scan for additional .ini files in: /opt/bitnami/php/etc/conf.d
Additional .ini files parsed:      (none)
```

####php.ini を Vim で編集する

```bash:コンテナ
$ vim /opt/bitnami/php/lib/php.ini
```


####php.ini の最終行付近にある date.timezone = "Asia/Tokyo" にする

```php:php.ini
; Local Variables:
; tab-width: 4
; End:
upload_max_filesize = 40M
post_max_size = 40M
extension_dir = /opt/bitnami/php/lib/php/extensions
;date.timezone = UTC
date.timezone = "Asia/Tokyo"
zend_extension = opcache.so
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1
opcache.interned_strings_buffer = 16
opcache.memory_consumption = 192
opcache.file_cache = /opt/bitnami/php/tmp/opcache_file
```

####PHP のタイムゾーンが Asia/Tokyo になったことを確認する

```bash:コンテナ
$ php -i | grep timezone
Default timezone => Asia/Tokyo
date.timezone => Asia/Tokyo => Asia/Tokyo
```

####編集した php.ini の設定を反映するために Apache を再起動する

```bash:コンテナ
$ /opt/bitnami/apache/bin/apachectl restart
```


### 5. TestLink > レポートメトリクス　のレポートに会社のロゴマークを入れる

設定方法は2種類あるのでお好きな方で……

####設定方法その１：ローカル環境から TestLink の指定ディレクトリにコピーする

```bash:ローカルPC
$ cd ~/logo
$ ls
logo.png
$ docker cp ./logo.png コンテナID:/opt/bitnami/testlink/gui/themes/default/images
```

####設定方法その２：ウェブのロゴマークを TestLink の指定ディレクトリに wget する

####TestLink のコンテナにログインする

 ```bash:ローカルPC
 $ docker exec -it コンテナID /bin/bash
 ```

####wget をインストールする

```bash:コンテナ
$ apt update
$ apt upgrade
$ apt install wget
```

####TestLink の指定ディレクトリにロゴマークを追加する

```bash:コンテナ
$ cd /opt/bitnami/testlink/gui/themes/default/images
$ wget http://hogehoge.co.jp/logo/logo.png
```

####Vim で custom_config.inc.php を開く

```bash:コンテナ
$ vim /bitnami/testlink/custom_config.inc.php
```

####custom_config.inc.php に以下の内容を追記する

```php:custom_config.inc.php
//レポートで表示される TestLink ロゴを自社ロゴに変更する
$tlCfg->document_generator->company_logo = 'logo.png';

//ロゴマークの高さを指定する
$tlCfg->document_generator->company_logo_height = '50';
```

### 6. TestLink > レポートメトリクス > グラフ > グラフによるレポート の文字化けを解消する

####TestLink のコンテナにログインする

 ```bash:
 $ docker exec -it コンテナID /bin/bash
 ```
####wget と unzip と fc-cache をインストールする

```bash:
$ apt update
$ apt upgrade
$ apt install wget unzip fontconfig
```

####システムフォントに IPA P ゴシック(Ver.003.03)を追加する

```bash:
$ cd /usr/share/fonts/truetype
$ wget https://ipafont.ipa.go.jp/IPAfont/ipagp00303.zip
$ unzip ipagp00303.zip
$ rm -fr ipagp00303.zip
```

####システムフォントのキャッシュをクリアする

```bash:
$ fc-cache -fv
```

####custom_config.inc.php に以下の内容を追記する

```bash:
//グラフのレポートのシステムフォントを IPA P ゴシック(Ver.003.03)に設定する
$tlCfg->charts_font_path = "/usr/share/fonts/truetype/ipagp00303/ipagp.ttf";
```

### 7. Bad Request エラーの対策をする

**エラーメッセージ：
Bad Request
Your browser sent a request that this server coulud not understand.
Size of a request header field exceeds server limit.**


TestLink の Cookie の一部が通常の HTTP ヘッダーサイズを超えてエラーになる。対策として HTTP ヘッダサイズ（初期値：8K）を緩和した Apache サーバ構成にする


####TestLink のコンテナにログインする

```bash:
$ docker exec -it コンテナID /bin/bash
```

####httpd プロセスを確認する

```bash:
$ ps aux | grep httpd
```
####vim で httpd.conf を編集する

```bash:
$ vim /opt/bitnami/apache/conf/httpd.conf
```

####httpd.conf の最終行に以下を追加する

```bash:
LimitRequestFieldsize 1048576
```

####編集した httpd.conf の設定を反映するために Apache を再起動する

```bash:
$ /opt/bitnami/apache/bin/apachectl restart
```

### 8. Upload ファイルサイズを拡大する
TeskLink のテストケースなどをアップロードする場合に、ファイルサイズが大きすぎて読み込まないエラーの対策。custom_config.inc.php と php.ini の設定を変更する。

####TestLink のコンテナにログインする

```bash:
$ docker exec -it コンテナID /bin/bash
```

####Vim で custom_config.inc.php を開く

```bash:
$ vim /bitnami/testlink/custom_config.inc.php
```
####custom_config.inc.php に以下の設定を記述する 

```bash:
<?php

// アップロードするファイルサイズ上限を拡大する
// ただし(多くの場合のPHPデフォルト値の)２MBを超える場合は、
// 同時に php.ini の upload_max_filesize の設定も変更する。
$tlCfg->import_max_size = '100000000'; // in bytes
$tlCfg->repository_max_filesize = 100; //MB

?>
```

####Vim で php.ini を編集する

```bash:
$ vim /opt/bitnami/php/lib/php.ini
```

####php.ini の最終行付近にある以下のサイズを拡大する

```bash:
upload_max_filesize = 100M
post_max_size = 100M
```

####編集した php.ini の設定を反映するために Apache を再起動する

```bash:
$ /opt/bitnami/apache/bin/apachectl restart
```

###9. 参考：最終的な custom_config.inc.php の設定例 

```bash:
<?php

// 参考資料： TestLink インストールマニュアルや、各種設定ドキュメントは、
// /opt/bitnami/testlink/docs 配下に存在する

// path設定
$tlCfg->log_path = '/opt/bitnami/testlink/logs/';
$g_repositoryPath = '/opt/bitnami/testlink/upload_area/';

// TestLinkセキュリティ上の弱点が存在する場合に警告する方法は、
//  * 'SCREEN'：ログイン画面にメッセージを表示する（デフォルト）
//  * 'FILE'：警告ファイルを作成、ログイン画面にメッセージを表示する。
//  * 'SILENT'：警告ファイルを作成、ログイン画面にメッセージを表示しない。
$tlCfg->config_check_warning_mode = 'SCREEN';

// smtp設定
$g_smtp_host = 'smtp.gmail.com';
$g_tl_admin_email = 'mymailaddress@gmail.com';
$g_from_email = 'mymailaddress@gmail.com';
$g_return_path_email = 'mymailaddress@gmail.com';
$g_smtp_username = 'mymailaddress@gmail.com';
$g_smtp_password = 'mymailpassword12345678';
$g_smtp_port = '587';
$g_smtp_connection_mode = 'tls';

// デフォルト言語を日本語にする
$tlCfg->default_language = 'ja_JP';

// レポートで表示される TestLink ロゴを自社ロゴに変更する
$tlCfg->document_generator->company_logo = 'logo.png';

// ロゴマークの高さを指定する
$tlCfg->document_generator->company_logo_height = '50';

// グラフのレポートのシステムフォントを IPA P ゴシック(Ver.003.03)に設定する
$tlCfg->charts_font_path = "/usr/share/fonts/truetype/ipagp00303/ipagp.ttf";

// TestLink にアップロードするファイルサイズ制限を拡大する。ただし(多くの場合のPHPデフォルト値の)２MBを超える場合は、同時に php.ini の upload_max_filesize の設定も変更すること
$tlCfg->import_max_size = '100000000'; // in bytes
$tlCfg->repository_max_filesize = 100; //MB

// レポートとメトリクスで表示される会社名を設定する
$tlCfg->document_generator->company_name = '自社名';
$tlCfg->document_generator->company_copyright = 'Copyright© ' . date('Y') . '自社名';
$tlCfg->document_generator->confidential_msg = '本資料は、自社名の許可無く対外的に参照・配布しないようお願い申し上げます。';

// 実行済みのテストケースの編集を可能にする
$tlCfg->testcase_cfg->can_edit_executed = ENABLED;

// 実行済みのテストケースの削除不可にする(初期値：削除可能)
$tlCfg->testcase_cfg->can_remove_executed = DISABLED;

// ユーザをテストケースにアサインしなくても、テスト実行およびレポートを出力する
$tlCfg->exec_cfg->exec_mode->tester='all';

// テスト実行時にアサインに関わらず、テストケースを全て表示する
$tlCfg->exec_cfg->user_filter_default='none';

// テストの実行で、実行履歴を表示する
$tlCfg->exec_cfg->history_on = TRUE;

// sessionInactivityTimeoutを延長する
$tlCfg->sessionInactivityTimeout = 86400;

// 管理者による新規アカウント登録に限定する
$tlCfg->user_self_signup = FALSE;

?>
```
>#####参考資料
>注１： Google アカウントのセキュリティ設定で、安全性の低いアプリへのアクセスを有効にする。有効にしないと TestLink のメール送信が失敗するので注意する
参考：[Google マイアカウント](https://myaccount.google.com/lesssecureapps)

>注2： TestLink のログイン画面トップの警告は、各種設定をすれば消せる　
参考：[TestLinkの警告にちゃんと対応する](http://symfoware.blog68.fc2.com/blog-entry-441.html)



###以上