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です。
うまくつながりますように!