Поиск по сайту:

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


Введение

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

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

Предпосылки

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

  • Сервер под управлением Ubuntu 18.04. На этом сервере должен быть пользователь без полномочий root с привилегиями sudo, а также брандмауэр, настроенный с помощью ufw. Чтобы получить помощь по настройке, следуйте нашему Руководству по начальной настройке сервера для Ubuntu 18.04.
  • Nginx установлен и настроен в качестве обратного прокси-сервера для http://unix:/tmp/pgadmin4.sock в соответствии с шагами 1 и 2 раздела Как настроить Nginx в качестве обратного прокси-сервера в Ubuntu 22.04.
  • PostgreSQL установлен на вашем сервере. Вы можете настроить это, следуя нашему руководству «Как установить и использовать PostgreSQL в Ubuntu 18.04». Следуя этому руководству, обязательно создайте новую роль и базу данных, так как вам потребуется и то, и другое для подключения pgAdmin к вашему экземпляру PostgreSQL.
  • Python 3 и venv установлены на вашем сервере. Следуйте инструкциям по установке Python 3 и настройке среды программирования на сервере Ubuntu 18.04, чтобы установить эти инструменты и настроить виртуальную среду.

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

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

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

  1. sudo apt update

Затем установите следующие зависимости. К ним относятся libgmp3-dev, библиотека вычислений с высокой точностью; libpq-dev, который включает файлы заголовков и статическую библиотеку, помогающую взаимодействовать с серверной частью PostgreSQL:

  1. sudo apt install libgmp3-dev libpq-dev

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

  1. sudo mkdir -p /var/lib/pgadmin4/sessions
  2. sudo mkdir /var/lib/pgadmin4/storage
  3. sudo mkdir /var/log/pgadmin4

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

  1. sudo chown -R sammy:sammy /var/lib/pgadmin4
  2. sudo chown -R sammy:sammy /var/log/pgadmin4

Затем откройте виртуальную среду. Перейдите в каталог, в котором находится ваша среда программирования, и активируйте ее. Следуя соглашениям об именах из обязательного руководства по Python 3, мы перейдем в каталог environments и активируем среду my_env:

  1. cd environments/
  2. source my_env/bin/activate

После активации виртуальной среды было бы разумно убедиться, что в вашей системе установлена последняя версия pip. Версия pip, доступная в репозиториях Ubuntu 18.04 по умолчанию, — это версия 9.0.1, а последняя версия — 21.0.1. Если вы установили пакет python3-pip, как описано в предварительном руководстве по установке Python, но не обновили его до последней версии, вы столкнетесь с проблемами при настройке pgAdmin на следующем шаге.

Чтобы обновить pip до последней версии, выполните следующую команду:

  1. python -m pip install -U pip

После этого загрузите исходный код pgAdmin 4 на свой компьютер. Чтобы найти последнюю версию исходного кода, перейдите на страницу загрузки pgAdmin 4 (Python Wheel). Щелкните ссылку для получения последней версии (v6.10, на момент написания этой статьи), затем на следующей странице щелкните ссылку для чтения pip. С этой страницы браузера файлов скопируйте ссылку на файл, которая заканчивается на .whl — стандартный формат встроенного пакета, используемый для дистрибутивов Python. Затем вернитесь к своему терминалу и выполните следующую команду wget, заменив ссылку на ту, которую вы скопировали с сайта PostgreSQL, которая загрузит файл .whl. на ваш сервер:

  1. wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v6.10/pip/pgadmin4-6.10-py3-none-any.whl

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

  1. python -m pip install wheel

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

  1. python -m pip install pgadmin4-6.10-py3-none-any.whl

Затем установите Gunicorn, сервер Python WSGI, который будет использоваться с Nginx для обслуживания веб-интерфейса pgadmin далее в руководстве:

  1. python -m pip install gunicorn

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

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

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

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

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

  1. nano my_env/lib/python3.10/site-packages/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.

После добавления этих строк сохраните и закройте файл. Если вы использовали nano, нажмите CTRL + X, затем Y, а затем ENTER.

Имея эти настройки, запустите сценарий установки pgAdmin, чтобы указать свои учетные данные для входа:

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

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

Output
. . . Enter the email address and password to use for the initial pgAdmin user account: Email address: sammy@example.com Password: Retype password:

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

Шаг 3 — Запуск Gunicorn и настройка Nginx

Вы будете использовать Gunicorn для обслуживания pgAdmin в качестве веб-приложения. Однако в качестве сервера приложений Gunicorn будет доступен только локально и недоступен через Интернет. Чтобы сделать его доступным удаленно, вам нужно будет использовать Nginx в качестве обратного прокси-сервера.

После выполнения предварительных условий для настройки Nginx в качестве обратного прокси-сервера ваш файл конфигурации Nginx будет содержать следующее:

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;
        
    location / {
        proxy_pass http://unix:/tmp/pgadmin4.sock;
        include proxy_params;
    }
}

Эта конфигурация обратного прокси-сервера позволяет вашему серверу Gunicorn быть доступным в вашем локальном браузере. Запустите сервер Gunicorn с помощью приложения pgAdmin:

  1. gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir ~/environments/my_env/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app
Output
[2022-08-29 00:19:11 +0000] [7134] [INFO] Starting gunicorn 20.1.0 [2022-08-29 00:19:11 +0000] [7134] [INFO] Listening at: unix:/tmp/pgadmin4.sock (7134) [2022-08-29 00:19:11 +0000] [7134] [INFO] Using worker: gthread [2022-08-29 00:19:11 +0000] [7135] [INFO] Booting worker with pid: 7135

Примечание. Вызов Gunicorn таким образом привязывает процесс к вашему терминалу. Для более долгосрочного решения запустите Gunicorn с помощью такой программы, как Supervisor. Вы можете следовать этому руководству о том, как установить Supervisor и управлять им на Ubuntu и Debian VPS.

Поскольку Gunicorn действует как сервер приложений, доступный через обратный прокси-сервер Nginx, вы готовы получить доступ к pgAdmin в своем веб-браузере.

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

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

http://your_server_ip

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

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

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

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

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

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

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

  1. sudo -u sammy psql

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

  1. ALTER USER sammy PASSWORD 'password';

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

  1. \q

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

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

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

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

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

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

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

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

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

Щелкните правой кнопкой мыши элемент списка «Таблицы», затем наведите курсор на «Создать» и нажмите «Таблица…».

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

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

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

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

К этому моменту вы создали таблицу и добавили в нее пару столбцов. Однако столбцы еще не содержат никаких данных. Чтобы добавить данные в новую таблицу, щелкните правой кнопкой мыши имя таблицы в меню «Браузер», наведите курсор на «Сценарии» и нажмите «ВСТАВИТЬ сценарий».

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

Если хотите, не стесняйтесь заменить частично завершенный скрипт INSERT этим примером инструкции INSERT:

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

Щелкните значок треугольника (▶), чтобы выполнить оператор INSERT. Обратите внимание, что в более старых версиях pgAdmin значок выполнения вместо молнии (⚡).

Чтобы просмотреть таблицу и все данные в ней, еще раз щелкните правой кнопкой мыши имя таблицы в меню «Браузер», наведите курсор на «Просмотр/редактирование данных» и выберите «Все строки».

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

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

Заключение

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

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