Установка PostgreSQL из исходников
- Просмотры: 1054
- Категория: Администрирование
- Создано: 22 ноября 2020
- Тэги:
Установка на сервере программ из исходников считается дурным тоном. Пакеты принято устанавливать через пакетные менеджеры (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