MAATRIX / Блог / PostgreSQL на Ubuntu 24.04: пошаговая установка

PostgreSQL на Ubuntu 24.04: пошаговая установка

PostgreSQL на Ubuntu 24.04: пошаговая установка

MAATRIX

Установка PostgreSQL на Ubuntu 24.04 (Noble Numbat) занимает несколько минут, но у этой версии системы есть свои детали: свежий systemd, обновлённые локали, изменения в управлении репозиториями. Ниже — пошаговый путь именно под Ubuntu 24.04: подготовка системы и локали, подключение официального репозитория PGDG, установка, управление кластерами, создание ролей и настройка автозапуска. Всё с учётом особенностей Noble, чтобы не наткнуться на типичные грабли.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Подготовка Ubuntu 24.04

Начните с обновления системы — на свежем VPS это снимает половину будущих проблем с зависимостями:

sudo apt update && sudo apt upgrade -y

Отдельно проверьте локаль. PostgreSQL наследует локаль системы при инициализации кластера, и если она не настроена, вы получите базу в неудобной кодировке или с проблемами сортировки русского текста. Убедитесь, что нужная локаль сгенерирована:

sudo locale-gen ru_RU.UTF-8 en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

В Ubuntu 24.04 по умолчанию используется UTF-8, что для PostgreSQL идеально: кодировка баз будет UTF8, и русский текст хранится без проблем. Это важно сделать до установки, потому что первый кластер PostgreSQL создаётся сразу при установке пакета и берёт локаль такой, какая есть в момент установки. Если вы пропустите этот шаг и потом обнаружите, что кластер создан не в той локали, простой правкой конфига дело не решится — локаль задаётся при инициализации кластера, и менять её придётся пересозданием кластера или базы с нужными параметрами. Поэтому пара минут на настройку локали в самом начале экономит куда больше времени потом.

Репозиторий PGDG для свежей версии

Ubuntu 24.04 содержит PostgreSQL 16 в штатном репозитории — рабочую версию для многих задач. Но если нужна самая свежая (PostgreSQL 17) с длительной поддержкой и оперативными обновлениями, подключите официальный репозиторий проекта PGDG. В Ubuntu 24.04 ключи APT хранятся по-новому, поэтому используйте современный способ с отдельным файлом ключа:

sudo apt install -y curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc \
  https://www.postgresql.org/media/keys/ACCC4CF8.asc
. /etc/os-release
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
  https://apt.postgresql.org/pub/repos/apt $VERSION_CODENAME-pgdg main" | \
  sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt update

Переменная $VERSION_CODENAME в Ubuntu 24.04 равна noble — репозиторий PGDG её поддерживает. Старый способ с apt-key в новых Ubuntu считается устаревшим, поэтому используйте именно вариант с signed-by, как выше.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS с Ubuntu 24.04

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

Теперь установите сервер. Укажите нужную версию явно — так вы точно получите то, что хотели:

sudo apt install -y postgresql-17

Пакет автоматически создаст кластер, запустит службу и настроит автозапуск. Проверьте результат:

sudo systemctl status postgresql
sudo -u postgres psql -c "SELECT version();"

Строка с версией PostgreSQL 17 означает успех. На Ubuntu данные кластера лежат в /var/lib/postgresql/17/main, конфиги — в /etc/postgresql/17/main. Это специфика пакета Debian/Ubuntu: конфиги и данные разнесены по каталогам, что удобно для хранения нескольких версий на одной машине.

Управление кластерами в Ubuntu

Пакет PostgreSQL в Ubuntu использует систему управления кластерами, которой нет в других дистрибутивах, — стоит её освоить. Команда показывает все кластеры, их версии, порты и статус:

pg_lsclusters

Если вы обновляли систему и на ней оказалось два кластера (например, от версий 16 и 17), они займут разные порты (5432 и 5433), и приложение может подключаться не туда. Управляют кластерами отдельными командами:

sudo pg_ctlcluster 17 main start
sudo pg_ctlcluster 17 main stop

Эта обёртка работает поверх systemd и понимает специфику Ubuntu. Служба postgresql.service — это агрегат, который поднимает все кластеры сразу, а pg_ctlcluster управляет конкретным. Понимание этой двухуровневой схемы избавляет от путаницы «почему база на другом порту» после обновлений.

