Rating@Mail.ru
IPB
Etersoft - from Windows to Linux
Etersoft
решения для перехода
с Windows на Linux
Дружественные сайты: alv.me и Rus-Linux.net

Здравствуйте, гость ( Вход | Регистрация ) Поиск · 

 
Reply to this topic Start new topic
> Запуск pgadmin4 на платформе OpenBSD, Openbsd pgadmin4 wsgi apache
kasak
Jan 16 2018, в 16:25
Сообщение #1


Коренной житель
Иконка группы

Сообщений: 880

Вставить имя   :   Цитата

ОС: OpenBSD

Группа: Участники

Автор темы
Вместо предисловия:
config.py:
Цитата
# NOTE: This is NOT recommended for production use, only for debugging
# or testing. Production installations should be run as a WSGI application
# behind Apache HTTPD.


Я был несколько удивлён тому, что в сети довольно таки мало информации по поводу того, как по-человечески развернуть pgadmin4, чтобы работать с ним через веб интерфейс. Особенно остро этот вопрос стоит у админов, которые хотят по каким-либо причинам, перелезть на postgresql или же просто осваивают его с нуля.

В статье я разложу по полочкам, что да как делается.

Для работы мы будем использовать ОС OpenBSD.

Нам понадобятся следующие пакеты:
Код
pkg_add apache-httpd ap2-mod_wsgi postgresql-server py-pip py-virtualenv bash


Все остальные нужные пакеты потянутся к этим пакетам как зависимые.

После чего нам потребуется скачать самую свежую версию pgadmin4 отсюда: https://www.pgadmin.org/download/pgadmin-4-python-wheel/
На момент написания статьи это файлик pgadmin4-2.1-py2.py3-none-any.whl

Теперь незнающему человеку следует понять, что мы собирается делать. Pgadmin-это веб приложение! И сборки, доступные на сайте или в дистрибутивах, это на самом деле интерфейс, который всё равно будет открывать веб приложение.
В следующих шагах мы создадим для пгадмина виртуальное окружение на базе питона (virtualenv), и в это виртуальное окружение установим пгадмин. У пгадмина должна быть своя папка с данными, в которую он будет записывать информацию. Это тоже будет рассмотрено дальше. Может быть на этом этапе всё звучит сложно, но это не так, и я надеюсь дальше станет понятнее.

Для того, чтобы создать виртуальное окружение, нам нужно найти место, где файловая система смонтирована с флагом wxallowed, иначе питон не запустится. (Эта часть разумеется касается только OpenBSD, для Linux можно сразу переходить к созданию виртуального окружения) У нас есть несколько путей решения данного вопроса:
1) Установить pgadmin прямо в /usr/local. Плюсы: ничего не надо править в fstab. Минусы: разводим мусор в системе.
2) Смонтировать /home с флагом wxallowed, как самый тостый раздел и поставить pgadmin туда. Плюсы: не очень сильно замусорим систему. Минусы: небольшая дыра в безопасности.
3) На мой взгляд, самый идеальный способ: добавить в систему диск, откусить от него маленький кусочек под pgadmin и смонтировать этот раздел например на /opt, и туда поставить pgadmin. Плюсы: вообще не замусорена система, дыры в безопасности минимизированы. Минусы: расточительное использование диска.

В данный момент у меня /home смонтирован с флагом wxallowed и можно работать на этой базе.
Создадим виртуальное окружение:
Код
cd /home
virtualenv pgadmin4


Если проблем нет, вы увидите сообщение, что в виртуальное окружение установлен python, pip и прочие прелести.
Теперь, чтобы работать с этим окружением, нам нужно взять его системные переменные. К сожалению, эта фича работает только в bash, поэтому сначала запустим баш, а из него окружение:
Код
bash
source ./pgadmin4/bin/activate


Мы увидим, что в строке приглашения появилось название окружения. В него нужно установить пгадмин, вот таким незатейливым образом (подразумевается что whl файлик уже скачан и лежит в домашней директории юзера kasak):
Код
pip install ~kasak/pgadmin4-2.1-py2.py3-none-any.whl


