updated on 2022-08-15
Amazon Linux 2
PostgreSQL 9
Ruby On Rails 5.2 -> 6.1へバージョンアップした際に、psotgresqlのバージョンを9.3以上にしなさいというエラーメッセージと共にunicornが起動しない事象が起きた。
よって、postgresqlを最新かすることにした。
EPEL YUM リポジトリに含まれていますが、Amazon Linux 2 ではデフォルトで有効になっていないため、手動でリポジトリを追加して有効にする必要があります。
Amazon Linux 2 に EPEL リポジトリをインストールするには、以下のコマンドを使用します。
$ sudo amazon-linux-extras install epel
次のコマンドを実行して、PGDGリポジトリがAmazon Linux 2サーバーに追加
- 64ビットCPUアーキテクチャのインスタンスの場合
sudo tee /etc/yum.repos.d/pgdg.repo<<EOF [pgdg14] name=PostgreSQL 14 for RHEL/CentOS 7 - x86_64 baseurl=http://download.postgresql.org/pub/repos/yum/14/redhat/rhel-7-x86_64 enabled=1 gpgcheck=0 EOF
- もしも、Graviton 2 (ARM64)のEC2インスタンスの場合はこちら
sudo tee /etc/yum.repos.d/pgdg.repo<<EOF [pgdg14] name=PostgreSQL 14 for RHEL/CentOS 7 - ARM64 baseurl=http://download.postgresql.org/pub/repos/yum/14/redhat/rhel-7-aarch64 enabled=1 gpgcheck=0 EOF
YUMパッケージインデックスの更新
$ sudo yum makecache
リポジトリを追加した後、Amazon Linux 2にPostgreSQL 14をインストールすることができます。
$ sudo yum install postgresql14 postgresql14-server
次に、postgresqlサービスを起動・有効化する前に、データベースの初期設定ファイルを生成します。
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb Initializing database ... OK
PostgreSQL 14サーバの主設定ファイルは、/var/lib/pgsql/14/data/postgresql.conf です。このファイルは、必要に応じて編集し、パラメータをカスタマイズすることができます。
次に、以下のコマンドを実行し、PostgreSQL 14 サービスを起動し、自動起動を有効にします。
$ sudo systemctl enable --now postgresql-14 Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-14.service to /usr/lib/systemd/system/postgresql-14.service.
起動したかどうかのステータス確認
$ systemctl status postgresql-14 ● postgresql-14.service - PostgreSQL 14 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2021-10-28 10:11:57 UTC; 48s ago Docs: https://www.postgresql.org/docs/14/static/ Process: 3075 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 3080 (postmaster) CGroup: /system.slice/postgresql-14.service ├─3080 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/ ├─3083 postgres: logger ├─3085 postgres: checkpointer ├─3086 postgres: background writer ├─3087 postgres: walwriter ├─3088 postgres: autovacuum launcher ├─3089 postgres: stats collector └─3090 postgres: logical replication launcher
# postgres でログインする。
su - postgres
# シェルの設定ファイルを開く
vi ~/.bash_profile
[ -f /etc/profile ] && source /etc/profile
PGDATA=/var/lib/pgsql/14/data
export PGDATA
# ここ一行追加
export PATH=/usr/pgsql-14/bin/:$PATH
# If you want to customize your settings,
# Use the file below. This is not overridden
# by the RPMS.
[ -f /var/lib/pgsql/.pgsql_profile ] && source /var/lib/pgsql/.pgsql_profile
source ~/.bash_profile
$ sudo su - postgres -bash-4.2$ psql -h localhost psql (14.5) Type "help" for help.
試しにデータベースを作ってみる
postgres=# CREATE DATABASE testdb; CREATE DATABASE postgres=# DROP DATABASE testdb; DROP DATABASE
デフォルトでは、サービスはlocalhostループバックインターフェースアドレスをリッスンします。
$ sudo ss -tunelp | grep 5432 tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* users:(("postmaster",pid=3080,fd=7)) uid:26 ino:25799 sk:b <-> tcp LISTEN 0 128 [::1]:5432 [::]:* users:(("postmaster",pid=3080,fd=6)) uid:26 ino:25798 sk:f v6only:1 <->
$ grep listen_addresses /var/lib/pgsql/14/data/postgresql.conf\r\n#listen_addresses = 'localhost' # what IP address(es) to listen on;
$ sudo vim /var/lib/pgsql/14/data/postgresql.conf\r\nlisten_addresses = '172.21.100.15'
リモート接続のための認証方法の更新が必要な場合があります。
$ sudo vim /var/lib/pgsql/14/data/pg_hba.conf
# local all all peer # 以下に変更(peer認証を取り除く) local all all md5
設定の反映
$ sudo systemctl restart postgresql-14
$ sudo ss -tunelp | grep 5432 tcp LISTEN 0 128 172.21.100.15:5432 0.0.0.0:* users:(("postmaster",pid=820,fd=6)) uid:26 ino:84686 sk:10 <->