Отдельно про мажорное обновление версии, потому что на Ubuntu оно устроено удобнее, чем кажется. Когда вы ставите новую мажорную версию PostgreSQL рядом со старой, обе живут параллельно на разных портах, и данные не переносятся автоматически. Для переноса кластера с одной версии на другую в пакете Ubuntu есть команда pg_upgradecluster, которая делает миграцию данных со старого кластера в новый, сохраняя настройки. Это гораздо безопаснее ручного переноса дампом: старый кластер остаётся нетронутым до тех пор, пока вы не убедитесь, что новый работает, и его можно удалить командой pg_dropcluster уже осознанно. Такой подход к обновлениям — одно из практических преимуществ пакета PostgreSQL именно в Debian и Ubuntu.

Создание роли и базы

Работать под суперпользователем postgres в приложении нельзя. Создайте отдельную роль и базу под проект. В Ubuntu удобно заходить в консоль из-под системного пользователя postgres:

sudo -u postgres psql
CREATE ROLE appuser WITH LOGIN PASSWORD 'слоЖный_Пароль_2026';
CREATE DATABASE appdb OWNER appuser ENCODING 'UTF8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8' TEMPLATE template0;
\q

Явное указание кодировки и локали при создании базы гарантирует правильную сортировку и обработку русского текста — особенно если системная локаль отличается. TEMPLATE template0 нужен, чтобы применить нестандартную локаль. Проверьте вход новой ролью: psql -h 127.0.0.1 -U appuser -d appdb -W.

Автозапуск и первичная безопасность

На Ubuntu 24.04 PostgreSQL уже настроен на автозапуск через systemd — проверьте это командой sudo systemctl is-enabled postgresql, ответ должен быть enabled. Так база сама поднимется после перезагрузки сервера. По умолчанию PostgreSQL слушает только localhost, что безопасно: если база и приложение на одном VPS, ничего открывать не нужно.

Закройте базовые вопросы безопасности сразу: используйте метод scram-sha-256 в pg_hba.conf, задавайте длинные пароли ролям, а порт 5432 не открывайте в интернет без крайней необходимости — при внешнем доступе ходите через SSH-туннель. Включите автоматические обновления безопасности системы через пакет unattended-upgrades, чтобы PostgreSQL и Ubuntu получали патчи без ручного вмешательства. Настройте резервное копирование сразу, не откладывая: для одной базы достаточно ежедневного pg_dump -Fc по cron с выгрузкой копии на отдельное хранилище, а для кластера целиком — pg_dumpall. База без бэкапа рано или поздно превращается в потерю данных, и завести резервное копирование в первый же день намного проще, чем вспоминать о нём после аварии. Проверьте хотя бы раз, что копия реально восстанавливается на тестовой базе, — непроверенный бэкап часто оказывается бесполезным именно в критический момент. Чтобы всё это работало на стабильном железе, нужен надёжный VPS с Ubuntu 24.04. В MAATRIX можно арендовать сервер с Ubuntu под PostgreSQL в России, США или Великобритании и оплатить картой РФ, по СБП, криптой или токеном MAAT — иностранная карта не нужна.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS с Ubuntu 24.04

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Какая версия PostgreSQL в Ubuntu 24.04 по умолчанию?

В штатном репозитории — PostgreSQL 16. Для самой свежей версии 17 подключите официальный репозиторий PGDG способом с signed-by, как в этой инструкции.

Почему после обновления база оказалась на порту 5433?

На сервере появился второй кластер от новой версии, а первый остался на 5432. Посмотрите pg_lsclusters и подключайтесь к нужному порту или удалите лишний кластер.

Как обеспечить правильную сортировку русского текста?

Сгенерируйте локаль ru_RU.UTF-8 до установки и создавайте базу с явным указанием LC_COLLATE и LC_CTYPE и TEMPLATE template0.

PostgreSQL запустится сам после перезагрузки?

Да, на Ubuntu 24.04 автозапуск через systemd настроен по умолчанию. Проверить можно командой systemctl is-enabled postgresql.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.