BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【PostgreSQL】インターネット接続の無いEC2環境にPostgreSQL13をインストールする方法

はじめに

こんにちは!、BFT名古屋支店のヤタテです。
今回は、インターネット接続が無いEC2環境(RHEL7)でPostgreSQL13をインストールする方法をお伝えします。

本番環境とかって、セキュリティの問題で外部ネットワークに出られないとかよくありますよね。
今回はそういった場合を想定して、PostgreSQL13に必要な依存パッケージを全部ダウンロード してインストールしました。

インターネット接続がありyumが使える場合はこちらの方法を参照してください。
bftnagoya.hateblo.jp

①まず最初に必要なパッケージを全てダウンロードします

RPM Find等を使ってひたすらダウンロードします。
https://rpmfind.net/linux/RPM/index.html

必要なパッケージは以下のとおりです。

<PostgreSQL13本体>
postgresql13-13.3-1PGDG.rhel7.x86_64.rpm
postgresql13-contrib-13.3-1PGDG.rhel7.x86_64.rpm
postgresql13-libs-13.3-1PGDG.rhel7.x86_64.rpm
postgresql13-server-13.3-1PGDG.rhel7.x86_64.rpm
<glibc関連>
glibc-2.17-317.el7.x86_64.rpm
glibc-common-2.17-317.el7.x86_64.rpm

glibc-2.17-317.el7.i686.rpm
nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm
<icu関連>
libicu-50.2-4.el7_7.x86_64.rpm
<Perl関連>
perl-5.16.3-297.el7.x86_64.rpm
perl-Carp-1.26-244.el7.noarch.rpm
perl-constant-1.27-2.el7.noarch.rpm
perl-Encode-2.51-7.el7.x86_64.rpm
perl-Exporter-5.68-3.el7.noarch.rpm
perl-File-Path-2.09-2.el7.noarch.rpm
perl-File-Temp-0.23.01-3.el7.noarch.rpm
perl-Filter-1.49-3.el7.x86_64.rpm
perl-Getopt-Long-2.40-3.el7.noarch.rpm
perl-HTTP-Tiny-0.033-3.el7.noarch.rpm
perl-libs-5.16.3-297.el7.i686.rpm
perl-libs-5.16.3-297.el7.x86_64.rpm
perl-macros-5.16.3-297.el7.x86_64.rpm
perl-parent-0.225-244.el7.noarch.rpm
perl-PathTools-3.40-5.el7.x86_64.rpm
perl-Pod-Escapes-1.04-297.el7.noarch.rpm
perl-Pod-Perldoc-3.20-4.el7.noarch.rpm
perl-Pod-Simple-3.28-4.el7.noarch.rpm
perl-Pod-Usage-1.63-3.el7.noarch.rpm
perl-podlators-2.5.1-3.el7.noarch.rpm
perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm
perl-Socket-2.010-5.el7.x86_64.rpm
perl-Storable-2.45-3.el7.x86_64.rpm
perl-Text-ParseWords-3.29-4.el7.noarch.rpm
perl-threads-1.87-4.el7.x86_64.rpm
perl-threads-shared-1.43-6.el7.x86_64.rpm
perl-Time-HiRes-1.9725-3.el7.x86_64.rpm
perl-Time-Local-1.2300-2.el7.noarch.rpm

②ダウンロードしたパッケージをインストールします

・バージョンの確認

$ uname -r
3.10.0-1062.1.2.el7.x86_64

⇒RHEL7である事

SELinuxの無効化確認

$ getenforce

⇒一応確認しておく

rpmパッケージのコピー
⇒必要ファイルを/tmp/rpmにコピー 任意の場所でどこでも良いですがインストールのし易さ間違えにくさからここでは種類別に分けておきます。

<コピー先>

/tmp/rpm/glibc →glibc関連
/tmp/rpm/perl →perl関連
/tmp/rpm/icu →icu関連
/tmp/rpm/PG1 →postgres関連

GlibC関連i686のインストール

$ cd /tmp/rpm/glibc 
$ sudo rpm -ivh glibc-2.17-317.el7.x86_64.rpm glibc-common-2.17-317.el7.x86_64.rpm
$ sudo rpm -ivh glibc-2.17-317.el7.i686.rpm nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm
warning: glibc-2.17-317.el7.i686.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:nss-softokn-freebl-3.44.0-8.el7_7################################# [ 50%]
   2:glibc-2.17-317.el7               ################################# [100%]

