PostgreSQL для 1С не запускается на Linux (Ubuntu/CentOS): анализ логов
- Команда
systemctl start postgresqlзавершается с ошибкойJob for postgresql.service failed. - Сервер 1С не может соединиться с СУБД, базы данных недоступны.
- Служба СУБД падает сразу после старта или перезагрузки Linux-сервера.
Главное правило администратора Linux
Если служба PostgreSQL отказалась запускаться, не пытайтесь переустанавливать пакеты наугад. Сервер всегда записывает точную причину аварии в свой журнал логов.
Шаг 1. Просмотр системного статуса и журнала логов
# 1. Просмотр статуса сервиса
systemctl status postgresql*
# 2. Просмотр последних 50 строк логов PostgreSQL (Ubuntu/Debian)
tail -n 50 /var/log/postgresql/postgresql-*.log
# 3. Просмотр логов в CentOS / RedHat / Rocky Linux
tail -n 50 /var/lib/pgsql/15/data/log/postgresql-*.logШаг 2. Разбор 3 самых частых причин падения:
Причина 1: Закончилось место на системном диске
df -hЕсли диск / или раздел /var заполнен на 100%, СУБД аварийно останавливается. Очистите старые архивы или увеличьте размер диска.
Причина 2: Зависший файл блокировки postmaster.pid
Если сервер выключился аварийно, в папке данных остается старый маркер запуска:
# Убедитесь, что процесс postgres точно не висит в памяти:
killall -9 postgres
# Удалите зависший pid-файл:
rm -f /var/lib/pgsql/15/data/postmaster.pid
systemctl start postgresql-15Причина 3: Нарушены права владельца на каталог данных
chown -R postgres:postgres /var/lib/pgsql/
chmod 700 /var/lib/pgsql/15/data Частые вопросы (FAQ)
Как проверить синтаксис файлов конфигурации перед стартом?
Выполните команду от имени пользователя postgres: su - postgres -c '/usr/pgsql-15/bin/postgres -D /var/lib/pgsql/15/data -C config_file'. Ошибки в postgresql.conf будут выведены на экран.
Почему 1С требует специальную сборку PostgreSQL?
Стандартный ванильный PostgreSQL не поддерживает некоторые особенности блокировок и условий 1С. Требуется сборка со специальными патчами от Postgres Professional или фирмы 1С.
Что делать, если в логах ошибка 'FATAL: could not create any TCP/IP sockets'?
Это означает, что порт 5432 уже занят другим экземпляром PostgreSQL или сторонней службой. Проверьте занятые порты командой: ss -tulpn | grep 5432.
Как включить подробное логирование запросов?
В postgresql.conf установите параметры: log_min_messages = warning, logging_collector = on и log_directory = 'log'.