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 [パッケージ]


postgresql12-server.x86_64がインストールされたパッケージ名です。

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

rpm -ql [インストールパッケージ]


こんな感じで、ぞろぞろ出てきます。
PosgtgreSQLの実行ファイルは/usr/pgsql-12/bin/の下にインストールされているようです。

注意事項

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