pgAdmin4をCentOS8にvenvでインストール
venvを知って仮想環境へインストールしたときの覚書。
環境: CentOS Stream 8, Python 3.9.7, PostgreSQL 14.2, pgAdmin4 6.6, gunicorn 20.1.0, nginx 1.20.2
pip経由でインストールする。公式サイトを参考に。
pgAdmin4用システムディレクトリを作成
# mkdir /var/lib/pgadmin
# mkdir /var/log/pgadmin
Python仮想環境用のディレクトリを作成してpgadmin4仮想環境を作成。
# mkdir /opt/software/python-venv
# cd /opt/software/python-venv
# python -m venv pgadmin4
仮想環境用スクリプト実行
# source pgadmin4/bin/activate
pipの確認とアップグレード
(pgadmin4)# python -m pip list
(pgadmin4)# python -m pip install --upgrade pip setuptools
pip経由でpgAdmin4のインストール。
(pgadmin4)# python -m pip install pgadmin4
pgAdmin4実行
(pgadmin4)# pgadmin4
このPCはLAN内の開発サーバー。ブラウザでアクセスして確認してみる。
表示できないのでファイヤーウォール確認
(pgadmin4)# systemctl status firewalld
(pgadmin4)# firewall-cmd --list-all
pgAdmin4の5050ポートを開けて確認
(pgadmin4)# firewall-cmd --add-port=5050/tcp --permanent
(pgadmin4)# firewall-cmd --reload
(pgadmin4)# firewall-cmd --list-all
pgAdmin4実行
(pgadmin4)# pgadmin4
ブラウザでアクセスして確認する。
表示できない…。
別コンソールを開いてポートが空いているか確認。
TCPソケット(-t)の全ての状態(-a)で名前解決せず(-n)に表示
# ss -tan
LISTEN 0 128 127.0.0.1:5050 0.0.0.0:*
localhostとの通信しかLISTENしてない。
localhostから確認
# curl http://localhost:5050/
接続できている。とりあえずOK。
ログ確認
(pgadmin4)# less /var/log/pgadmin/pgadmin4.log
WARNINGされたsimple-websocketをインストール。
(pgadmin4)# python -m pip install simple-websocket
Nginxからプロキシする設定
LAN内PCからアクセスするためにウェブアプリケーションとして起動する。
WSGI(Web Server Gateway Interface)対応のHTTP Serverであるgunicornをインストール
(pgadmin4)# python -m pip install gunicorn
gunicorn経由で起動。
(pgadmin4)# gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir /opt/software/python-venv/pgadmin4/lib/python3.9/site-packages/pgadmin4 pgAdmin4:app
別コンソールでソケットファイルがあるか確認
# ls /tmp/
nginx設定ファイルにプロキシ設定追加
# less /etc/nginx/conf.d/00_default.conf
nginx再読み込み
# nginx -t
# systemctl reload nginx
ブラウザで「http://vm-dev3/pgadmin4/」へアクセス。
無事表示された。
5050ポートは閉じる。
# firewall-cmd --remove-port=5050/tcp --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
LocalhostのPostgresSQLサーバーを追加して動作確認。
思ったよりサクサク動く。
けど、DBeaverの方が使いやすい。
次回は本番環境でサービス化して自動起動するように設定する。
venv仮想環境から抜け出す。
(pgadmin4)# deactivate