PostgreSQL と pgAdmin4 のインストール

試してみたメモ
# 手順

1. リポジトリファイルを編集する

    ```
    # vi /etc/yum.repos.d/CentOS-Base.repo
    ```
    ```/etc/yum.repos.d/CentOS-Base.repo
    [base]
    name=CentOS-$releasever - Base
    mirrorlist=http://mirrorlist.centos.org/? 
   release=$releasever&arch=$basearch&repo=os&infra=$infra
    #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    exclude=postgresql*　←追加
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    mirrorlist=http://mirrorlist.centos.org/? 
    release=$releasever&arch=$basearch&repo=updates&infra=$infra
  #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    exclude=postgresql*　←追加
    ```

2. PostgreSQL の公式リポジトリを登録する リポジトリ情報は[PostgreSQL RPM Building Project - Repository Packages](https://yum.postgresql.org/repopackages.php#pg11)から取得

    ```
    # yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    ```

3. PostgreSQL をインストールする

    ```
    # yum -y groupinstall "PostgreSQL Database Server 10 PGDG"
    ```

4. `/usr/pgsql-10/bin/postgresql-10-setup`ファイルを編集する

    ```
    # vi /usr/pgsql-10/bin/postgresql-10-setup
    ```
    ```/usr/pgsql-10/bin/postgresql-10-setup
    # Initialize the database
    initdbcmd="$PGENGINE/initdb --pgdata='$PGDATA' --no-locale -E UTF-8 --auth='ident'"　←編集
    initdbcmd+=" $PGSETUP_INITDB_OPTIONS"
    
    $SU -l postgres -c "$initdbcmd" >> "$PGLOG" 2>&1 < /dev/null
    ```

5. データベースを初期化する

    ```
    # /usr/pgsql-10/bin/postgresql-10-setup initdb
    ```

6. EPELリポジトリを有効にする

    ```
    # yum -y install epel-release
    ```

7. pgAdmin4 をインストールする

    ```
    # yum -y install pgadmin4
    ```

7. `/var/www/pgadmin4`フォルダと`/var/log/pgadmin4`フォルダを作成する

    ```
    # mkdir /var/www/pgadmin4 /var/log/pgadmin4
    ```

8. `/var/www/pgadmin4`フォルダの所有者を変更する

    ```
    # chown -R apache:apache /var/www/pgadmin4 && find /var/www/pgadmin4 ! -user apache | wc -l
    ```

9. `/etc/httpd/conf.d/pgadmin4.conf`ファイルを編集する

    ```
    #  cp -a /etc/httpd/conf.d/pgadmin4.conf.sample /etc/httpd/conf.d/pgadmin4.conf && vi /etc/httpd/conf.d/pgadmin4.conf
    ```
    ```/etc/httpd/conf.d/pgadmin4.conf
    #LoadModule wsgi_module modules/mod_wsgi.so　←コメントアウト
    WSGIDaemonProcess pgadmin processes=1 threads=25
    WSGIScriptAlias /pgadmin4 /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi
     
    <Directory /usr/lib/python2.7/site-packages/pgadmin4-web/>
            WSGIProcessGroup pgadmin
            WSGIApplicationGroup %{GLOBAL}
            <IfModule mod_authz_core.c>
                    # Apache 2.4
                    Require all granted
            </IfModule>
            <IfModule !mod_authz_core.c>
                    # Apache 2.2
                    Order Deny,Allow
                    Deny from All
                    Allow from 127.0.0.1
                    Allow from ::1
            </IfModule>
    </Directory>
    ```

10. `/usr/lib/python2.7/site-packages/pgadmin4-web/config_local.py`ファイルを作成する

    ```
    # vi /usr/lib/python2.7/site-packages/pgadmin4-web/config_local.py
    ```
    ```/usr/lib/python2.7/site-packages/pgadmin4-web/config_local.py
    SERVER_MODE = True
    DEFAULT_SERVER = '<IPアドレスまたはホスト名>'
     
    LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
    SQLITE_PATH = '/var/www/pgadmin4/pgadmin4.db'
    SESSION_DB_PATH = '/var/www/pgadmin4/sessions'
    STORAGE_DIR = '/var/www/pgadmin4/storage'
    ```

11. `setup.py`を実行する

    ```
    # python /usr/lib/python2.7/site-packages/pgadmin4-web/setup.py
    ```

12. pgAdmin4 を起動する

    ```
    # python /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.py
    ```

# 参考
- [公式wiki - YUM Installation](https://wiki.postgresql.org/wiki/YUM_Installation)
- [公式サイト - PostgreSQL RPM Building Project - Repository Packages](https://yum.postgresql.org/repopackages.php#pg96)