Как установить и настроить pgAdmin 4 в режиме сервера

Вступление

pgAdmin - платформа для администрирования и разработки с открытым исходным кодом для PostgreSQL и связанных с ним систем управления базами данных. Написанный на Python и jQuery, он поддерживает все функции PostgreSQL. Вы можете использовать pgAdmin для выполнения любых задач - от написания базовых SQL-запросов до мониторинга ваших баз данных и настройки расширенных архитектур баз данных.

В этом руководстве мы рассмотрим процесс установки и настройки последней версии pgAdmin на сервере Ubuntu 18.04, доступа к pgAdmin через веб-браузер и подключения его к базе данных PostgreSQL на вашем сервере.

Предпосылки

Для завершения этого урока вам понадобится:

Шаг 1 - Установка pgAdmin и его зависимостей

На момент написания этой статьи самой последней версией pgAdmin является pgAdmin 4, а самой последней версией, доступной через официальные репозитории Ubuntu, является pgAdmin 3. pgAdmin 3 больше не поддерживается, и сопровождающие проекта рекомендуют установить pgAdmin 4. На этом шаге мы рассмотрим процесс установки последней версии pgAdmin 4 в виртуальной среде (как рекомендовано командой разработчиков проекта) и установки его зависимостей с помощью + apt +.

Для начала обновите индекс пакета вашего сервера, если вы еще этого не сделали:

sudo apt update

Далее установите следующие зависимости. К ним относятся + libgmp3-dev +, арифметическая библиотека с множественной точностью; + libpq-dev +, который включает в себя файлы заголовков и статическую библиотеку, которая помогает взаимодействовать с бэкэндом PostgreSQL; и + libapache2-mod-wsgi-py3 +, модуль Apache, позволяющий размещать веб-приложения на основе Python в Apache:

sudo apt install libgmp3-dev libpq-dev libapache2-mod-wsgi-py3

После этого создайте несколько каталогов, в которых pgAdmin будет хранить данные своих сеансов, данные хранилища и журналы:

sudo mkdir -p /var/lib/pgadmin4/sessions
sudo mkdir /var/lib/pgadmin4/storage
sudo mkdir /var/log/pgadmin4

Затем измените владельца этих каталогов на пользователя и группу без полномочий root. Это необходимо, поскольку они в настоящее время принадлежат вашему пользователю * root *, но мы установим pgAdmin из виртуальной среды, принадлежащей вашему пользователю, не являющемуся пользователем root, и процесс установки включает создание некоторых файлов в этих каталогах. Однако после установки мы изменим владельца на пользователя и группу * www-data *, чтобы они могли быть переданы в Интернет:

sudo chown -R : /var/lib/pgadmin4
sudo chown -R : /var/log/pgadmin4

Затем откройте свою виртуальную среду. Перейдите в каталог, в котором находится ваша среда программирования, и активируйте его. В соответствии с соглашениями об именах https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-18- 04-сервер [обязательное руководство по Python 3], мы перейдем в каталог + Environment + и активируем среду + my_env +:

cd environments/
source /bin/activate

После этого загрузите исходный код pgAdmin 4 на свой компьютер. Чтобы найти последнюю версию исходного кода, перейдите на страницу pgAdmin 4 (страница загрузки Python Wheel) и щелкните ссылку для получения последней версии. версия (v3.4, на момент написания статьи). Вы попадете на страницу * Downloads * на сайте PostgreSQL. Оказавшись там, скопируйте ссылку на файл, которая заканчивается на + .whl + - стандартный формат встроенного пакета, используемый для дистрибутивов Python. Затем вернитесь к своему терминалу и выполните следующую команду + wget +, убедившись в том, что вы заменили ссылку на ссылку, скопированную с сайта PostgreSQL, которая загрузит файл + .whl + на ваш сервер:

wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v/pip/pgadmin4--py2.py3-none-any.whl

