В этой статье я покажу как установить 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: ошибка: контрольные суммы в кластере не включены
Если понравилась статья, подпишись на мой канал в VK или Telegram.