В этой статье я покажу как установить PostgreSQL 16 из официального репозитория Postgres на сервере Debian 12 (bookworm).

Введение

В этой статье я показывал установку PostgreSQL на сервер Debian из исходников. Но в большинстве случаев проще, быстрее и правильнее установить его с помощью пакетного менеджера из репозитория.

У PostgreSQL есть свои публичные репозитории для разных пакетных менеджеров: apt, yum и zypp. Именно его мы и будем использовать в этой статье.

Также я покажу особенности PostgreSQL установленного из официального репозитория PostgreSQL.

Поехали:)

Установка PostgreSQL из репозитория

Добавление репозитория

Добавим официальный репозиторий PostgreSQL в систему:

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Также импортируем ключ репозитория, для этого нам понадобятся утилиты curl и gpg:

$ sudo apt install -y curl gpg
$ curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

Обновим кэш пакетов:

$ sudo apt update

Установка

Из добавленного репозитория мы можем установить следующие версии PostgreSQL: postgresql-12, postgresql-13, postgresql-14, postgresql-15, postgresql-16.

В этой статье я покажу установку последней версии PostgreSQL:

$ sudo apt install -y postgresql-16

После установки включим службу postgresql и включим её автозапуск:

$ sudo systemctl enable --now postgresql@16-main.service

И уже можем проверить статус службы:

$ systemctl status postgresql@16-main.service
● postgresql@16-main.service - PostgreSQL Cluster 16-main
     Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-04-10 14:27:36 MSK; 2min 0s ago
   Main PID: 3895 (postgres)
      Tasks: 6 (limit: 2306)
     Memory: 19.3M
        CPU: 132ms
     CGroup: /system.slice/system-postgresql.slice/postgresql@16-main.service
             ├─3895 /usr/lib/postgresql/16/bin/postgres -D /var/lib/postgresql/16/main -c config_file=/etc/postgresql/16/main/postgresql.conf
             ├─3896 "postgres: 16/main: checkpointer "
             ├─3897 "postgres: 16/main: background writer "
             ├─3899 "postgres: 16/main: walwriter "
             ├─3900 "postgres: 16/main: autovacuum launcher "
             └─3901 "postgres: 16/main: logical replication launcher "

Особенности установки PostgreSQL из репозитория

Первую особенность я уже вам показал — это служба SystemD, которую не нужно создавать самому. Службу можно включать, выключать, заставить перечитать конфиг или перезагрузить:

$ sudo systemctl start postgresql@16-main.service
$ sudo systemctl stop postgresql@16-main.service
$ sudo systemctl reload postgresql@16-main.service
$ sudo systemctl restart postgresql@16-main.service

Теперь узнаем где расположились файлы PostgreSQL.

  • Файлы сервера PostgreSQL находятся в каталоге /usr/lib/postgresql/16/bin/.
  • Файлы кластера данных (каталог PGDATA) находится в каталоге /var/lib/postgresql/16/main.
  • Основной конфиг лежит здесь — /etc/postgresql/16/main/postgresql.conf.
  • А файл логов здесь — /var/log/postgresql/postgresql-16-main.log.

В процессе установки автоматически создался пользователь postgres с домашним каталогом /var/lib/postgresql.

Посмотрим, с какими параметрами был собран PostgreSQL. Для этого выполним команду pg_config --configure:

$ pg_config --configure
 '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-option-checking' '--disable-silent-rules' '--libdir=${prefix}/lib/x86_64-linux-gnu' '--runstatedir=/run' '--disable-maintainer-mode' '--disable-dependency-tracking' '--with-tcl' '--with-perl' '--with-python' '--with-pam' '--with-openssl' '--with-libxml' '--with-libxslt' '--mandir=/usr/share/postgresql/16/man' '--docdir=/usr/share/doc/postgresql-doc-16' '--sysconfdir=/etc/postgresql-common' '--datarootdir=/usr/share/' '--datadir=/usr/share/postgresql/16' '--bindir=/usr/lib/postgresql/16/bin' '--libdir=/usr/lib/x86_64-linux-gnu/' '--libexecdir=/usr/lib/postgresql/' '--includedir=/usr/include/postgresql/' '--with-extra-version= (Debian 16.2-1.pgdg120+2)' '--enable-nls' '--enable-thread-safety' '--enable-debug' '--enable-dtrace' '--disable-rpath' '--with-uuid=e2fs' '--with-gnu-ld' '--with-gssapi' '--with-ldap' '--with-pgport=5432' '--with-system-tzdata=/usr/share/zoneinfo' 'AWK=mawk' 'MKDIR_P=/bin/mkdir -p' 'PROVE=/usr/bin/prove' 'PYTHON=/usr/bin/python3' 'TAR=/bin/tar' 'XSLTPROC=xsltproc --nonet' 'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -fno-omit-frame-pointer' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now' '--enable-tap-tests' '--with-icu' '--with-llvm' 'LLVM_CONFIG=/usr/bin/llvm-config-16' 'CLANG=/usr/bin/clang-16' '--with-lz4' '--with-zstd' '--with-systemd' '--with-selinux' 'build_alias=x86_64-linux-gnu' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security'

Доступен сервер только на localhost и на порте 5432.

Проверка контрольных сумм в кластере по умолчанию не включена. Это можно проверить так:

$ sudo systemctl stop postgresql@16-main.service
$ sudo /usr/lib/postgresql/16/bin/pg_checksums --check -D /var/lib/postgresql/16/main
pg_checksums: ошибка: контрольные суммы в кластере не включены

Сводка
Установка PostgreSQL 16 на Debian 12 из репозитория
Имя статьи
Установка PostgreSQL 16 на Debian 12 из репозитория
Описание
В этой статье я покажу как установить PostgreSQL 16 из официального репозитория Postgres на сервере Debian 12 (bookworm)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *