Как видно из названия материала сегодня мы будем реализовывать сервер баз данных на операционной системе CentOS 7.1, в качестве СУБД у нас будет выступать PostgreSQL 9.4, в итоге сейчас мы подробно рассмотрим установку и настройку PostgreSQL, а также выполним дополнительные настройки самой операционной системы CentOS.
Итак, для начала давайте рассмотрим сценарий реализации нашего сервера баз данных.
Примечание! Подразумевается, что у Вас уже установлена операционная система CentOS 7.1, если нет, то об этом мы подробно разговаривали в материале — Установка Linux CentOS 7.1.
Допустим, наш сервер подключен к локальной сети и на него только что установили CentOS 7.1 (без графической оболочки) в связи с этим первое, что мы сделаем, это выполним настройку сетевого интерфейса на операционной системе, с учетом того, что в сети есть DHCP сервер. Затем мы установим и настроим PostgreSQL 9.4 таким образом, чтобы пользователи могли подключаться к базе данных по сети с предоставлением логина и пароля, также для этого нам нужно будет открыть соответствующий порт на фаерволе. Помимо всего прочего, для того чтобы PostgreSQL автоматически запускался, после перезагрузки сервера, мы поместим его в автозагрузку.
А теперь подробней по каждому пункту.
Примечание! Еще раз повторю, что CentOS 7.1 установлен у нас без среды рабочего стола и дополнительных приложений, т.е. «Минимальная установка».
Также уточняю, что все действия ниже, я буду выполнять от имени суперпользователя root.
Настраиваем сетевой интерфейс в CentOS 7.1
Так как по умолчанию у нас отсутствует команда ifconfig (в связи с отсутствием пакета net-tools), мы будем настраивать сетевой интерфейс путем редактирования конфигурационного файла. И делать мы это будем с помощью встроенного по умолчанию текстового редактора vi.
Для начала посмотрим название нашего сетевого интерфейса
ip a
Теперь редактируем конфигурационный файл этого сетевого интерфейса, лежит он в каталоге /etc/sysconfig/network-scripts/ и название данного файла начинается с ifcfg-, в нем нам всего лишь нужно прописать активацию интерфейса при старте системы, параметр ONBOOT=yes, так как по умолчанию интерфейс уже настроен на работу с DHCP сервером
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
Жмем клавишу i и вносим изменения, затем для выхода из режима жмем Esc, а для сохранения файла нажимаем Shift: затем вводим wq и подтверждаем по «Enter»
Для того чтобы применить настройки необходимо перезапустить сеть, пишем команду
/etc/init.d/network restart
или
systemctl restart network
Теперь давайте узнаем ip адрес нашего сервера СУБД все той же командой ip a
Запомним что ip адрес нашего сервера это 192.168.0.6
Примечание! Так как для установки программного обеспечения, которое мы будем устанавливать ниже, нам будет необходим выход в Интернет, в связи с этим учтем, что после применения настроек сети, которые мы получим от DHCP сервера, доступ к Интернету у нас появится.
Установка текстового редактора Nano и пакета net-tools
Для удобства предлагаю установить текстовый редактор nano так как, редактировать различные конфигурационные файлы в операционной системе Linux приходиться достаточно часто. Также, для того чтобы в будущем мы могли использовать замечательную команду ifconfig, для более быстрой и удобной настройки сетевых интерфейсов, дополнительно давайте еще установим пакет net-tools.
yum –y install nano net-tools
После выполнения этой команды у нас появится и редактор nano и команда ifconfig.
Установка PostgreSQL 9.4
Начнем мы с проверки, какая версия PostgreSQL есть в стандартных репозиториях CentOS 7.1
yum list | grep postgresql
Мы видим, что там присутствует только версия 9.2, поэтому давайте подключим дополнительный репозиторий
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
И еще раз проверим, появилась ли нужная нам версия
yum list | grep postgresql
Как видим, она появилась.
Переходим непосредственно к установке, выполняем команду
yum -y install postgresql94-server postgresql94
Для инициализации базы данных выполним
/usr/pgsql-9.4/bin/postgresql94-setup initdb
Запускаем и помещаем в автозагрузку PostgreSQL 9.4
Помещаем в авто загрузку
systemctl enable postgresql-9.4
и запускаем
systemctl start postgresql-9.4
Создание и настройка пользователей в PostgreSQL 9.4
И для начала давайте зададим пароль для пользователя postgres, так как по умолчанию он создается без пароля, для этого переключимся на пользователя postgres и запустим утилиту psql
su - postgres psql
Меняем пароль пользователя postgres
\password postgres
Теперь давайте создадим нового пользователя, пишем команду (просто, для того чтобы уметь это делать)
CREATE ROLE testuser WITH PASSWORD '123456' LOGIN;
Где, testuser это логин пользователя, а 123456 его пароль.
Для выхода из psql и переключения обратно под root нажимаем два раза сочетание клавиш CTRL+D.
Перезапускаем PostgreSQL
systemctl restart postgresql-9.4
Настраиваем PostgreSQL 9.4
По сценарию к базе должны подключаться пользователи, по локальной сети используя логин и пароль, поэтому давайте, разрешим подключения по сети (к примеру, моя сеть это 192.168.0.0/24) и настроим аутентификацию. Сначала открываем файл конфигурации pg_hba.conf
nano /var/lib/pgsql/9.4/data/pg_hba.conf
Ищем следующие строки
и вносим изменения (IPv6 мы не будем использовать, закомментируем эту строку знаком #)
Другими словами мы изменили метод аутентификации с ident на md5 и соответственно разрешили подключение из сети 192.168.0.0/24.
Сохраняем сочетанием клавиш CTRL+O с подтверждением по enter, затем просто закрываем файл CTRL+X
Теперь необходимо отредактировать файл postgresql.conf для того чтобы PostgreSQL слушал нужные нам сетевые интерфейсы
nano /var/lib/pgsql/9.4/data/postgresql.conf
Ищем строку
#listen_addresses = ‘localhost’
и заменяем на
listen_addresses = ‘*’
В данном случае PostgreSQL будет слушать все доступные сетевые интерфейсы. Сохраняем и закрываем, таким же способом как мы это делали чуть выше.
Перезапускаем PostgreSQL
systemctl restart postgresql-9.4
Настройка фаервола на CentOS 7.1 (открытие порта)
Осталось только открыть порт, для того чтобы пользователи из сети могли подключаться, и так как мы стандартный порт не меняли, то открываем именно его, т.е. 5432
firewall-cmd —permanent —add-port=5432/tcp
Для того чтобы изменения вступили в силу, перезапустим файрвол
firewall-cmd —reload
Заметка! Рейтинг популярности серверных дистрибутивов Linux.
На этом все, установка и настройка PostgreSQL на CentOS 7.1 закончена, для проверки можете с любого компьютера в сети, попробовать подключится к серверу, например, используя pgAdmin, но учтите, что с версией PostgreSQL 9.4 умеет работать pgAdmin, начиная с версии 1.20, удачи!