Затем установите пакет + wheel +, эталонную реализацию стандарта упаковки колеса. Этот пакет, являющийся библиотекой Python, служит расширением для сборки колес и включает в себя инструмент командной строки для работы с файлами + .whl +:

python -m pip install wheel

Затем установите пакет pgAdmin 4 с помощью следующей команды:

python -m pip install pgadmin4--py2.py3-none-any.whl

Это заботится об установке pgAdmin и его зависимостей. Однако, прежде чем подключить его к базе данных, необходимо внести несколько изменений в конфигурацию программы.

Шаг 2 - Настройка pgAdmin 4

Несмотря на то, что pgAdmin был установлен на вашем сервере, необходимо выполнить несколько шагов, чтобы убедиться, что у него есть разрешения и конфигурации, необходимые для правильной работы веб-интерфейса.

Основной файл конфигурации pgAdmin + config.py + читается перед любым другим файлом конфигурации. Его содержимое можно использовать в качестве контрольной точки для дальнейших настроек конфигурации, которые могут быть указаны в других конфигурационных файлах pgAdmin, но во избежание непредвиденных ошибок вы не должны редактировать сам файл + config.py +. Мы добавим некоторые изменения конфигурации в новый файл с именем + config_local.py +, который будет прочитан после основного.

Создайте этот файл сейчас, используя предпочитаемый вами текстовый редактор. Здесь мы будем использовать + nano +:

nano /lib/python3.6/site-packages/pgadmin4/config_local.py

В вашем редакторе добавьте следующий контент:

среды / my_env / Библиотека / python3.6 / сайт-пакеты / pgadmin4 / config_local.py

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
SERVER_MODE = True

Вот что делают эти пять директив:

  • + LOG_FILE +: определяет файл, в котором будут храниться логи pgAdmin.

  • + SQLITE_PATH +: pgAdmin сохраняет пользовательские данные в базе данных SQLite, и эта директива указывает программное обеспечение pgAdmin на эту базу данных конфигурации. Поскольку этот файл находится в постоянном каталоге + / var / lib / pgadmin4 / +, ваши пользовательские данные не будут потеряны после обновления.

  • + SESSION_DB_PATH +: указывает, какой каталог будет использоваться для хранения данных сеанса.

  • + STORAGE_DIR +: определяет, где pgAdmin будет хранить другие данные, такие как резервные копии и сертификаты безопасности.

  • + SERVER_MODE +: установка этой директивы в + True + заставляет pgAdmin работать в режиме сервера, а не в режиме рабочего стола.

Обратите внимание, что каждый из этих путей к файлам указывает на каталоги, созданные вами на шаге 1.

После добавления этих строк сохраните и закройте файл (нажмите + CTRL + X +, затем + Y + и затем + ENTER +). С этими конфигурациями запустите сценарий установки pgAdmin, чтобы установить свои учетные данные для входа:

python my_env/lib/python3.6/site-packages/pgadmin4/setup.py

После выполнения этой команды вы увидите запрос на ввод адреса электронной почты и пароля. Они будут использоваться в качестве ваших учетных данных при последующем доступе к pgAdmin, поэтому обязательно запомните или запомните, что вы вводите здесь:

Output. . .
Enter the email address and password to use for the initial pgAdmin user account:

Email address:
Password:
Retype password:

После этого деактивируйте вашу виртуальную среду:

deactivate

Вспомните пути к файлам, которые вы указали в файле + config_local.py +. Эти файлы хранятся в каталогах, созданных вами на шаге 1, которые в настоящее время принадлежат вашему пользователю без полномочий root. Однако они должны быть доступны пользователю и группе, на которых запущен ваш веб-сервер. По умолчанию в Ubuntu 18.04 это пользователь и группа * www-data *, поэтому обновите разрешения для следующих каталогов, чтобы дать владельцам * www-data * право владения ими обоими:

sudo chown -R www-data:www-data /var/lib/pgadmin4/
sudo chown -R www-data:www-data /var/log/pgadmin4/

