がじぇったー

お金と家電とプログラミングのブログ

【AWS】phpPgAdminをEC2(CentOS7)に導入し、RDSのデータを確認する

こんにちわ

がじぇったー (@hackmylife7) | Twitter

です。

意外にハマったのでCentOS7へのphpPgAdmin導入方法についてメモを残しておこうと思います。

f:id:gadgeterkun:20200508151001j:plain

TL;DR(要約)

  • 導入自体は簡単ですがSELinuxが有効化されているとPostgreへの疎通に失敗します.

前提

  • RDSは9.5.2を利用(RDSの作成はマネコンからぽちぽちするだけ)
  • phpPgAdminをインストールするEC2とRDS間の疎通ができている(5432ポート)
  • phpPgAdminをいれるEC2にはEIPが付与されていること

導入手順

必要なモジュールのインストール

# yum -y install httpd php php-pgsql

# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)

# php -v
PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

phpPgAdminのインストール

# cd /usr/local/src/
# wget https://github.com/phppgadmin/phppgadmin/archive/REL_5-6-0.tar.gz
--2020-05-08 04:50:45--  https://github.com/phppgadmin/phppgadmin/archive/REL_5-6-0.tar.gz
Resolving github.com (github.com)... 52.69.186.44
Connecting to github.com (github.com)|52.69.186.44|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/phppgadmin/phppgadmin/tar.gz/REL_5-6-0 [following]
--2020-05-08 04:50:45--  https://codeload.github.com/phppgadmin/phppgadmin/tar.gz/REL_5-6-0
Resolving codeload.github.com (codeload.github.com)... 52.193.111.178
Connecting to codeload.github.com (codeload.github.com)|52.193.111.178|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: ‘REL_5-6-0.tar.gz’

    [ <=>                      ] 760,628     --.-K/s   in 0.1s

2020-05-08 04:50:46 (6.97 MB/s) - ‘REL_5-6-0.tar.gz’ saved [760628]

# tar -xvzf REL_5-6-0.tar.gz
phppgadmin-REL_5-6-0/
phppgadmin-REL_5-6-0/BUGS
...略
# mv phppgadmin-REL_5-6-0 /usr/share/
# mv /usr/share/phppgadmin-REL_5-6-0 /usr/share/phpPgAdmin
# cd /usr/share/phpPgAdmin/
# mv conf/config.inc.php-dist conf/config.inc.php

config.inc.phpの編集

以下の内容にします
ポイントとしては extra_login_securityfalse にすることです。

<?php
    $conf['servers'][0]['desc'] = 'DBの名前(phppgadmin上の表示名なので何でも良い)';
    $conf['servers'][0]['host'] = 'RDSのエンドポイント;
    $conf['servers'][0]['port'] = 5432;
    $conf['servers'][0]['sslmode'] = 'allow';
    $conf['servers'][0]['defaultdb'] = 'postgres';
    $conf['servers'][0]['pg_dump_path'] = '';
    $conf['servers'][0]['pg_dumpall_path'] = '';
    $conf['default_lang'] = 'auto';
    $conf['autocomplete'] = 'default on';
    $conf['extra_login_security'] = false;
    $conf['owned_only'] = false;
    $conf['show_comments'] = true;
    $conf['show_advanced'] = false;
    $conf['show_system'] = false;
    $conf['min_password_length'] = 1;
    $conf['left_width'] = 200;
    $conf['theme'] = 'default';
    $conf['show_oids'] = false;
    $conf['max_rows'] = 30;
    $conf['max_chars'] = 50;
    $conf['use_xhtml_strict'] = false;
    $conf['help_base'] = 'http://www.postgresql.org/docs/%s/interactive/';
    $conf['ajax_refresh'] = 3;
    $conf['plugins'] = array();
    $conf['version'] = 19;
?>

httpd.confの修正

# vi /etc/httpd/conf.d/phpPgAdmin.conf
以下内容の貼り付け
Alias /phpPgAdmin /usr/share/phpPgAdmin

<Directory /usr/share/phpPgAdmin>

<IfModule mod_dir.c>
DirectoryIndex index.php
</IfModule>
AllowOverride None

# Only allow connections from localhost:
#Require local
Require all granted

<IfModule mod_php.c>
  php_flag magic_quotes_gpc Off
  php_flag track_vars On
  #php_value include_path .
</IfModule>
<IfModule !mod_php.c>
  <IfModule mod_actions.c>
    <IfModule mod_cgi.c>
      AddType application/x-httpd-php .php
      Action application/x-httpd-php /cgi-bin/php
    </IfModule>
    <IfModule mod_cgid.c>
      AddType application/x-httpd-php .php
      Action application/x-httpd-php /cgi-bin/php
    </IfModule>
  </IfModule>
</IfModule>

</Directory>

firewallselinuxの機能をOFFにする

# systemctl stop firewall

SELinuxの無効化 - Qiita

apacheを起動

# systemctl start httpd
#
# systemctl start status
Failed to start status.service: Unit not found.
# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-05-08 05:01:14 UTC; 18s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 20594 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─20594 /usr/sbin/httpd -DFOREGROUND
           ├─20595 /usr/sbin/httpd -DFOREGROUND
           ├─20596 /usr/sbin/httpd -DFOREGROUND
           ├─20597 /usr/sbin/httpd -DFOREGROUND
           ├─20598 /usr/sbin/httpd -DFOREGROUND
           └─20599 /usr/sbin/httpd -DFOREGROUND


#

phpPgAdminの表示

apacheを起動したら以下のURLでphpPgAdminが見えるはずです。
ユーザーはPostgresでパスワードはPostgresのものを入れます。(RDS構築時に設定するパスワード)

http://EC2に割あたっているEIP/phpPgAdmin/

f:id:gadgeterkun:20200508150551p:plain

超お勧めAWS

参考URL

phpPgAdmin

phpPgAdmin:Web開発者向けのPostgresクライアントツール | OSDN Magazine

phpPgAdmin - ArchWiki

linux - How to change root password for PostgreSql phpPgAdmin? - Super User

phpPgAdmin / Discussion / Help: Login fails - but I can connect OK with psql

How To Set up PostgreSQL and PhpPgadmin on Ubuntu 18.04 - Alibaba Cloud Community

php - Can't Login to phpPgAdmin - Server Fault

サービスの利用開始方法をご説明します。:phpPgAdmin 設置手順

StackPath

phpPgAdmin - download