Amazon Linux 2にPHP7.3とPostgreSQL12をインストールする

#はじめに
Amazon Linuxのリポジトリは古いバージョンのパッケージしかないので、これから開発を始めようとする場合、新しいバージョンのパッケージをインストールする必要が出てくると思います。
PHPとPoatgreSQLを新しいバージョンのパッケージをインストールした際にやった事を忘備録としてメモします。

そのうちDokerFileも書こうと思います。

##パッケージでインストール
Amazon Linux 2にPHPをインストールをする場合はamazon-linux-extrasが利用できます。
Amazon Linux 1を使いたい場合はremiを使う事になります。
PostgreSQLのインストールにはPostgreSQL本家サイトで用意されているパッケージを利用します。

```
## Amazon Linux 2 の場合
amazon-linux-extras install php7.3
yum install -y  php-devel
yum install -y  php-gd
yum install -y  php-intl
yum install -y  php-json
yum install -y  php-mbstring
yum install -y  php-mcrypt
yum install -y  php-pdo
yum install -y  php-pgsql
```

```
## Amazon Linux 1 の場合
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh ./remi-release-7.rpm
sed -i '4a priority=1' /etc/yum.repos.d/remi-php71.repo
yum install -y --enablerepo=remi-php71 php
yum install -y --enablerepo=remi-php71 php-devel
yum install -y --enablerepo=remi-php71 php-gd
yum install -y --enablerepo=remi-php71 php-intl
yum install -y --enablerepo=remi-php71 php-mbstring
yum install -y --enablerepo=remi-php71 php-mcrypt
yum install -y --enablerepo=remi-php71 php-pdo
yum install -y --enablerepo=remi-php71 php-pear
yum install -y --enablerepo=remi-php71 php-pgsql
```
composerのインストール方法はどちらも同じです。

```
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
```

PostgreSQL11以上はsystemedが必要なので、Amazon Linux 1には追加パッケージのインストールが必要です。

```
## Amazon Linux 2 の場合
rpm -ivh --nodeps https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sed -i "s/\$releasever/7/g" "/etc/yum.repos.d/pgdg-redhat-all.repo"
yum install -y postgresql12
yum install -y postgresql12-server
yum install -y postgresql12-contrib
```

```
## Amazon Linux 1 の場合
rpm -ivh --nodeps https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sed -i "s/\$releasever/7/g" "/etc/yum.repos.d/pgdg-redhat-all.repo"
yum install -y openssl-libs
yum install systemd
yum install systemd-libs
yum install systemd-sysv
yum install sysvinit-tools
yum install -y postgresql12
yum install -y postgresql12-server
yum install -y postgresql12-contrib
```

##インストール先の確認
何処に何がインストールされたのか、パッケージ名から探す手順。
例えばpostgresql12-serverパッケージでインストールされたファイルを確認するには、
まず、yumコマンドでインストールされたパッケージ名を確認します。

```
yum list [パッケージ]
```
![yum_list.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309509/834a3f98-a062-7638-14e9-2e4ce8c146c1.jpeg)
**postgresql12-server.x86_64**がインストールされたパッケージ名です。

次に、このパッケージでインストールされたファイル一覧を調べるにはrpmコマンドを使います。

```
rpm -ql [インストールパッケージ]
```
![rpm_ql.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309509/3aac0ede-c61e-d3fe-c462-7acebbb82549.jpeg)
こんな感じで、ぞろぞろ出てきます。
PosgtgreSQLの実行ファイルは**/usr/pgsql-12/bin/**の下にインストールされているようです。

##注意事項
・Amazon Linuxは仕様やリポジトリが突然変わりますので、環境を残したい場合は手順よりもAMIを取っておいた方が安全かもしれません。
・PostgreSQL12からシステムカタログのpg_attrdefからadsrcが削除されました。
[https://www.postgresql.org/docs/12/release-12.html](https://www.postgresql.org/docs/12/release-12.html)
その影響で、色々なDB管理ツールから繋がらなくなったという情報が散見されていますが、
**A5:SQL**では対応版([version 2.15.0 beta 28](https://a5m2.mmatsubara.com/beta/))が出ていますし、**pgAdmin4**では使えますので、お試しください。