Help us understand the problem. What is going on with this article?

「さくらのクラウド」でCentOS7上に PostgreSQL12&PgAdmin4をインストールする

More than 1 year has passed since last update.

2019.11.01現在。
"さくらのクラウド"と書いてますが、CentOS7系にPostgres12入れる話と取ってもらえれば。
SQLの勉強するにしても動く環境がないとやりにくいですよね。

■「さくらのクラウド」管理画面でサーバを作成する。
・CentOS 7.7
・1コア/1GB
・20GB SSD
※一番安い構成です

■準備
・サーバにSSHログインしたら、まず おまじないを実行しておく。

[root@pgtest ~]# yum update

・さくらのクラウドでは最初状態ではrootユーザのみしか用意されていない。
本当はまず操作用のユーザを作成すべきだが、今回はお試しなので このままrootユーザで進みます。

■PostgreSQLサーバのインストール
・CentOS 7でそのままPosgtresSQLをインストールしようとすると、9.2が入ってしまう。
最新版を取得できるようにする。

[root@pgtest ~]# yum -y localinstall https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
~ 中略 ~
インストール:
pgdg-redhat-repo.noarch 0:42.0-5
完了しました!
[root@pgtest ~]#

・どのバージョンがインストール可能になったのかは、yum info postgresql で確認できる。
以下の例だとバージョン9.4,9.5,9.6,10,11,12 が利用可能なことがわかる。

[root@pgtest ~]# yum info postgresql
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 5.4 kB 00:00:00
* elrepo: ftp.ne.jp
* epel: ftp.yz.yamagata-u.ac.jp
base | 3.6 kB 00:00:00
elrepo | 2.9 kB 00:00:00
epel | 5.3 kB 00:00:00
extras | 2.9 kB 00:00:00
pgdg10 | 3.6 kB 00:00:00
pgdg11 | 3.6 kB 00:00:00
pgdg12 | 3.6 kB 00:00:00
pgdg94 | 3.6 kB 00:00:00
pgdg95 | 3.6 kB 00:00:00
pgdg96 | 3.6 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/17): epel/x86_64/group_gz | 90 kB 00:00:00
~ 中略 ~
[root@pgtest ~]#

・やっぱり最新版だよねのPostgreSQL12をインストール

[root@pgtest ~]# yum install postgresql12-server
~ 中略 ~
インストール:
postgresql12-server.x86_64 0:12.0-1PGDG.rhel7
依存性関連をインストールしました:
libtirpc.x86_64 0:0.2.4-0.16.el7 postgresql12.x86_64 0:12.0-1PGDG.rhel7
postgresql12-libs.x86_64 0:12.0-1PGDG.rhel7 python3.x86_64 0:3.6.8-10.el7
python3-libs.x86_64 0:3.6.8-10.el7 python3-pip.noarch 0:9.0.3-5.el7
python3-setuptools.noarch 0:39.2.0-10.el7
完了しました!
[root@pgtest ~]#

※途中、「file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG から鍵を取得中です。」
「上記の処理を行います。よろしいでしょうか? [y/N] 」のようなメッセージが現れることがある。
そのまま「 y 」を入力でOK。

※AWSの場合は「$ sudo amazon-linux-extras install epel 」コマンドで
PostgreSQL9.6 or 10 を利用可能にできる。

・データベースクラスタの作成
※ロケールを Cに変更する。
※インストールするOS、バージョンによって記載が異なるので注意。

[root@pgtest pgadmin4-web]# PGSETUP_INITDB_OPTIONS="-E UTF8 --locale=C" /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
[root@pgtest pgadmin4-web]#

・PosgtreSQL起動設定&起動
サーバ再起動しても自動的に起動するよう、systemctl enable しておく。

[root@pgtest pgadmin4-web]# systemctl enable postgresql-12
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.
[root@pgtest pgadmin4-web]#
[root@pgtest pgadmin4-web]# systemctl start postgresql-12
[root@pgtest pgadmin4-web]#

・PosgtreSQL接続用のユーザ作成
 ※testuserはお好みで。パスワードもお好みで。

