Добавить в корзинуПозвонить
Найти в Дзене
Сисадминские игры

0046.PostgreSQL11.Устанока. Настройка. Проверка. Строим маленький интернет

Приветствую вас, Уважаемые Читатели! Сначала немного истории. Совсем недавно мы начали изучать такой интересный сервис как WWW. И с целью этого изучения на отдельный хост установили сервер Apache2, который в данном случае реализует протокол HTTP, который является частью сервиса WWW. Это мы сделали в статье "0043.Apache2.Устанавливаем, настраиваем, проверяем.Строим маленький интернет.". Предварительно мы подготовили хост как описано в статье "0004.Готовим тестовый стенд. Устанавливаем Debian 10 на виртуальную машину.". Следующим шагом мы решили установить на этот сервер замечательный форум phpBB3, для чего собрали необходимы сведения и пакеты, это было с статье "0044.Создаём форум на основе phpBB3.Строим маленький интернет.". Далее мы установили PHP необходимой для установки phpBB3 версии на тот же хост, на котором был установлен Apache2, и это было в статье "0045.Установка PHP на сервер Apache2. Строим маленький интернет.". Теперь займёмся сервером базы данных. В качестве реализации т

Приветствую вас, Уважаемые Читатели!

Сначала немного истории. Совсем недавно мы начали изучать такой интересный сервис как WWW. И с целью этого изучения на отдельный хост установили сервер Apache2, который в данном случае реализует протокол HTTP, который является частью сервиса WWW. Это мы сделали в статье "0043.Apache2.Устанавливаем, настраиваем, проверяем.Строим маленький интернет.". Предварительно мы подготовили хост как описано в статье "0004.Готовим тестовый стенд. Устанавливаем Debian 10 на виртуальную машину.". Следующим шагом мы решили установить на этот сервер замечательный форум phpBB3, для чего собрали необходимы сведения и пакеты, это было с статье "0044.Создаём форум на основе phpBB3.Строим маленький интернет.". Далее мы установили PHP необходимой для установки phpBB3 версии на тот же хост, на котором был установлен Apache2, и это было в статье "0045.Установка PHP на сервер Apache2. Строим маленький интернет.".

Теперь займёмся сервером базы данных. В качестве реализации такого сервера выберем великолепный PostgreSQL. Как следует из требований версия такого сервера должна быть не ниже версии 8.3. В нашем случае на сервере Debian10 доступна версия PostgreSQL11, что вполне удовлетворяет требованиям phpBB3. Сервер базы данных вообще вещь очень серьёзная и интересная. И такой сервер вполне достоен для установки отдельного хоста. Кроме того такой сервер может понадобится для каких-нибудь других целей. Т.е. в нашей сети появляется ещё один хост.

Новому хосту назначим адрес 192.168.1.160, и сразу пропишем его в файлы DNS-сервера deb-lan1-bind-prim. Потом обязательно вспомним, что нужно в файлах прописать новый серийник и перезапустить сервера и их базу данных. Работа с DNS серверами описана ранее в статьях.

-2

Скажу сразу установка сервера мне далась не легко. Сервер достаточно остро и непонятно реагирует на ошибки в файле конфигурации и на другие настройки.

Для нашей задачи необходимо установить сервер БД и запустить его. Следующим шагом необходимо настроить доступ к серверу с нашего Web-сервера deb-lan1-apache, с помощью клиентсткой утилиты psql. Завершающем этапом будет необходимо убедиться, что новый сервер БД будет доступен из кода PHP. Вот такой в общем не затейливый план действий.

Установка и настройка PostgreSQL на локальном хосте.

Итак всё начинается с установки. Этот этап самый простой. Подключаем архивные репозитории, что описано в одной из предыдущих статей. Убеждаемся что интернет доступен для нашего хоста. И выполняем привычные уже команды

apt update

apt install postgresql-11

Сервер сразу стартует, и можно проверить его статус.

-3
-4
-5

Это пожалуй самый простой шаг, дальше начинается магия.

Всё начинается с того, что во время установки сервисом автоматически создаются три разных сущности с именем postgres. Точнее наверное сущностей создаётся значительно больше, но на данном этапе нас будут интересовать следующие три:

- учётная запись операционной системы postgres используется для запуска утилит обслуживания сервера;

- внутренний пользователь (роль) самой БД postgres, является супер пользователем для этой БД;

- экземпляр БД postgres, который привязан собственно к одноимеённому пользователю.

Вновь созданные пользователи создаются с пустым паролем, и по этой причине сразу после создания не доступны. Поэтом сразу после установки необходимо настроить сначала учётку ОС postgres, а потом учётку БД postgres.

Учётке ОС сначала зададим пароль командой passwd postgres.

Потом добавим в группу root, командой gpasswd -M postgres root.

Потом проверим что пользователь postgres соостоит в группах root и ssl-cert в файле /etc/group.

-6
-7

Здесь нужно уточнить относительно группы ssl-cert. Не знаю что это за группа, но у меня возникали проблемы с запуском сервера по причине отсутствия привязки учётки postgres к этой группе. О чём было сказано в логах. Т.е. возможно почему-то либо учётка не добавилась в группу, либо была исключена. Во всяком случае лучше проверить, и в случае отсутствия учётки postges в группе ssl-cert добавить учётку в группу командой

gpasswd -M postgres ssl-cert (либо другим способом).

