PostgreSQLがインストールされたVPSがあります。私はさまざまなツール、grafana、Node.jsサイトなどへのリバースプロキシの束を使ってnginxをセットアップしました。現在PostgreSQLをセットアップしようとしていますが、外部からアクセスできるWebベースの管理ツールを使用できません。
Apache2ホスティングを使用して通常のpgAdminをインストールしようとしましたが、そのobvです。 nginxと競合しました。 nginxリバースプロキシの背後にあるpgAdminの良いガイドを見つけようとしましたが、私が見つけた唯一のもの( https://github.com/rbernardes/nginx-pgadmin )はまったく機能しませんでしたpy構成スクリプトを実行しようとしたとき。私はもっと深く掘り下げることができましたが、私のポイントは、pgAdminはnginxでうまく機能していないようで、有効なWebベースの代替手段がほとんどあると思いましたか?しかし、ここは少し乾燥しているようです...
誰かがこれに光を当てることができますか?ありがとう!
apache2ホスティングで通常のpgAdminをインストールしようとしましたが、そのobv。 nginxと競合
nginxが使用しなかった別のポートをリッスンするようにApache2を設定しても、そうはなりません。
pgAdminはnginxでうまく機能しないようです
インストールして pgAdminを使用してuWSGIを構成する アプリ、次にnGSを構成して uwsgi_pass
を使用してuWSGIと通信します.
2020-05-10の編集:詳細と情報
ここでは、nginx + uwsgi_pass
を使用するか、Apache httpd + mod_proxy_wsgiを使用して、2つの解決策を得ました。両方について詳しく見てみましょう。
PythonおよびPython開発ヘッダー
インストールPythonおよびその互換性のある開発ヘッダー、できれば Python> = 3.6 。uwsgiが正規表現ルーティングを処理するにはPCRE 3ライブラリが必要です。
$ Sudo apt-get update && apt-get -y install build-essential python3 python3-dev libpcre3-dev libpcre3
Python仮想環境
venv
、 virtualenv
、 conda
であっても、仮想環境にpgAdminをインストールします=、何でも。 OSパッケージマネージャーがpython環境(バージョン、パッケージなど))に干渉しないことを確認するだけです。
venv
を使用している場合は、次のようになります。
$ cd /path/to/working_directory # Install virtual environment on .env, and activate it. $ python3 -m venv .env $ source .env/bin/activate # upgrade existing pip packages, and install wheel. (.env) $ pip install --upgrade pip setuptools (.env) $ pip install wheel # install pgAdmin 4.21 (.env) $ pip install https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v4.21/pip/pgadmin4-4.21-py2.py3-none-any.whl
ウェブサーバーをpgAdminに接続させるには、WSGIまたはHTTPサーバーを使用します。 pgAdminは WSGI および Gunicorn をサポートしています。
ここでは、uWSGIを使用しますが、別のWSGIサーバーを使用している場合は、UNIXソケット/tmp/wsgi/pgadmin.sock
でリッスンしていることを確認してください。
まず、uWSGIをインストールする必要があります。 uWSGIは、apt-get
またはpip
を使用してインストールできます。
どちらも問題ありません。ただし、pip
を使用する場合は、独自のサービスファイルを作成する必要があります。 apt-get
では、古いバージョンのuWSGIを使用していることを受け入れる必要があります。 Ubuntuで配布されたサービスファイルとpipで配布された最新バージョンuwsgi
バイナリを使用して、両方をインストールします
Install Ubuntu-distributed uwsgi $ Sudo apt-get -y install uwsgi Install pip-distributed uwsgi $ source /path/to/working_directory/.env/bin/activate (.env) $ pip install uwsgi # Ubuntu-distributed version (.env) $ /usr/bin/uwsgi --version 2.0.15-debian # pip-distributed version (.env) $ uwsgi --version 2.0.18 # service file (.env) $ ls /etc/init.d/uwsgi /etc/init.d/uwsgi
次に、pgAdminをuWSGI用に設定します。もう一度仮想環境に入る必要があります。私たちはおおまかに このpgAdmin公式ガイド に従っています。
まず、ローカル構成を作成します。
$ cd /path/to/working_directory/.env/lib/python3.6/site-packages/pgadmin4 $ cp config.py config_local.py $ vim config_local.py
PgAdminのドキュメントに従うこともできますが、DATA_DIR = '/var/lib/pgadmin'
は、他のすべてがDATA_DIR
を参照するため、適切なものに編集できます。ここでは、/path/to/working_directory/lib
を使用します
次に、pgAdminに必要なディレクトリを作成します
$ Sudo mkdir -p /var/log/pgadmin $ mkdir /path/to/working_directory/lib
pgAdminはuWSGIの下で実行されるため、/var/log/pgadmin
およびDATA_DIR
はuWSGIによって完全に制御される必要があります。ここでは、www-data
をuWSGIユーザーおよびグループとして使用します。
$ Sudo chown www-data:www-data /var/log/pgadmin /path/to/working_directory/lib
/var/log/pgadmin
とDATA_DIR
への書き込みを許可して設定する必要があることに注意してください。現在、ユーザーによる書き込みのみを許可しており、この権限は後で修正します。
$ Sudo chmod 777 /var/log/pgadmin /path/to/working_directory/lib
仮想環境に入り、pgAdminのsetup.py
を実行します。
$ source /path/to/working_directory/.env/bin/activate (.env) $ cd /path/to/working_directory/.env/lib/python3.6/site-packages/pgadmin4 (.env) $ python setup.py
設定が完了するまで設定手順に従い、ここで作成したメールとパスワードをメモします。
次に、/var/log/pgadmin
およびDATA_DIR
権限を修正します。
$ chmod 755 /var/log/pgadmin /path/to/working_directory/lib $ chown -R www-data:www-data /var/log/pgadmin /path/to/working_directory/lib
これでpgAdminが完全にセットアップされました。
これで、pgAdminとuWSGIを統合して、UNIXソケット/tmp/wsgi/pgadmin.sock
でリッスンするWSGIサーバーを作成する準備ができました。
まず、お気に入りのエディターを使用して、/etc/uwsgi/apps-available
にuWSGI構成ファイルを作成します。それをpgadmin.ini
と呼びましょう。
$ Sudo vim /etc/uwsgi/apps-available/pgadmin.ini
少なくとも次のものが含まれている必要があります。
[uwsgi]
socket = /tmp/wsgi/pgadmin.sock
chdir = /path/to/working_directory/.env/lib/python3.6/site-packages/pgadmin4
manage-script-name = true
venv = /path/to/working_directory/.env/
master = true
processes = 1
threads = 4
mount = /=pgAdmin4:app
log-format = %(addr) - %(user) [%(ltime)] "%(method) %(uri) %(proto)" %(status) %(size) "%(referer)" "%(uagent)"
logger = file:/tmp/wsgi/pgadmin-access.log
uid = www-data
gid = www-data
必要なディレクトリを作成し、pgAdmin uWSGIアプリを有効にします
$ Sudo mkdir -p /tmp/wsgi $ Sudo chown www-data:www-data /tmp/wsgi $ Sudo ln -s /etc/uwsgi/apps-available/pgadmin.ini /etc/uwsgi/apps-enabled/pgadmin.ini
デフォルトのuWSGIファイルを別のサービスファイルにコピーし、pipでインストールされたuWSGIバイナリを使用するように編集します。
$ Sudo cp /etc/init.d/uwsgi /etc/init.d/uwsgi-venv $ vim /etc/init.d/uwsgi-venv # replace DAEMON="/usr/bin/uwsgi" to DAEMON="/path/to/working_directory/.env/bin/uwsgi
uWSGI設定を行う必要があります。
次に、uWSGIを起動してみます。
$ Sudo service uwsgi-venv start pgadmin
ここで、pgadmin
は、以前に/etc/uwsgi/apps-enabled
でソフトリンクしたものを指します。 pgadmin.ini
としてリンクした場合は、pgadmin
を使用します。
UWSGIが実行されているかどうかを確認します。
$ ps -eF | grep uwsgi www-data 10582 1 2 32144 91480 0 03:56 ? 00:00:03 /path/to/working_directory/.env/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/pgadmin.ini --daemonize /var/log/uwsgi/app/pgadmin.log www-data 10593 10582 0 87443 2640 0 03:56 ? 00:00:00 /path/to/working_directory/.env/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/pgadmin.ini --daemonize /var/log/uwsgi/app/pgadmin.log
Nginxをインストールしていない場合は、apt-get
を使用してインストールしてください。
$ Sudo apt-get -y install nginx
すでにnginxをインストールしている場合は、一部の構成を調整する必要があります。問題が発生した場合はお知らせください。
次に、前に構成したuWSGIに要求を渡すようにnginxを構成しましょう。
/etc/nginx/sites-available
ディレクトリで、新しいnginx構成ファイルを作成します。ここでは、仮想ホスト名としてpgadmin.local
を使用しています。
$ Sudo vim /etc/nginx/sites-available/pgadmin.conf
この構成ファイルは、少なくとも次のようになります。
server { listen 80; server_name pgadmin.local; location / { include /etc/nginx/uwsgi_params; uwsgi_pass unix:/tmp/wsgi/pgadmin.sock; } }
他のポートをリッスンする必要がある場合は、listen 80;
をlisten <your_port>;
に変更します。
この構成を有効にします。
$ Sudo ln -s /etc/nginx/sites-available/pgadmin.conf /etc/nginx/sites-enabled/pgadmin.conf
新しいnginx構成をテストしてリロードします。
$ Sudo nginx -t && Sudo service nginx reload
構成によっては、この後にファイアウォールの構成が必要になる場合がありますが、その後は、お気に入りのブラウザーで構成済みの仮想ホストを参照できます。
$ firefox http://pgadmin.local
ここではhttpdとnginxの設定に大きな違いはありません。HTTPリクエストをWSGIリクエストとしてWSGIサーバーバックエンドに転送するだけでよく、この場合はmod_proxy_wsgiを使用します。
Httpdをまだインストールしていない場合は、最初にインストールしてください。
$ Sudo apt-get -y install Apache2 Apache2-utils
すでにhttpdをインストールしている場合は、いくつかの設定を調整する必要があるかもしれません。問題が発生した場合はお知らせください。
Mod-proxyとmod-proxy-uwsgiの両方が必要なので、忘れずにインストールしてください。
$ Sudo apt-get -y install libapache2-mod-proxy-uwsgi
次に、前に構成したuWSGIにリクエストを渡すようにhttpdを構成しましょう。
/etc/Apache2/sites-available
ディレクトリに、新しい仮想ホスト構成ファイルを作成します。ここでは、仮想ホスト名としてpgadmin.local
を使用しています。
$ Sudo vim /etc/Apache2/sites-available/pgadmin.conf
この構成ファイルは、少なくとも次のようになります。
<VirtualHost *:80> ServerName pgadmin.local ProxyRequests off ProxyPass "/" "unix:/tmp/wsgi/pgadmin.sock|uwsgi://localhost/" </VirtualHost>
他のポートをリッスンする必要がある場合は、いくつかの変更が必要になります。
<VirtualHost *:80>
を<VirtualHost *:<your_port>>
に変更します
/etc/Apache2/ports.conf
で、<IfModule>
sの下にあるものを含むすべての無関係なListen
sを削除し、Listen <your_port>
を追加します。
それでもデフォルトのサイトが有効になっている場合は、a2dissite
で無効にしてください。
この構成を有効にします。
$ Sudo ln -s /etc/Apache2/sites-available/pgadmin.conf /etc/Apache2/sites-enabled/pgadmin.conf
Mod_proxyとmod_proxy_uwsgiを有効にする
$ Sudo a2enmod proxy proxy_uwsgi
新しいhttpd設定をテストしてリロードします。
$ Sudo apachectl configtest && Sudo service Apache2 reload
構成によっては、この後にファイアウォールの構成が必要になる場合がありますが、その後、お気に入りのブラウザーで構成済みの仮想ホストを参照できます。
$ firefox http://pgadmin.local