Готово. Само приложение установлено, давайте теперь настроим pgadmin. Ему нужна папка, в которую он может писать логи и сессии, и поскольку он будет запускаться апачем, доступ к этой папке должен быть у апача. Давайте создадим эту папку например в /var/www, раз уж там лежит всё связанное с апачем.
Код
mkdir /var/www/pgadmin4


Следующим шагом давайте создадим файл конфигурации для пгадмин. Для этого перейдям в директорию его установки:
Код
cd /home/pgadmin4/lib/python2.7/site-packages/pgadmin4/


В этой директории уже находятся файлы config.py и config_distro.py, их трогать мы не будем, а как и положено по инструкции создаём свой конфиг config_local.py со следующим содержимым:
Код
# cat config_local.py                                                                                                                                                                                              
LOG_FILE = '/var/www/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/www/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/www/pgadmin4/sessions'
STORAGE_DIR = '/var/www/pgadmin4/storage'


Теперь когда конфиг готов, нужно запустить setup.py:
Код
python setup.py

Сетап попросит нас ввести e-mail и пароль для доступа к pgadmin. Придумываем и вводим. Обратите внимание, что это не то же самое, что логин и пароль от postgresql, как было например в phpmyadmin, когда для доступа мы использовали логин и пароль самой базы, данный логин будет служить для доступа именно в пгадмин через веб интерфейс.

Теперь можно деактивировать наше окружение, и выйти из баша, кому больше нравится ksh:
Код
deactivate
exit


Сейчас наш пгадмин готов к работе, нужно лишь подружить с ним апача. Для этого, прежде всего, не забудьте изменить владельца директории куда пгадмин пишет данные:
Код
chown -R www:www /var/www/pgadmin4


Владельца /home/pgadmin4 менять не нужно, он может оставаться кем захочет.

В OpenBSD апач по дефолту читает conf файлики в директории /var/www/conf/modules
для включения mod_wsgi можем создать там файл например wsgi.conf с содержимым:
Код
# cat /var/www/conf/modules/wsgi.conf                                                                                                                                                                              
LoadModule wsgi_module /usr/local/lib/apache2/mod_wsgi.so


Теперь нужно настроить virtualhost с нужными опциями.
Поскольку я сейчас работаю с пустым, коробочным конфигом апача, для начала я раскоментирую эту строку в httpd.conf:
Код
# cat /etc/apache2/httpd2.conf | grep vhosts
Include /etc/apache2/extra/httpd-vhosts.conf

по умолчанию она закоментирована.
а в httpd-vhosts.conf нужно создать вихост вот с такими параметрами:

Код
<VirtualHost *:80>
    ServerName foo

    WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/home/pgadmin4
    WSGIScriptAlias / /home/pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.wsgi

    <Directory /home/pgadmin4/lib/python2.7/site-packages/pgadmin4>
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>

</VirtualHost>


Вот на этом месте читателю следует быть предельно осторожным! Внимательно, и ещё более !!!внимательно!!! Смотрите на пути которые прописываете. Путь довольно таки длинный, и можно упустить какую-нибудь циферку. Если проверили трижды, проверьте четырежды. Если есть сомнения, делайте pwd из директории с пгадмином и копируйте. Если всё ещё что-то не работает, смотрите лог в /var/www/logs/error_log
Если всё пошло по плану, то в браузере мы увидим приглашение к вводу емейла и пароля для пгадмин. Залогинившись, нужно в пгадмин прописать сервер postgresql, с которым будем работать.

Я надеюсь что описал всё дотошно и достаточно понятно чтобы начать работу с pgadmin. Буду очень рад если помог вам в освоении postgresql.


--------------------
Linux fedora 4.14.11-300.fc27.x86_64 #1 SMP Wed Jan 3 13:52:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


Спасибо сказали:
Go to the top of the page
 
+Quote Post

 Reply to this topic Start new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 20th February 2018 - в 06:42




Rating@Mail.ru