Теперь на сервере deb-lan1-postgresql перелогиниваемся под учёткой postgres. И запускаем psql, это клиентская утилита PostgreSQL. Здесь мы зададим пароль учётной записи БД postgres.

-8

И пока нам там ничего не надо, перелогиниваемся обратно под root.

Настройка удалённого доступа к серверу БД.

Теперь необходимо настроить удалённый доступ к нашему серверу БД. Для этой цели у нас есть два файла:

- центральный конфиг postgresql.conf;

- конфиг настройки доступа и аутентфикации pg_hba.conf.

Пути к файлам можно узнать выполнив запросы под пользователем postgres в утилите psql.

-9

В файле postgresql.conf раскоментируем инструкцию слушать внешние адреса

-10

В файле pg_hba.conf необходимо прописать строку, определяющую способ подключения от внешнего источника.

-11

На рисунке выше можно увидеть, что несмотря на то, что требовалось допустить только один адрес (192.168.1.150), строка определяет для доступа целую сеть. Это не результат невнимательности. Дело в том что на практике сервер не запускал удалённый доступ, ссылаясь на неправильно прописанный адрес сети. Мне так и не удалось понять как прописывать конкретный адрес. Пока я не прописал всю сеть 192.168.1.0/24 запустить удалённый доступ так и не удалось.

После настройки конфигов перезапускаем сервер, и на всякий проверяем статус. И сразу можно проверить включился доступ или нет командой

ss -tunelp

-12
-13

На скрине можно видеть, что команда ss -tunelp показывает два открытых и прослушиваемых порта 5432. Номер которого является стандартным для этого сервера. Однако на практике не каждый раз можно будет наблюдать эти порты открытыми. Это означает что удалённый доступ не включился. В этом случае приходится просматривать логи, и разбираться почему это произошло. Обычно сервер указывает в логах те или иные замечания по поводу настроек в конфах. Путь к файлу лога сервера можно увидеть в общем логе получаемом командой journalctl -e, или ещё он указывается в процессе установки сервера.

Во всяком случае в процессе настроек необходимо добиться, чтобы мы получили по команде ss-tunelp отрытые и прослушиваемые порты 5432 (или те, которые выставлены в центральном конфиге).

Проверка удалённого доступа к серверу

Теперь, когда у нас на сервер БД прослушиваются порты 5432 можно проверить подключение к серверу с нашего рабочего Web-сервера. Для этого используется утилита psql. Чтобы ей воспользоваться необходимо предварительно установить на сервер deb-lan1-apache клиентскую часть postgresql. Сложностей тут никаких нет.

-14

И сразу после установки можно попробовать подключение

-15

На скрине выше можно видеть несколько не удачных попыток логина в процессе настройки доступа в файле pg_hba.conf. Когда изменялась очередная настройка, перегружался сервер postgresql и выполнялась очередная попытка логина. После входа в утилиту командой \l можно просмотреть наличествующие базы данных, командой \dt список таблиц в текущей базе и командой \q выйти из утилиты.

Теперь создадим тестового пользователя и тестовую базу данных. Для этого на сервере PostgreSQL deb-lan1-postgresql залогинимся под пользователем postgres. Далее первая команда создаёт нового пользователя, вторая команда создаёт новую базу и назначает нового пользователя владельцем этой базы:

createuser one

createdb one_db -O one

И следующей командой задаём пароль вновь созданному пользователю.

pcql -c "alter user one with password='one';"

-16

И после этих манипуляций возвращаемся обратно на сервер deb-lan1-apache. На этом Web-сервере заходим с утилитой psql под пользователем one в базу данных one_db, создаём новую таблицу и заполняем её данными. Если это удалось, можно командой select * from table_two; проверить что данные добавились и командой \q выйти из утилиты. Удалённый доступ у нас настроен и проверен.

-17

Но это ещё не всё. Поскольку к базе данных подключаться будет PHP реализация форума имеет смысл проверить как база данных будет доступна из интерпретатора PHP. Для это напишем небольшой файлик с кодом доступа к БД. В коде пропишем все параметры доступа к серверу базы данных.

-18

Получившийся файлик (pg_test.php) помещаем в корень Web-сервера /var/www/html/. И теперь просто вбиваем его в адресной строке браузера на тестовой рабочей станции.

-19

На всякий случай уточню - полная адресная строка должна выглядеть так http://www.lan.loc/pg_test.php.

Т.е. в результате мы увидели, что запрос из кода PHP к нашему серверу БД вполне адекватно разрешается. Значит и форум phpBB3, который написан на этом языке теоретически так же должен адекватно работать. Цели статьи достигнуты, и теперь можно переходит непосредственно к установке форума на Web-сервер. Но это мы сделаем уже в следующей статье.

Конфы хостов сети вместе со схемой выложу как обычно в канал MAX.

Благодарю всех Уважаемых Читателей, дочитавших до этого места.

Желаю всем удачи в начинаниях и продолжениях, до новых встреч!!!)

PS

Статья не является учебным пособием, и представляет личный опыт автора.

Статья может содержать ошибки и не точности.

Приведённые данные необходимо проверять самостоятельно.

Текст написан автором лично без использования ИИ.

Картинка для превью статьи сгенерирована сетью Шедеврум, возможно с небольшими правками автора.

Канал MAX для всего того, что не поместилось на канал ДЗЕН.