Развертывание собственного сервера баз данных — ключевой навык для разработчика и администратора. В этом руководстве мы детально разберем установку сервера PostgreSQL, его настройку для работы с 1С и оптимизацию для production-среды. Представь, что мы вместе настраиваем сервер для важного проекта.
Выбор версии и подготовка системы
Перед началом установки сервера PostgreSQL определись с версией. Для 1С 8.3 рекомендована PostgreSQL 9.6 или 10, для современных проектов — актуальные стабильные версии (15, 16). Мы будем работать на Ubuntu 22.04 LTS.
sudo apt update && sudo apt upgrade -y
Установка PostgreSQL на Ubuntu сервер
Стандартный репозиторий Ubuntu содержит PostgreSQL, но часто не самую новую версию. Для получения актуальных версий добавим официальный репозиторий.
Шаг 1: Добавление репозитория
# Установите пакет для работы с репозиториями
sudo apt install -y wget gnupg2
# Импортируйте ключ репозитория PostgreSQL
sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# Добавьте репозиторий для вашей версии Ubuntu (22.04 Jammy)
echo "deb http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
# Обновите список пакетов
sudo apt update
Шаг 2: Непосредственная установка PostgreSQL
Теперь выполним установку PostgreSQL на Ubuntu сервер нужной версии. Для 1С 8.3 установим версию 10, для общего случая — последнюю стабильную.
# Для общего случая (последняя стабильная)
sudo apt install -y postgresql postgresql-contrib
# ИЛИ для 1С 8.3 (версия 10)
# sudo apt install -y postgresql-10 postgresql-contrib-10
После установки сервис запустится автоматически. Проверим статус:
sudo systemctl status postgresql
Первоначальная настройка сервера PostgreSQL
Стандартная установка сервера 1С PostgreSQL на Ubuntu требует дополнительной конфигурации безопасности и производительности.
Шаг 3: Настройка аутентификации и создание пользователя
По умолчанию PostgreSQL использует peer-аутентификацию для локальных подключений. Сменим её на md5 и создадим суперпользователя.
# Переключитесь на системного пользователя postgres
sudo -i -u postgres
# Запустите интерактивную оболочку psql
psql
# Внутри psql создайте нового пользователя (например, для 1С) и базу данных
CREATE USER user1c WITH PASSWORD 'Ваш_Сложный_Пароль' SUPERUSER CREATEDB CREATEROLE;
CREATE DATABASE db1c OWNER user1c;
# Выйдите из psql
\q
# Вернитесь в свою сессию
exit
Шаг 4: Конфигурация подключений (pg_hba.conf и postgresql.conf)
Это ключевой этап настройки SQL сервера PostgreSQL. Отредактируем файл аутентификации pg_hba.conf.
# Найдите актуальную версию и отредактируйте pg_hba.conf
sudo nano /etc/postgresql/10/main/pg_hba.conf # Для версии 10
# Или
sudo nano /etc/postgresql/16/main/pg_hba.conf # Для версии 16
Найдите строки, отвечающие за локальные подключения, и измените метод аутентификации с peer на md5:
# Было:
# local all all peer
# Стало:
local all all md5
Чтобы разрешить подключения из сети (например, для 1С сервера), добавьте в конец файла:
# Разрешить подключения со всех адресов (для внутренней сети)
host all all 192.168.1.0/24 md5
# ИЛИ для тестового стенда (не для продакшена!)
# host all all 0.0.0.0/0 md5
Шаг 5: Настройка сетевых параметров (postgresql.conf)
Теперь настроим прослушивание сетевых интерфейсов. Откройте основной конфигурационный файл:
sudo nano /etc/postgresql/10/main/postgresql.conf
Найдите и измените следующие параметры:
# Позволить слушать все сетевые интерфейсы
listen_addresses = '*' # или 'localhost,192.168.1.100'
# Порт подключения (стандартный 5432)
port = 5432
# Увеличьте количество одновременных подключений для 1С
max_connections = 100
Шаг 6: Применение настроек и перезагрузка
После всех изменений в конфигурации необходимо перезагрузить сервер PostgreSQL.
sudo systemctl restart postgresql
# Проверьте, что сервер слушает сетевой порт
sudo ss -tulpn | grep 5432
Оптимизация PostgreSQL для 1С
Настройка 1С сервера PostgreSQL требует особых параметров, так как нагрузка от 1С специфична (много коротких транзакций, работа с русской локализацией).
Рекомендуемые параметры postgresql.conf для 1С 8.3
# Память (зависит от ОЗУ сервера, пример для 8 ГБ)
shared_buffers = 2GB
work_mem = 16MB
maintenance_work_mem = 256MB
effective_cache_size = 6GB
# Настройки для русской локализации
lc_messages = 'ru_RU.UTF-8'
lc_monetary = 'ru_RU.UTF-8'
lc_numeric = 'ru_RU.UTF-8'
lc_time = 'ru_RU.UTF-8'
# Производительность
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 2.0
effective_io_concurrency = 2
Создание базы данных для 1С с правильной локалью
sudo -u postgres psql -c "CREATE DATABASE base1c
WITH OWNER = user1c
ENCODING = 'UTF8'
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
TEMPLATE template0;"
Безопасность и базовое администрирование
После установки и настройки 1С сервер PostgreSQL необходимо обеспечить его безопасность.
- Файрвол: Настройте UFW или iptables, чтобы открыть порт 5432 только для IP-адресов 1С-серверов и администраторов.
- Резервное копирование: Настройте регулярный бэкап с помощью
pg_dumpили утилитыpg_basebackup. - Мониторинг: Включите сбор статистики (
track_activities = on) и рассмотрите использование pgBadger для анализа логов.
Сравнение методов установки
| Метод | Плюсы | Минусы | Для чего подходит |
|---|---|---|---|
| Из репозитория ОС (apt) | Простота, автоматические обновления | Не самые свежие версии | Быстрый старт, тестовые среды |
| Официальный репозиторий PostgreSQL | Актуальные версии, стабильность | Требует добавления репозитория | Продакшен, установка сервера 1С PostgreSQL |
| Сборка из исходников | Максимальная гибкость, оптимизация под железо | Сложность, ручное обновление | Высоконагруженные системы, специфичные требования |
Частые проблемы и их решение
Ошибка: "FATAL: password authentication failed for user"
Причина: Неправильный пароль или настройки pg_hba.conf.
Решение: Проверь метод аутентификации в pg_hba.conf для соответствующего типа подключения (host/local). Убедись, что пароль пользователя установлен корректно: ALTER USER user1c WITH PASSWORD 'новый_пароль';
Ошибка: "could not connect to server: Connection refused"
Причина: Сервер не слушает сетевые подключения или заблокирован фаерволом.
Решение: Проверь параметр listen_addresses в postgresql.conf и убедись, что сервер перезагружен. Проверь фаервол: sudo ufw status.
1С не подключается к базе: ошибки с кодировкой
Причина: База создана с неправильной локалью (LC_COLLATE, LC_CTYPE).
Решение: Пересоздай базу данных с указанием 'ru_RU.UTF-8', как показано выше. Убедись, что локаль установлена в ОС: locale -a | grep ru.
Краткий чек-лист после установки
- ✅ Сервер установлен и запущен (
systemctl status postgresql). - ✅ Настроена аутентификация по паролю (md5 в
pg_hba.conf). - ✅ Сервер слушает сетевые интерфейсы (
listen_addresses = '*'). - ✅ Создан пользователь и база данных для приложения (1С).
- ✅ Настроены параметры производительности (память, локали).
- ✅ Настроен фаервол для ограничения доступа к порту 5432.
- ✅ Протестировано подключение с клиентской машины.
Поздравляю! Ты завершил установку и настройку сервера PostgreSQL. Этот фундамент позволит тебе развертывать надежные базы данных для веб-приложений, систем типа 1С и аналитических задач. Помни, что конфигурация — это итеративный процесс: мониторь производительность, читай логи и адаптируй настройки под реальную нагрузку.