При этом pgAdmin полностью настроен. Тем не менее, программа еще не обслуживается с вашего сервера, поэтому она остается недоступной. Для решения этой проблемы мы настроим Apache для обслуживания pgAdmin, чтобы вы могли получить доступ к его пользовательскому интерфейсу через веб-браузер.

Шаг 3 - Настройка Apache

Веб-сервер Apache использует virtual hosts для инкапсуляции деталей конфигурации и размещения нескольких доменов с одного сервера. Если вы следовали обязательному руководству по Apache, вы, возможно, настроили пример файла виртуального хоста под именем + your_domain.conf +, но на этом шаге мы создадим новый, из которого мы сможем служить веб-интерфейсом pgAdmin.

Для начала убедитесь, что вы находитесь в своем корневом каталоге:

cd /

Затем создайте новый файл в каталоге + / sites-available / + с именем + pgadmin4.conf +. Это будет файл виртуального хоста вашего сервера:

sudo nano /etc/apache2/sites-available/pgadmin4.conf

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

/etc/apache2/sites-available/pgadmin4.conf

<VirtualHost *>
   ServerName

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

   <Directory "/home////lib/python3.6/site-packages/pgadmin4/">
       WSGIProcessGroup pgadmin
       WSGIApplicationGroup %{GLOBAL}
       Require all granted
   </Directory>
</VirtualHost>

Сохраните и закройте файл виртуального хоста. Затем используйте скрипт + a2dissite +, чтобы отключить файл виртуального хоста по умолчанию, + 000-default.conf +:

sudo a2dissite 000-default.conf

Затем используйте скрипт + a2ensite +, чтобы включить файл виртуального хоста + pgadmin4.conf +. Это создаст символическую ссылку из файла виртуального хоста в каталоге + / sites-available / + на каталог + / sites-enabled / +:

sudo a2ensite pgadmin4.conf

После этого проверьте правильность синтаксиса вашего файла конфигурации:

apachectl configtest

Если ваш файл конфигурации все в порядке, вы увидите + Синтаксис OK +. Если вы увидите ошибку в выходных данных, снова откройте файл + pgadmin4.conf + и дважды проверьте правильность всех ваших IP-адресов и путей к файлам, а затем повторно запустите + configtest +.

Как только вы увидите + Синтаксис OK + в выходных данных, перезапустите службу Apache, чтобы она прочитала ваш новый файл виртуального хоста:

sudo systemctl restart apache2

Теперь pgAdmin полностью установлен и настроен. Далее мы рассмотрим, как получить доступ к pgAdmin из браузера, прежде чем подключать его к базе данных PostgreSQL.

Шаг 4 - Доступ к pgAdmin

На локальном компьютере откройте предпочитаемый веб-браузер и перейдите по IP-адресу вашего сервера:

http://

Оказавшись там, вы увидите экран входа в систему, подобный следующему:

изображение: https: //assets.digitalocean.com/articles/pgadmin/pgadmin_login_blank.png [экран входа в систему pgAdmin]

Введите учетные данные для входа, которые вы определили на шаге 2, и вы попадете на экран приветствия pgAdmin:

изображение: https: //assets.digitalocean.com/articles/pgadmin/pgadmin_welcome_page_1.png [страница приветствия pgAdmin]

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

Шаг 5 - Настройка вашего пользователя PostgreSQL

Если вы следовали prerequisite учебник PostgreSQL, у вас уже должен быть установлен PostgreSQL на ваш сервер с новой ролью суперпользователя и настройкой базы данных.

По умолчанию в PostgreSQL вы аутентифицируетесь как пользователи базы данных, используя метод аутентификации «Протокол идентификации» или «идентификатор». Это подразумевает, что PostgreSQL берет имя пользователя Ubuntu клиента и использует его в качестве разрешенного имени пользователя базы данных. Это может обеспечить большую безопасность во многих случаях, но также может вызвать проблемы в случаях, когда вы хотите, чтобы внешняя программа, такая как pgAdmin, подключалась к одной из ваших баз данных. Чтобы решить эту проблему, мы установим пароль для этой роли PostgreSQL, который позволит pgAdmin подключаться к вашей базе данных.