Perlインストール

$ cd /tmp/rpm/perl
$ sudo rpm -ivh *.rpm
warning: perl-5.16.3-297.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:perl-parent-1:0.225-244.el7      ################################# [  4%]
   2:perl-HTTP-Tiny-0.033-3.el7       ################################# [  7%]
   3:perl-podlators-2.5.1-3.el7       ################################# [ 11%]
   4:perl-Pod-Perldoc-3.20-4.el7      ################################# [ 14%]
   5:perl-Pod-Escapes-1:1.04-297.el7  ################################# [ 18%]
   6:perl-Text-ParseWords-3.29-4.el7  ################################# [ 21%]
   7:perl-Encode-2.51-7.el7           ################################# [ 25%]
   8:perl-Pod-Usage-1.63-3.el7        ################################# [ 29%]
   9:perl-constant-1.27-2.el7         ################################# [ 32%]
  10:perl-Carp-1.26-244.el7           ################################# [ 36%]
  11:perl-Exporter-5.68-3.el7         ################################# [ 39%]
  12:perl-Filter-1.49-3.el7           ################################# [ 43%]
  13:perl-libs-4:5.16.3-297.el7       ################################# [ 46%]
  14:perl-macros-4:5.16.3-297.el7     ################################# [ 50%]
  15:perl-File-Path-2.09-2.el7        ################################# [ 54%]
  16:perl-File-Temp-0.23.01-3.el7     ################################# [ 57%]
  17:perl-PathTools-3.40-5.el7        ################################# [ 61%]
  18:perl-Scalar-List-Utils-1.27-248.e################################# [ 64%]
  19:perl-Socket-2.010-5.el7          ################################# [ 68%]
  20:perl-Storable-2.45-3.el7         ################################# [ 71%]
  21:perl-threads-1.87-4.el7          ################################# [ 75%]
  22:perl-threads-shared-1.43-6.el7   ################################# [ 79%]
  23:perl-Time-HiRes-4:1.9725-3.el7   ################################# [ 82%]
  24:perl-Pod-Simple-1:3.28-4.el7     ################################# [ 86%]
  25:perl-Getopt-Long-2.40-3.el7      ################################# [ 89%]
  26:perl-Time-Local-1.2300-2.el7     ################################# [ 93%]
  27:perl-4:5.16.3-297.el7            ################################# [ 96%]
  28:perl-libs-4:5.16.3-297.el7       ################################# [100%]

ICUインストール

$ cd /tmp/rpm/icu
$ sudo rpm -ivh libicu-50.2-4.el7_7.x86_64.rpm
warning: libicu-50.2-4.el7_7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:libicu-50.2-4.el7_7              ################################# [100%]

PostgreSQLインストール

$ cd /tmp/rpm/PG1
$ sudo rpm -ivh *.rpm
warning: postgresql13-13.3-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql13-libs-13.3-1PGDG.rhel################################# [ 25%]
   2:postgresql13-13.3-1PGDG.rhel7    ################################# [ 50%]
   3:postgresql13-server-13.3-1PGDG.rh################################# [ 75%]
   4:postgresql13-contrib-13.3-1PGDG.r################################# [100%]

③インストール結果を確認します

・バージョン確認

$ psql --version
psql (PostgreSQL) 13.3

・DB初期化

$ sudo PGSETUP_INITDB_OPTIONS='--encoding=UTF-8 --no-locale' /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database ... OK

・サービス起動有効化

$ sudo systemctl enable postgresql-13
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-13.service to /usr/lib/systemd/system/postgresql-13.service.

・起動

$ sudo systemctl start postgresql-13

・接続確認

$sudo su - postgres
-bash-4.2$ psql
psql (13.3)
Type "help" for help.

postgres=# select version();
                                                 version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)

おわりに

ご紹介した方法は、パッケージのダウンロードが地味で面倒です・・。 インターネット接続環境があればyum install --downloadonly等で必要なパッケージを一括して集める事も 可能かと思いますのでその辺はお試し頂ければと思います。