「さくらのクラウド」で PostgreSQL&PgAdmin4をインストールする
2019.11.23現在。
"さくらのクラウド"と書いてますが 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 を利用可能にできる。
・データベースクラスタの作成
PostgreSQLはインストール後にデータベースを初期化してあげる手順が必要です。
ロケールを Cに、文字コードをUTF8 に変更するオプションもつけておきます。
※インストールする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でサーバ再起動しても自動的に起動するようにする。
systemctl enableでPosgtreSQLを起動する。
[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を動かす。
メールアドレスとログイン用パスワードを聞かれるので、適宜入力すること。
(ログイン画面で入力するID&パスワードになります)
[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 で サーバ再起動しても自動的に起動するようにする。
systemctl start で pgadmin4を起動する。
[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://{サーバのIPアドレス}:5050/
へアクセスすると PgAdmin4が表示されます。
セットアップ時に指定したメールアドレスとパスワードでログインしてください。
ログインできたら、PgAdmin4を操作して、サーバを追加します。
Hostに localhost、
UsernameとPasswordは PostgreSQL接続用ユーザを指定してください。
PortやMaintenance databaseはそのままでOKです。
うまくつながりますように!