Установка PostgreSQL из исходников

Просмотры: 1054
Категория: Администрирование
Создано: 22 ноября 2020
Тэги: PostgreSQL Linux

Установка на сервере программ из исходников считается дурным тоном. Пакеты принято устанавливать через пакетные менеджеры (yum на RHEL / CentOS / Oracle или dpkg на Ubuntu Server / Debian). Но на домашней машине установка из исходников вполне себя оправдывает. В этом случае мы полностью контролируем процесс компиляции и самой установки: указываем в какой каталог устанавливать файлы, какие модули компилировать, какие библиотеки подключать и т.д. Вообщем, такой себе путь Gentoo или даже LFS. Итак, займемся компилированием из исходников PostgreSQL самой свежей версии на текущий момент - 13.1.

Скачиваем архив

wget https://ftp.postgresql.org/pub/source/v13.1/postgresql-13.1.tar.bz2

Распаковываем и переходим в соответствующий каталог

tar xjvf postgresql-13.1.tar.bz2 && cd postgresql-13.1

По умолчанию PostgreSQL устанавливается в /usr/local/pgsql. Неплохой выбор по моему скромному мнению. Если кто не согласен, можно указать новый путь через опцию --prefix. Так как у меня демоны запускаются через системный демон systemd, то добавим опцию --with-systemd, чтобы такая возможность появилась и для нашего PostgreSQL

./configure --with-icu --with-systemd

Далее стандартно

make

sudo make install

sudo ldconfig /usr/local/pgsql/lib

Добавляем пользователя postgres

sudo useradd postgres

Создаём каталог для хранения данных и назначаем владельцем этого каталога postgres:

sudo mkdir /usr/local/pgsql/data

sudo chown postgres /usr/local/pgsql/data

Перелогиниваемся в postgres и инициализируем БД

sudo su - postgres

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

Выходим из postgres и создаем файл postgresql.service в каталоге /etc/systemd/system

sudo vim /etc/systemd/system/postgresql.service

Содержание файла следующее

[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0

[Install]
WantedBy=multi-user.target

Теперь запускаем сервер

sudo systemctl start postgresql

и ставим его в автозагрузку

sudo systemctl enable postgresql

Теперь можно заняться добавлением новых баз данных, новых пользователей, редактированием pg_hba.conf. В последнем случае не забываем перезапускать PostgreSQL

sudo systemctl restart postgresql