Инструмент администрирования PostgreSQL за nginx

У меня есть VPS с установленным PostgreSQL. У меня есть установка nginx с кучей обратных прокси для различных инструментов, графаны, сайтов Node.js и так далее. Я пытаюсь настроить PostgreSQL прямо сейчас, и я просто не могу разработать веб-инструмент администрирования, доступный извне.

Я пробовал установить обычный pgAdmin с хостингом Apache2, но этот очевидный факт. конфликтует с nginx. Я пытался найти хорошее руководство по pgAdmin за обратным прокси-сервером nginx, но единственный, который я нашел ( https://github.com/rbernardes/nginx-pgadmin ), вообще не работал, когда Я попытался запустить скрипт конфигурации py. Я мог бы погрузиться в это сложнее, но моя точка зрения в том, что pgAdmin, похоже, не очень хорошо работает с nginx, и я думал, что существует наиболее подходящая альтернатива для Интернета? Но здесь вроде суховато ...

Кто-нибудь может пролить свет на это? Спасибо!

0
задан 25 April 2020 в 13:25

1 ответ

пытался установить обычный pgAdmin с хостингом Apache2, но это очевидно. конфликтует с nginx

, этого не будет, если вы настроите Apache2 для прослушивания другого порта, который nginx не использует.

pgAdmin, похоже, плохо работает с nginx

установите и настройте uWSGI с помощью приложения pgAdmin, затем настройте nginx на использование uwsgi_pass для связи с uWSGI.


Edit 2020-05-10: Дополнительные подробности и информация

Здесь есть два решения: либо использовать nginx + uwsgi_pass, либо Apache httpd + mod_proxy_wsgi. Давайте углубимся в оба.

Предварительные требования

  1. Python и заголовки для разработки Python

    Установите Python и совместимые с ним заголовки для разработки, предпочтительно Python >=3.6. Библиотеки PCRE 3 необходимы для того, чтобы uwsgi мог обрабатывать маршрутизацию регулярных выражений.

$ sudo apt-get update && apt-get -y install build-essential python3 python3-dev libpcre3-dev libpcre3
  1. Виртуальная среда Python

    Установите pgAdmin в виртуальной среде, будь то venv, virtualenv, conda, даже что угодно; просто чтобы убедиться, что ваш менеджер пакетов ОС не будет мешать вашей среде python (версиям, пакетам и т. д.).

    Если вы используете venv, это должно быть что-то вроде

$ cd /path/to/working_directory

# Установите виртуальную среду в .env и активируйте ее.
$ python3 -m venv .env
$ источник .env/bin/активировать

# обновить существующие пакеты pip и установить колесо.
(.env) $ pip install --upgrade pip setuptools
(.env) $ pip установить колесо

# установить pgAdmin 4.21
(.env) $ установка pip https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v4.21/pip/pgadmin4-4.21-py2.py3-none-any.whl

uWSGI и pgAdmin

Установка uWSGI

Чтобы ваш веб-сервер мог подключиться к pgAdmin, вы будете использовать WSGI или HTTP-сервер. pgAdmin поддерживает uWSGI и Gunicorn.

Здесь мы будем использовать uWSGI, но если вы используете другой сервер WSGI, просто убедитесь, что он прослушивает сокет UNIX /tmp/wsgi/pgadmin.sock

Во-первых, вам понадобится для установки uWSGI. Вы можете установить uWSGI с помощью apt-get или с помощью pip.

Оба в порядке; но с pip вам нужно будет написать свой собственный служебный файл; а с помощью apt-get вам нужно будет признать, что вы используете более старую версию uWSGI.Мы установим оба, используя служебный файл, распространяемый Ubuntu, и последнюю версию, распространяемую pip uwsgi, двоичный файл

Установить распространяемый Ubuntu uwsgi
$ sudo apt-get -y установить uwsgi
Установите pip-распределенный uwsgi
$ источник /путь/к/рабочему_каталогу/.env/bin/активировать
(.env) $ pip установить uwsgi

# Распространяемая Ubuntu версия
(.env) $ /usr/bin/uwsgi --версия
2.0.15-дебиан

# pip-распределенная версия
(.env) $ uwsgi --версия
2.0.18

# служебный файл
(.env) $ ls /etc/init.d/uwsgi
/etc/init.d/uwsgi

Установка pgAdmin

Далее мы настроим 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

/var/log/pgadmin и DATA_DIR должны полностью контролироваться uWSGI, поскольку pgAdmin будет работать под управлением 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

Войдите в нашу виртуальную среду и запустите setup.py pgAdmin.

$ источник /путь/к/рабочему_каталогу/.env/bin/активировать
(.env) $ cd /path/to/working_directory/.env/lib/python3.6/site-packages/pgadmin4
(.env) $ установка Python.пи

Следуйте инструкциям по настройке, пока они не будут завершены, и запишите свой адрес электронной почты и пароль, созданные здесь.

Затем исправьте разрешения /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 уже должен быть полностью настроен.

Интеграция uWSGI и pgAdmin

Теперь мы готовы интегрировать pgAdmin и uWSGI, создав сервер WSGI, который прослушивает сокет UNIX /tmp/wsgi/pgadmin.sock.

Сначала с помощью вашего любимого редактора создайте файл конфигурации uWSGI в /etc/uwsgi/apps-available. Назовем его 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-данные:www-данные /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
# замените DAEMON="/usr/bin/uwsgi" на 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.

$ пс -eF | grep uwsgi
www-данные 10582 1 2 32144 91480 0 03:56 ? 00:00:03 /путь/к/рабочему_каталогу/.env/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/pgadmin.ini -- демонизировать /var/log/uwsgi/app/pgadmin.log
www-данные 10593 10582 0 87443 2640 0 03:56 ? 00:00:00 /путь/к/рабочему_каталогу/.env/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/pgadmin.ini -- демонизировать /var/log/uwsgi/app/pgadmin.log

nginx и uWSGI

Если вы не установили nginx, установите его с помощью apt-get.

$ sudo apt-get -y установить nginx

Если вы уже установили nginx, вам может потребоваться изменить некоторые настройки. Дайте мне знать, если у вас возникли проблемы тогда.

Далее давайте настроим nginx так, чтобы он передавал любые запросы к uWSGI, который мы настроили ранее.

В каталоге /etc/nginx/sites-available создайте новый файл конфигурации nginx. Здесь мы используем pgadmin.local в качестве имени виртуального хоста.

$ sudo vim /etc/nginx/sites-available/pgadmin.conf

Этот файл конфигурации должен выглядеть примерно так:

server {
слушать 80;
имя_сервера pgadmin.local;

место расположения / {
включить /etc/nginx/uwsgi_params;
uwsgi_pass unix:/tmp/wsgi/pgadmin.sock;
 }
}

Если вам нужно прослушивать другой порт, измените listen 80; на listen ;.

Включите эту конфигурацию.

$ sudo ln -s /etc/nginx/sites-available/pgadmin.conf /etc/nginx/sites-enabled/pgadmin.конф

Протестируйте и перезагрузите новую конфигурацию nginx.

 $ sudo nginx -t && sudo service nginx перезагрузить

В зависимости от вашей конфигурации после этого вам может потребоваться настроить брандмауэр, но после этого вы сможете просматривать настроенный виртуальный хост с помощью своего любимого браузера.

 $ firefox http://pgadmin.local

httpd и uWSGI

Здесь нет большой разницы между конфигурацией httpd и nginx, вам просто нужно перенаправить HTTP-запрос как запрос WSGI на серверную часть WSGI, в данном случае, используя mod_proxy_wsgi.

Сначала установите httpd, если вы еще не установили его.

$ sudo apt-get -y установить apache2 apache2-utils

Если вы уже установили httpd, вам может потребоваться изменить некоторые настройки. Дайте мне знать, если у вас возникли проблемы тогда.

Не забудьте установить mod-proxy и mod-proxy-uwsgi, так как оба эти модуля необходимы.

$ sudo apt-get -y установить libapache2-mod-proxy-uwsgi

Далее давайте настроим httpd для передачи любых запросов к uWSGI, который мы настроили ранее.

В каталоге /etc/apache2/sites-available создайте новый файл конфигурации виртуального хоста. Здесь мы используем pgadmin.local в качестве имени виртуального хоста.

$ sudo vim /etc/apache2/sites-available/pgadmin.conf

Этот файл конфигурации должен выглядеть примерно так:


Имя сервера pgadmin.local
ProxyRequests отключены
ProxyPass "/" "unix:/tmp/wsgi/pgadmin.sock|uwsgi://localhost/"

Если вам нужно прослушивать другой порт, вам потребуется несколько изменений.

  1. Замените на >

  2. в /etc/apache2/ports.conf,удалите все ненужные Listen, включая те, что находятся в , и добавьте Listen .

  3. Если у вас по-прежнему включен сайт по умолчанию, отключите его с помощью 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
1
ответ дан 5 May 2020 в 16:21

Другие вопросы по тегам:

Похожие вопросы: