Быстрая установка PostgreSQL (PgAdmin 4, Adminer) на VPS
Иногда, в тестовых или учебных целях необходимо быстро развернуть Postgres сервер и систему администрирования БД, такие как PgAdminили Adminer. Конечно можно использовать облачные сервисы баз данных (Amazon, Google cloud, Яндекс облако …) , но я решил сделать это на VPS и через Docker. Благо, как я говорил выше, для тестов, можно арендовать сейчас недорого VPS с почасовой оплатой (~ 0,26 — 0,58 р/час), и опыт работы с Unix системами будет полезен.
рис. 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
Скопировать команду, вставить в терминале и запустить.
Команды скачает скрипт »1_postgres.sh», сделает его исполняемым и запустит его.
рис. 3 Запуск скрипта
Краткое описание действий скрипта описано на Гитхабе.
Далее скрипт спросит, хотите ли поменять пароль у root-a
После имя пользователя в системе, если Вы уже заводили пользователя под кем вы обычно работаете, то введите его имя. Если нет , то скрипт создаст и попросит задать пароль для него.
рис. 4 Смена пароля root-а. Добавление пользователя
Далее я не буду описывать действия скрипта, просто приложу скрины, где справа будет исполняемый скрипт с подсказками, слева то, что происходит в терминале.
рис. 5 Установка Docker, Docker-compose
рис. 6 Скачивание «docker-compose.ym«l
рис. 7 Ввод пользователя и пароля для БД
рис. 8 Завершение работы скрипта
Установка завершена. Видим запущенные контейнеры. Ниже информацию для подключения через PgAdmin и Adminer.
Вводим эти данные в браузере и проверяем работу.
рис. 9.1 Подключение через PgAdmin и Adminer
рис. 9.2 Подключение через PgAdmin, добавление сервера
рис. 9.3 Подключение через PgAdmin, ввод названия сервера
рис. 9.4 Подключение через 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 адресом докера
В конце завершения скрипта (рис. 9.5), выводится небольшая инструкция для смены настроек. Например, в случае если у Вас PostgreSQL уже крутиться на основном сервере на порту 5432 и потому Вам необходимо поменять порт Postgres сервера в докере на 5433 к примеру, или поменять порты PgAdmin-a и Adminer-a на 15050 и 18080, или поменять имя пользователя и пароль к БД PostgreSQL. Для примера приведен файл ».env_example».
Сделаем как в инструкции (рис. 9.5).
рис. 11 Смена настроек по инструкции
Проверим
рис. 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…».
Вроде это все, что я хотел сказать.
Надеюсь кому то поможет.
Короткая видео версия shorts на youtube.