В терминале откройте приглашение PostgreSQL под вашей ролью суперпользователя:

sudo -u  psql

В командной строке PostgreSQL обновите профиль пользователя, чтобы иметь надежный пароль по вашему выбору:

ALTER USER  PASSWORD '';

Затем выйдите из командной строки PostgreSQL:

\q

Затем вернитесь к интерфейсу pgAdmin 4 в вашем браузере и найдите меню * Browser * с левой стороны. Щелкните правой кнопкой мыши на * Серверы *, чтобы открыть контекстное меню, наведите указатель мыши на * Создать * и выберите * Сервер …​ *.

изображение: https: //assets.digitalocean.com/articles/pgadmin/create_server_box_resized.png [контекстное меню создания сервера]

Это приведет к тому, что в вашем браузере появится окно, в которое вы введете информацию о вашем сервере, роли и базе данных.

На вкладке * General * введите имя для этого сервера. Это может быть что угодно, но вам может быть полезно сделать что-то описательное. В нашем примере сервер называется + Sammy-server-1 +.

изображение: https: //assets.digitalocean.com/articles/pgadmin/server_general_tab_resized.png [Создать сервер - вкладка Общие]

Далее нажмите на вкладку * Connection *. В поле * Имя хоста / адрес * введите + localhost +. * Порт * должен быть установлен в + 5432 + по умолчанию, что будет работать для этой настройки, так как это порт по умолчанию, используемый PostgreSQL.

В поле * База данных обслуживания * введите имя базы данных, к которой вы хотите подключиться. Обратите внимание, что эта база данных уже должна быть создана на вашем сервере. Затем введите имя пользователя и пароль PostgreSQL, которые вы настроили ранее, в поля * Имя пользователя * и * Пароль * соответственно.

изображение: https: //assets.digitalocean.com/articles/pgadmin/connection_tab_resized.png [Создать сервер - вкладка Подключение]

Пустые поля на других вкладках являются необязательными, и их необходимо заполнять только в том случае, если у вас есть особые настройки, в которых они требуются. Нажмите кнопку * Сохранить *, и база данных появится под * Серверы * в меню * Браузер *.

Вы успешно подключили pgAdmin4 к своей базе данных PostgreSQL. Вы можете делать с панелью управления pgAdmin практически все, что хотите из командной строки PostgreSQL. Чтобы проиллюстрировать это, мы создадим пример таблицы и наполним ее некоторыми примерами данных через веб-интерфейс.

Шаг 6 - Создание таблицы в панели управления pgAdmin

На панели инструментов pgAdmin найдите меню * Browser * в левой части окна. Нажмите на знак плюс (* + ) рядом с * Серверы (1) *, чтобы развернуть древовидное меню внутри него. Затем щелкните знак плюса слева от сервера, который вы добавили на предыдущем шаге (в нашем примере это * Sammy-server-1 *), затем разверните * Базы данных *, имя базы данных, которую вы добавили ( sammy *, в наш пример), а затем * Схемы (1) *. Вы должны увидеть древовидное меню, подобное следующему:

изображение: https: //assets.digitalocean.com/articles/pgadmin/table_tree_menu_resized.png [Расширенное древовидное меню браузера]

Щелкните правой кнопкой мыши элемент списка * Tables *, затем наведите курсор на * Create * и выберите * Table… *.

изображение: https: //assets.digitalocean.com/articles/pgadmin/create_table_resized.png [контекстное меню создания таблицы]

Это откроет окно * Create-Table *. На вкладке * General * этого окна введите имя таблицы. Это может быть что угодно, но для простоты мы будем называть это * table-01 *.

изображение: https: //assets.digitalocean.com/articles/pgadmin/create_table_general_tab_1.png [Создать таблицу - вкладка Общие]