[root@pgtest pgadmin4-web]# sudo -u postgres createuser -P testuser
Enter password for new role:
Enter it again:
[root@pgtest pgadmin4-web]#

・パスワードログインできるようにする
 ※3か所をident → md5に変更して保存。
 ※pg_hba.conf を編集したらサーバを再起動します

[root@pgtest pgadmin4-web]# vi /var/lib/pgsql/12/data/pg_hba.conf

"local" is for Unix domain socket connections only

local all all md5

IPv4 local connections:

host all all 127.0.0.1/32 md5

IPv6 local connections:

host all all ::1/128 md5
[root@pgtest pgadmin4-web]# service postgresql-12 restart

■PgAdmin4のインストール

・本体のインストール。
※先にPostgresのreposをインストールしているため 下記でPgAdmin4の最新版が入ります。
※インストール時にPythonやWebサーバなど必要な機能は全部入ります。なんて手軽。

[root@pgtest ~]# yum install pgadmin4
~ 中略 ~
インストール:
pgadmin4.x86_64 0:4.13-1.rhel7
依存性関連をインストールしました:
httpd.x86_64 0:2.4.6-90.el7.centos httpd-tools.x86_64 0:2.4.6-90.el7.centos
libtomcrypt.x86_64 0:1.17-26.el7 libtommath.x86_64 0:0.42.0-6.el7
mailcap.noarch 0:2.1.41-2.el7 mod_wsgi.x86_64 0:3.4-18.el7
pgadmin4-docs.noarch 0:4.13-1.rhel7 pgadmin4-python-Flask-Mail.noarch 0:0.9.1-4.rhel7.1
pgadmin4-python-alembic.noarch 0:0.9.7-3.rhel7.1 pgadmin4-python-babel.noarch 0:2.3.4-2.rhel7.1
pgadmin4-python-backports.csv.noarch 1:1.0.5-3.rhel7.1 pgadmin4-python-beautifulsoup4.noarch 0:4.5.1-3.rhel7.1
pgadmin4-python-blinker.noarch 0:1.4-3.rhel7.1 pgadmin4-python-dateutil.noarch 1:2.7.2-1.rhel7.1
pgadmin4-python-flask.noarch 1:1.0.2-1.rhel7 pgadmin4-python-flask-babel.noarch 0:0.11.1-4.rhel7.1
pgadmin4-python-flask-babelex.noarch 0:0.9.3-1.rhel7.1 pgadmin4-python-flask-gravatar.noarch 0:0.5.0-1.rhel7.1
pgadmin4-python-flask-htmlmin.noarch 0:1.5.0-1.rhel7 pgadmin4-python-flask-login.noarch 0:0.4.1-1.rhel7
pgadmin4-python-flask-migrate.noarch 0:2.4.0-1.rhel7 pgadmin4-python-flask-paranoid.noarch 0:0.2-1.rhel7.1
pgadmin4-python-flask-principal.noarch 0:0.4.0-14.rhel7.1 pgadmin4-python-flask-security.noarch 0:3.0.0-1.rhel7.1
pgadmin4-python-flask-sqlalchemy.noarch 0:2.3.2-1.rhel7 pgadmin4-python-flask-wtf.noarch 0:0.14.2-1.rhel7
pgadmin4-python-htmlmin.noarch 0:0.1.12-1.rhel7.1 pgadmin4-python-itsdangerous.noarch 0:0.24-10.rhel7.1
pgadmin4-python-jinja2.noarch 0:2.8-9.rhel7.1 pgadmin4-python-markupsafe.x86_64 0:0.23-13.rhel7.1
pgadmin4-python-passlib.noarch 0:1.7.1-1.rhel7.1 pgadmin4-python-psutil.x86_64 0:5.5.1-1.rhel7
pgadmin4-python-simplejson.x86_64 0:3.16.0-1.rhel7 pgadmin4-python-six.noarch 0:1.12.0-3.rhel7
pgadmin4-python-sqlalchemy.x86_64 0:1.2.18-1.rhel7 pgadmin4-python-sqlparse.noarch 0:0.2.4-1.rhel7.1
pgadmin4-python-sshtunnel.noarch 0:0.1.4-1.rhel7 pgadmin4-python-werkzeug.noarch 0:0.15.4-1.rhel7
pgadmin4-python-wtforms.noarch 0:2.2.1-1.rhel7 pgadmin4-pytz.noarch 0:2018.9-1.rhel7
pgadmin4-web.noarch 0:4.13-1.rhel7 pyOpenSSL.x86_64 0:0.13.1-4.el7
python-babel.noarch 0:0.9.6-8.el7 python-beaker.noarch 0:1.5.4-10.el7
python-blinker.noarch 0:1.3-2.el7 python-cffi.x86_64 0:1.6.0-5.el7
python-dateutil.noarch 0:1.5-7.el7 python-editor.noarch 0:0.4-4.el7
python-enum34.noarch 0:1.0.4-1.el7 python-flask.noarch 1:0.10.1-4.el7
python-idna.noarch 0:2.4-1.el7 python-itsdangerous.noarch 0:0.23-2.el7
python-jinja2.noarch 0:2.8-7.rhel7 python-lxml.x86_64 0:3.2.1-4.el7
python-mako.noarch 0:0.8.1-2.el7 python-markupsafe.x86_64 0:0.11-10.el7
python-paramiko.noarch 0:2.1.1-9.el7 python-paste.noarch 0:1.7.5.1-9.20111221hg1498.el7
python-ply.noarch 0:3.4-11.el7 python-pycparser.noarch 0:2.14-1.el7
python-speaklater.noarch 0:1.3-1.el7 python-tempita.noarch 0:0.5.1-6.el7
python-werkzeug.noarch 0:0.11.11-2.rhel7 python2-click.noarch 0:6.7-8.el7
python2-crypto.x86_64 0:2.6.1-16.el7 python2-cryptography.x86_64 0:1.7.2-2.el7
python2-psycopg2.x86_64 0:2.8.3-3.rhel7 python2-pyasn1.noarch 0:0.1.9-7.el7
完了しました!
[root@pgtest ~]#

