Быстрая установка PostgreSQL (PgAdmin 4, Adminer) на VPS

Kate

Administrator
Команда форума
Иногда, в тестовых или учебных целях необходимо быстро развернуть Postgres сервер и систему администрирования БД, такие как PgAdmin или Adminer. Конечно можно использовать облачные сервисы баз данных (Amazon, Google cloud, Яндекс облако …) , но я решил сделать это на VPS и через Docker. Благо, как я говорил выше, для тестов, можно арендовать сейчас недорого VPS с почасовой оплатой (~ 0,26 - 0,58 р/час), и опыт работы с Unix системами будет полезен.

рис.1 Цены на VPS

рис.1 Цены на VPS
В качестве базового для докера, я взял этот «образ», вернее репозиторий compose-postgres и добавил в файл «docker-compose.yml» в раздел «services» сервис «adminer».

Установку Docker-а и Docker Compose взял с официальной страницы Install Docker Engine on Ubuntu.

Этой информации мне хватило, чтобы создать один единственный bash скрипт «1_postgres.sh», чтобы запустив его на VPS (ОС Ubuntu), установить докер с компоусом, PostgreSQL, PgAdmin и Adminer.

Cпросите, зачем Adminer, если есть PgAdmin? Иногда в своих тестовых проектах, используем SQLite, или другую СУБД. Adminer позволяет подключиться к большому списку СУБД (MySQL, MS SQL, Oracle, MongoDB, ..) .

И так для установки надо перейти на мной созданный репозиторий на гитхабе. Подключиться к своему VPS по SSH.

рис.2 Переход в репозиторий, Подключение к VPS

рис.2 Переход в репозиторий, Подключение к VPS
Скопировать команду, вставить в терминале и запустить.

Команды скачает скрипт «1_postgres.sh», сделает его исполняемым и запустит его.

рис.3 Запуск скрипта

рис.3 Запуск скрипта
Краткое описание действий скрипта описано на Гитхабе.

Далее скрипт спросит, хотите ли поменять пароль у root-a

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

рис.4 Смена пароля root-а. Добавление пользователя

рис.4 Смена пароля root-а. Добавление пользователя
Далее я не буду описывать действия скрипта, просто приложу скрины, где справа будет исполняемый скрипт с подсказками, слева то, что происходит в терминале.

рис.5 Установка Docker, Docker-compose

рис.5 Установка Docker, Docker-compose
рис.6 Скачивание «docker-compose.ym»l

рис.6 Скачивание «docker-compose.ym»l
рис.7 Ввод пользователя и пароля для БД

рис.7 Ввод пользователя и пароля для БД
рис.8 Завершение работы скрипта

рис.8 Завершение работы скрипта
Установка завершена. Видим запущенные контейнеры. Ниже информацию для подключения через PgAdmin и Adminer.

Вводим эти данные в браузере и проверяем работу.

рис.9.1 Подключение через PgAdmin и Adminer

рис.9.1 Подключение через PgAdmin и Adminer
рис.9.2 Подключение через PgAdmin, добавление сервера

рис.9.2 Подключение через PgAdmin, добавление сервера
рис.9.3 Подключение через PgAdmin, ввод названия сервера

рис.9.3 Подключение через PgAdmin, ввод названия сервера
рис.9.4 Подключение через PgAdmin и Adminer, ввод настроек подключения

рис.9.4 Подключение через PgAdmin и Adminer, ввод настроек подключения
рис.9.5 Подключение через PgAdmin и Adminer, проверка. Инструкция для изменения настроек подключения

рис.9.5 Подключение через PgAdmin и Adminer, проверка. Инструкция для изменения настроек подключения
Если посмотреть процессы докера (рис.10), то увидим адреса 172.18.0.2, 172.18.0.3 и 172.18.0.4.

Это адреса подсетки «postgresql_vps_net_postgres» 172.18.0.0/24, которые создал Docker. Потому для подключения, каких то внутренних проектов на сервере к БД PostgreSQL, можно использовать не внешний IP адрес 91.222.236.168, а 172.18.0.3 — где крутится как раз на порту 5432 контейнер с PostgreSQL. Этот же IP адрес можно использовать и в PgAdmin (Host name/address) и в Adminer (Server). Но если вы удаленно, например у Вас локально стоит PgAdmin и Вы хотите подключиться к базе на VPS, то необходимо указывать внешний IP адрес.

рис.10 Сеть докера. Проверка с локального PgAdmin и с IP адресом докера

рис.10 Сеть докера. Проверка с локального PgAdmin и с IP адресом докера
В конце завершения скрипта (рис.9.5), выводится небольшая инструкция для смены настроек. Например, в случае если у Вас PostgreSQL уже крутиться на основном сервере на порту 5432 и потому Вам необходимо поменять порт Postgres сервера в докере на 5433 к примеру, или поменять порты PgAdmin-a и Adminer-a на 15050 и 18080, или поменять имя пользователя и пароль к БД PostgreSQL. Для примера приведен файл «.env_example».

Сделаем как в инструкции (рис.9.5).

рис.11 Смена настроек по инструкции

рис.11 Смена настроек по инструкции
Проверим

рис.12 Проверка подключений, после изменения настроек (переменных окружения в файле .env)

рис.12 Проверка подключений, после изменения настроек (переменных окружения в файле .env)
Если вы обеспокоены безопасностью сервера, то можно контейнеры останавливать и при необходимости включать:

docker container stop adminer_cont

docker container start adminer_cont

Либо без слова «container»:

docker stop pgadmin_cont

docker start pgadmin_cont

А для PostgreSQL сервера, нужно скорее всего заходить в контейнер и настроить конфигурационные файлы «pg_hba.conf, … », для доступа не со всех IP адресов, а с внутренних адресов докера 172.18.0.0 (или 172.19.0.0), но это отдельная тема, касаться её не будем.

Бывает в процессе разработки необходимо проверить работу с конкретной версией PostgreSQL, поэтому в файле «docker-compose.yml», я оставил закомментированными такие строчки «image: postgres:12.6-alpine», изменив версию и раскомментировав, можно проверять на определенной версии.

Работа c SQLite в Adminer здесь не возможна, так как Adminer требует ввод пароля, сделано для безопасности. Но есть плагины и определенные настройки, вроде даже как и готовые контейнеры, чтобы отключить функцию проверки пароля. Я не стал этим заниматься.

И еще здесь устанавливается docker-compose-plugin версии v2..., потому при работе используется не привычное мне, слитная команда «docker-compose ...» , а раздельное написание «docker compose …».

 
Сверху