Затем перейдите на вкладку * Columns * и щелкните значок * + * в правом верхнем углу окна, чтобы добавить несколько столбцов. При добавлении столбца необходимо указать ему * Имя * и * Тип данных *, и вам может потребоваться выбрать * Длина *, если этого требует тип данных, который вы выбрали.

Кроме того, в official PostgreSQL документация говорится, что добавление первичного ключа в таблицу обычно является наилучшей практикой. Primary key - это ограничение, которое указывает конкретный столбец или набор столбцов, которые можно использовать в качестве специального идентификатора для строк в таблице. Это не является обязательным требованием, но если вы хотите установить один или несколько столбцов в качестве первичного ключа, переключите переключатель в крайнем правом положении с * Нет * на * Да *.

Нажмите кнопку * Сохранить *, чтобы создать таблицу.

изображение: https: //assets.digitalocean.com/articles/pgadmin/create_table_add_column_1primkey.png [Создать таблицу - вкладка столбцов с включенным первичным ключом]

К этому моменту вы создали таблицу и добавили в нее пару столбцов. Однако столбцы еще не содержат никаких данных. Чтобы добавить данные в новую таблицу, щелкните правой кнопкой мыши имя таблицы в меню * Браузер *, наведите курсор на * Scripts * и выберите * INSERT Script *.

изображение: https: //assets.digitalocean.com/articles/pgadmin/insert_script_context_menu.png [контекстное меню сценария INSERT]

Это откроет новую панель на приборной панели. В верхней части вы увидите частично завершенный оператор + INSERT + с соответствующими именами таблиц и столбцов. Продолжайте и замените вопросительные знаки (*? *) На некоторые фиктивные данные, убедившись, что добавляемые вами данные совпадают с типами данных, выбранными для каждого столбца. Обратите внимание, что вы также можете добавить несколько строк данных, добавив каждую строку в новый набор скобок, причем каждый набор скобок отделяется запятой, как показано в следующем примере.

Если вы хотите, не стесняйтесь заменить частично завершенный скрипт + INSERT + на следующий пример выражения + INSERT +:

INSERT INTO public."table-01"(
   col1, col2, col3)
   VALUES ('Juneau', 14, 337), ('Bismark', 90, 2334), ('Lansing', 51, 556);

изображение: https: //assets.digitalocean.com/articles/pgadmin/insert_script.png [Пример оператора INSERT]

Нажмите на значок молнии (* ⚡ *), чтобы выполнить оператор + INSERT +. Чтобы просмотреть таблицу и все данные в ней, еще раз щелкните правой кнопкой мыши имя вашей таблицы в меню * Браузер *, наведите курсор на * Просмотр / Редактирование данных * и выберите * Все строки *.

изображение: https: //assets.digitalocean.com/articles/pgadmin/view_edit_data_all_rows.png [Просмотр / редактирование данных, контекстное меню всех строк]

Откроется еще одна новая панель, ниже которой на вкладке * Вывод данных * на нижней панели можно просмотреть все данные, хранящиеся в этой таблице.

изображение: https: //assets.digitalocean.com/articles/pgadmin/view_data_output.png [Просмотр данных - пример вывода данных]

После этого вы успешно создали таблицу и заполнили ее некоторыми данными через веб-интерфейс pgAdmin. Конечно, это всего лишь один метод, который вы можете использовать для создания таблицы через pgAdmin. Например, можно создать и заполнить таблицу с использованием SQL вместо метода на основе графического интерфейса, описанного в этом шаге.

Заключение

В этом руководстве вы узнали, как установить pgAdmin 4 из виртуальной среды Python, настроить его, передать его в Интернет с помощью Apache и как подключить его к базе данных PostgreSQL. Кроме того, в этом руководстве описан один метод, который можно использовать для создания и заполнения таблицы, но pgAdmin можно использовать не только для создания и редактирования таблиц.

Для получения дополнительной информации о том, как получить максимальную отдачу от всех функций pgAdmin, мы рекомендуем вам ознакомиться с документацией project. Вы также можете узнать больше о PostgreSQL через наши Community tutorials темы.

Related