・設定ファイルの作成
pgadmin4のインストールフォルダに config_local.py ファイルを作成し、
下記3行を記入する。

[root@pgtest ~]# vi /usr/lib/python2.7/site-packages/pgadmin4-web/config_local.py
SERVER_MODE = True
DEFAULT_SERVER = '0.0.0.0'
LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'

・pgadmin4のセットアップ
pgadmin4のインストールフォルダに入り、setup.pyを動かす。
メールアドレスとログイン用パスワードを聞かれるので、適宜入力すること。

[root@pgtest ~]# cd /usr/lib/python2.7/site-packages/pgadmin4-web
[root@pgtest pgadmin4-web]# python ./setup.py
NOTE: Configuring authentication for SERVER mode.
Enter the email address and password to use for the initial pgAdmin user account:
Email address: hogehoge@hogehoge.com
Password:
Retype password:
pgAdmin 4 - Application Initialisation
======================================
[root@pgtest pgadmin4-web]#

・pgadmin4起動設定&起動
サーバ再起動しても自動的に起動するよう、systemctl enable しておく。

[root@pgtest pgadmin4-web]# systemctl enable pgadmin4.service
Created symlink from /etc/systemd/system/multi-user.target.wants/pgadmin4.service to /usr/lib/systemd/system/pgadmin4.service.
[root@pgtest pgadmin4-web]# systemctl start pgadmin4.service
[root@pgtest pgadmin4-web]#

・ポート開放
PgAdmin4はデフォルト5050ポートで起動する。(別途Apacheなどは不要)

[root@pgtest pgadmin4-web]# firewall-cmd --add-port=5050/tcp --zone=public --permanent
success
[root@pgtest pgadmin4-web]# firewall-cmd --reload
success
[root@pgtest pgadmin4-web]#

以上で、
http://{サーバのNICアドレス}:5050/

へアクセスすると PgAdmin4が表示されます。
セットアップ時に指定したメールアドレスとパスワードでログインしてください。

ログインできたら、PgAdmin4を操作して、サーバを追加します。
Hostに localhost、
UsernameとPasswordは PostgreSQL接続用ユーザを指定してください。
PortやMaintenance databaseはそのままでOKです。
うまくつながりますように!

rzl5
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away