CentOS Stram 9 に TestLink を導入

特に意味は無いが、CentOS Stream 9 に TestLink の導入を試みてみる。

# 導入先OSのバージョン
```bash
$ uname -r
5.14.0-319.el9.x86_64
$ cat /etc/redhat-release 
CentOS Stream release 9
```

# 動かすTestLinkのソース
- https://github.com/TestLinkOpenSourceTRMS/testlink-code.git
- ブランチ名:2.0.0-20220827-PHP8.1 

# TestLink と httpの導入
```bash
$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
$ sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
$ sudo dnf install -y httpd git php82
$ sudo firewall-cmd --permanent --add-service=http
$ sudo systemctl start httpd
$ sudo systemctl start php82-php-fpm
$ sudo dnf install -y git
$ sudo git clone it clone https://github.com/TestLinkOpenSourceTRMS/testlink-code.git -b 2.0.0-20220827-PHP8.1 /var/www/html/testlink
```
# ブラウザでアクセス
```
http://localhost/testlink/
```
![スクリーンショット 2023-10-21 22.33.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/6bfa9b36-146b-02b0-8946-ac98bf8ed04e.png)
「New Installation」を選択
![スクリーンショット 2023-10-21 22.34.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/ead9e9c2-e002-8bbd-6ffd-a3672ac33cfb.png)
「I agree to〜」をチェックし「Continue」を押下。
![スクリーンショット 2023-10-21 22.36.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/ef888a4e-c1e1-9920-63c3-28503b043c8f.png)
![スクリーンショット 2023-10-21 22.39.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/7e57c3d2-9df7-58fe-82e5-f26a2c667d7a.png)
いくつかエラーが出て次に進めず。
# Read/write permissionsについて解消していく
- /var/www/html/testlink/gui/templates_c directory パーミッションを設定する必要がありそう。
- /var/testlink/logs/ directory ディレクトリを作成する必要がありそう。
- /var/testlink/upload_area/ ディレクトリを作成する必要がありそう。
```
$ sudo chown -R apache:apache /var/www/html/testlink
$ sudo /usr/sbin/semanage fcontext -a -t httpd_sys_rw_content_t /var/www/html/testlink/gui/templates_c
$ sudo /sbin/restorecon -R /var/www/html/testlink/gui/templates_c
```
# DBの導入
- MySQL/Mariadb/PostgresqlいずれかのDBが必要そう
```bash
$ yum install -y postgresql-server
$ postgresql-setup initdb
$ systemctl start postgresql
$ yum install -y php82-php-pgsql
```
# 再度チェック画面
![スクリーンショット 2023-10-21 23.13.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/a1569d61-e8b1-90ef-977e-ac6a72c15a77.png)
![スクリーンショット 2023-10-21 23.14.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/e9a2fcc7-50cb-e7b7-15fa-18b897074abc.png)
# DB接続で何かエラーが発生
![スクリーンショット 2023-10-21 23.15.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/ca90772c-a667-006b-8107-ceebd489633f.png)
# selinux関連のエラー？
```
type=AVC msg=audit(1697897966.028:124): avc:  denied  { name_connect } for  pid=2887 comm="php-fpm" dest=5432 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:postgresql_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1697897966.028:124): arch=c000003e syscall=42 success=no exit=-13 a0=7 a1=5650e11b4630 a2=1c a3=7ffecfae3320 items=0 ppid=2885 pid=2887 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/opt/remi/php82/root/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)ARCH=x86_64 SYSCALL=connect AUID="unset" UID="apache" GID="apache" EUID="apache" SUID="apache" FSUID="apache" EGID="apache" SGID="apache" FSGID="apache"
type=PROCTITLE msg=audit(1697897966.028:124): proctitle=7068702D66706D3A20706F6F6C20777777
type=AVC msg=audit(1697897966.028:125): avc:  denied  { name_connect } for  pid=2887 comm="php-fpm" dest=5432 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:postgresql_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1697897966.028:125): arch=c000003e syscall=42 success=no exit=-13 a0=7 a1=5650e110feb0 a2=10 a3=7ffecfae3320 items=0 ppid=2885 pid=2887 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/opt/remi/php82/root/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)ARCH=x86_64 SYSCALL=connect AUID="unset" UID="apache" GID="apache" EUID="apache" SUID="apache" FSUID="apache" EGID="apache" SGID="apache" FSGID="apache"
type=PROCTITLE msg=audit(1697897966.028:125): proctitle=7068702D66706D3A20706F6F6C20777777
```

```
$ getsebool -a | grep "httpd_can_network_connect "
httpd_can_network_connect --> off
$ setsebool -P httpd_can_network_connect 1
$ getsebool -a | grep "httpd_can_network_connect "
httpd_can_network_connect --> on
```
/var/log/audit/audit.logのエラー出力は無くなったが、画面のFailedは変わらず。
```bash
$ tail -f /var/lib/pgsql/data/log/postgresql-Sat.log 
2023-10-21 23:39:01.362 JST [3258] LOG:  アドレス"::1"、ポート113のIdentサーバに接続できませんでした: 接続を拒否されました
2023-10-21 23:39:01.362 JST [3258] FATAL:  ユーザ"root"のIdent認証に失敗しました
2023-10-21 23:39:01.362 JST [3258] 詳細:  接続はpg_hba.confの行88に一致しました: "host    all             all             ::1/128                 ident"
^C
```
idnet認証からpassword認証に変更
```bash
#/var/lib/pgsql/data/pg_hba.conf
host    all             all             ::1/128                 ident
↓
host    all             all             ::1/128                 password
$ sudo systemctl restart postgres
```
# 色々と調べてみたが結局うまくいかず。
php81に入れ替えても同様。以下のURLでもうまくいかないスレッドを見つけた。php/postgresのバージョンがサポートされていないということなのだろうか。スレッドにはPHP8がまだサポートされないと記載がある。1.9.20はPHP8をサポートしないが、今回のブランチはPHP8.1で動作するのかと思ったが違うのか。postgresは一度諦めてMySQLかMariaDBで導入を続けてみる。
- PHP Version 8.2.11
- postgresql-server-13.11-1.el9.x86_64
- 2.0.0-20220827-PHP8.1

https://stackoverflow.com/questions/75692527/attempt-to-install-testlink-with-postgres

```bash
# /var/opt/remi/php81/log/php-fpm/www-error.log 
[22-Oct-2023 19:09:34 UTC] PHP Fatal error:  Uncaught TypeError: pg_close(): Argument #1 ($connection) must be of type ?PgSql\Connection, bool given in /var/www/html/testlink/vendor/adodb/adodb-php/drivers/adodb-postgres64.inc.php:903
Stack trace:
#0 /var/www/html/testlink/vendor/adodb/adodb-php/drivers/adodb-postgres64.inc.php(903): pg_close()
#1 /var/www/html/testlink/vendor/adodb/adodb-php/adodb.inc.php(2901): ADODB_postgres64->_close()
#2 /var/www/html/testlink/lib/functions/database.class.php(490): ADOConnection->Close()
#3 /var/www/html/testlink/install/installNewDB.php(240): database->close()
#4 {main}
  thrown in /var/www/html/testlink/vendor/adodb/adodb-php/drivers/adodb-postgres64.inc.php on line 903
```
![スクリーンショット 2023-10-23 4.18.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/c21e0e02-4101-6b9c-82aa-84cdabfe0024.png)