Вступление
pgAdmin - платформа для администрирования и разработки с открытым исходным кодом для PostgreSQL и связанных с ним систем управления базами данных. Написанный на Python и jQuery, он поддерживает все функции PostgreSQL. Вы можете использовать pgAdmin для выполнения любых задач - от написания базовых SQL-запросов до мониторинга ваших баз данных и настройки расширенных архитектур баз данных.
В этом руководстве мы рассмотрим процесс установки и настройки последней версии pgAdmin на сервере Ubuntu 18.04, доступа к pgAdmin через веб-браузер и подключения его к базе данных PostgreSQL на вашем сервере.
Предпосылки
Для завершения этого урока вам понадобится:
-
Сервер под управлением Ubuntu 18.04. На этом сервере должен быть пользователь без полномочий root с привилегиями sudo, а также брандмауэр, настроенный с помощью
+ ufw +
. Чтобы получить помощь по настройке, следуйте нашему Initial Руководству по установке сервера для Ubuntu 18.04. -
Веб-сервер Apache установлен на вашем сервере. Следуйте нашему руководству на Как установить веб-сервер Apache в Ubuntu 18.04 , чтобы настроить это на вашем компьютере.
-
PostgreSQL установлен на вашем сервере. Вы можете настроить это, следуя нашему руководству на Как установить и использовать PostgreSQL на Ubuntu 18.04. Следуя этому руководству, * обязательно создайте новую роль и базу данных *, так как вам потребуется оба для подключения pgAdmin к вашему экземпляру PostgreSQL.
-
Python 3 и
+ venv +
установлены на вашем сервере. Следуйте How Чтобы установить Python 3 и настроить среду программирования на сервере Ubuntu 18.04, установите эти инструменты и настройте виртуальную среду.
Шаг 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 темы.