1С:Предприятие 8.3 на Linux-сервере: от установки пакетов до первой рабочей базы
Содержание
Сервер 1С на Linux работает так же, как на Windows: агент ragent принимает подключения на порту 1540, менеджер кластера rmngr слушает 1541, а рабочие процессы rphost выполняют код конфигурации и ходят в СУБД. Разница не в архитектуре, а в установке и обслуживании: служба systemd вместо службы Windows, PostgreSQL вместо MS SQL, Apache вместо IIS.
Частое заблуждение — что «1С под Linux урезанная». Серверная часть платформы 8.3 на Linux полноценная: те же базы, тот же кластер, та же консоль администрирования. Ограничения касаются в основном клиента и внешних компонент под Windows, а не сервера.
Из чего состоит кластер 1С на Linux
Сервер 1С — это не одна программа, а набор процессов. Каждый отвечает за своё.
| Процесс | Порт по умолчанию | Что делает |
|---|---|---|
ragent | 1540 | Агент сервера: точка входа для клиентов и консоли |
rmngr | 1541 | Менеджер кластера: реестр баз, сеансы, блокировки |
rphost | 1560–1591 | Рабочие процессы: выполняют серверный код, работают с СУБД |
ras | 1545 | Сервер администрирования для утилиты rac и консолей |
Клиент сначала обращается к агенту на 1540, тот передаёт его менеджеру кластера, а дальше соединение уходит на один из рабочих процессов. Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера. Отсюда главное правило для файрвола: открыть нужно не один порт, а весь набор.
Где что лежит после установки:
- 📁
/opt/1cv8/x86_64/<версия>/— исполняемые файлы платформы конкретной версии; - 📁
/home/usr1cv8/.1cv8/1C/1cv8/— каталог кластера по умолчанию: реестр баз, журналы регистрации, сеансовые данные; - 📁
/opt/1cv8/conf/— сюда кладутlogcfg.xmlдля технологического журнала; - 👤
usr1cv8— системный пользователь, от которого работает служба.
Несколько версий платформы ставятся рядом, в разные каталоги. Это удобно для обновления: новую версию можно поставить заранее, а переключиться позже.
Что нужно серверу 1С на Linux: железо, дистрибутив, пакеты
Требования к железу зависят от числа пользователей и тяжести конфигурации. Ориентиры для одной машины, где стоят и 1С, и PostgreSQL:
| Нагрузка | CPU | RAM | Диск |
|---|---|---|---|
| До 10 пользователей, БП/ЗУП | 4 ядра | 16 ГБ | SSD от 200 ГБ |
| 20–50 пользователей, УТ/КА | 8 ядер | 32–64 ГБ | NVMe, отдельный том под СУБД |
| Больше 50, ERP | от 16 ядер | от 64 ГБ | Сервер СУБД выносят отдельно |
Цифры ориентировочные. Узкое место чаще всего — диск под СУБД и частота ядер, а не их количество: один тяжёлый отчёт выполняется в одном потоке.
Дистрибутивы. Официально поддерживаются Ubuntu и Debian, RHEL-совместимые системы, а также российские Astra Linux, РЕД ОС и Альт. Актуальный перечень приводят в документации к каждой версии платформы — сверяйтесь с ним перед выбором ОС.
Что подготовить заранее:
- 🌐 постоянный IP и имя хоста, которое разрешается и на самом сервере, и на всех клиентах;
- 🔤 локаль
ru_RU.UTF-8в системе — без неё PostgreSQL не создаст базу с нужной сортировкой; - 🔠 шрифты (например, пакет
ttf-mscorefonts-installerв Ubuntu) — иначе печатные формы и PDF на сервере поедут; - 🔑 лицензия сервера: программная (активируется в файл) или аппаратный ключ HASP — для него нужен драйвер
aksusbd.
Имя хоста — источник половины проблем при первом подключении. Сервер сообщает клиенту своё имя, и клиент должен его разрешить. Если DNS нет, пропишите имя сервера в /etc/hosts на клиентах или в C:\Windows\System32\drivers\etc\hosts на Windows.
Установка сервера 1С на Linux по шагам
Начиная с платформы 8.3.20 сервер под Linux поставляется единым установщиком setup-full-<версия>-x86_64.run вместо набора deb- и rpm-пакетов. Порядок ниже — для него.
1. Подготовьте систему
Обновите пакеты, задайте имя хоста и проверьте локаль:
sudo apt update && sudo apt upgrade -y
sudo hostnamectl set-hostname srv1c
sudo locale-gen ru_RU.UTF-8
locale -a | grep ru_RU
Добавьте в /etc/hosts строку с IP сервера и его именем, если она не появилась сама.
2. Запустите установщик
Скачайте дистрибутив технологической платформы для Linux с портала поддержки, распакуйте архив и запустите установку без графического интерфейса:
chmod +x setup-full-8.3.xx.xxxx-x86_64.run
sudo ./setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws,server_admin
Компонент server — сам сервер, ws — модули веб-сервера для публикации, server_admin — сервер администрирования ras. Клиент на сервер ставить не обязательно.
3. Подключите службу systemd
В каталоге версии лежит готовый шаблон юнита. Его подключают ссылкой и включают экземпляр default:
sudo systemctl link /opt/1cv8/x86_64/8.3.xx.xxxx/srv1cv8-8.3.xx.xxxx@.service
sudo systemctl enable --now srv1cv8-8.3.xx.xxxx@default
systemctl status srv1cv8-8.3.xx.xxxx@default
Если в статусе active (running), а ss -tlnp | grep 154 показывает порты 1540 и 1541 — сервер жив. В старых версиях платформы вместо юнита использовался скрипт /etc/init.d/srv1cv83.
4. Откройте порты
Для ufw это выглядит так:
sudo ufw allow 1540:1541/tcp
sudo ufw allow 1560:1591/tcp
sudo ufw allow 1545/tcp
Порт 1545 открывайте только для машин администраторов, а не для всей сети.
5. Активируйте лицензию и создайте базу
Программную лицензию проще всего активировать при первом запуске любой базы с клиента: мастер получения лицензии сохранит файл на сервере. Базу создают через консоль администрирования с Windows-машины или через rac прямо на сервере. Для проверки кластера:
/opt/1cv8/x86_64/8.3.xx.xxxx/rac cluster list
Команда выведет идентификатор кластера, порт и имя хоста. Остальные подкоманды смотрите в справке rac help.
PostgreSQL под 1С: какую сборку ставить и как настроить
Обычный PostgreSQL из репозитория дистрибутива для 1С не подходит. Нужна сборка с патчами под платформу: PostgreSQL от фирмы 1С с портала поддержки или Postgres Pro для 1С. Версию СУБД выбирайте по списку совместимости вашей версии платформы.
Параметры, которые стоит поменять сразу
Настройки по умолчанию рассчитаны на слабую машину. Для сервера с 32 ГБ под СУБД отправная точка в postgresql.conf такая:
| Параметр | Значение | Смысл |
|---|---|---|
shared_buffers | 8GB | Около 25% памяти, отданной СУБД |
effective_cache_size | 22GB | Подсказка планировщику: сколько кэширует ОС |
work_mem | 64MB | Память на сортировку в одном запросе |
maintenance_work_mem | 1GB | Для VACUUM и построения индексов |
max_connections | 300 | С запасом: каждый рабочий процесс открывает свои соединения |
random_page_cost | 1.1 | Для SSD и NVMe |
work_mem выделяется на каждую операцию сортировки, а не на соединение. При 300 соединениях большое значение легко съест всю память — поднимайте его постепенно и смотрите на нагрузку.
Если 1С и СУБД на одной машине, делите память: например, 32 ГБ под PostgreSQL и остаток под rphost. Кластер 1С под нагрузкой тоже потребляет гигабайты.
Резервное копирование: три уровня
| Способ | Что даёт | Когда применять |
|---|---|---|
pg_dump -Fc | Копия одной базы на момент запуска | Ежедневно, ночью |
pg_basebackup + архив WAL | Восстановление на любой момент времени | Для баз, где потеря часа работы критична |
Выгрузка .dt из Конфигуратора | Переносимая копия, не зависит от СУБД | Перед обновлением, для переезда |
Простой ночной дамп через cron:
pg_dump -U postgres -Fc -f /backup/buh_$(date +%F).dump buh
find /backup -name 'buh_*.dump' -mtime +14 -delete
Копия, которую ни разу не восстанавливали, — не копия. Раз в месяц разворачивайте дамп в тестовую базу и открывайте её в 1С.
Веб-клиент через Apache и Nginx
Модуль веб-расширения 1С работает внутри Apache: утилита webinst умеет публиковать базы только в него (и в IIS на Windows). Nginx напрямую модуль 1С не загружает. Рабочая схема на Linux — Apache публикует базу на внутреннем порту, а Nginx стоит перед ним, принимает HTTPS и проксирует запросы.
Публикация в Apache
Поставьте Apache, переведите его на внутренний порт (например, 8080 в /etc/apache2/ports.conf) и опубликуйте базу:
sudo /opt/1cv8/x86_64/8.3.xx.xxxx/webinst -publish -apache24 \
-wsdir buh -dir /var/www/buh \
-connstr "Srvr=srv1c;Ref=buh;" \
-confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2
После этого база открывается по адресу http://srv1c:8080/buh. Проверьте это до настройки Nginx — так проще понять, где ошибка.
Nginx впереди
Минимальный блок для проксирования с HTTPS:
server {
listen 443 ssl http2;
server_name 1c.example.ru;
ssl_certificate /etc/letsencrypt/live/1c.example.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/1c.example.ru/privkey.pem;
client_max_body_size 200m;
proxy_read_timeout 600s;
location /buh/ {
proxy_pass http://127.0.0.1:8080/buh/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
}
}
Два параметра важнее остальных. client_max_body_size — без него не загрузятся файлы больше 1 МБ: вложения, выписки, обмены. proxy_read_timeout — без него Nginx оборвёт длинный отчёт или проведение через 60 секунд.
Не публикуйте базу в интернет по голому HTTP и с пользователями без пароля. Веб-клиент открыт для перебора паролей так же, как любая форма входа.
Производительность: ядро, СУБД, кластер, запросы
Скорость 1С на Linux упирается в те же четыре слоя, что и везде. Идите сверху вниз и не меняйте всё сразу.
Уровень ОС
- 🧠
vm.swappiness = 10в/etc/sysctl.conf— система реже уводит в своп память СУБД; - 📦 прозрачные огромные страницы (THP) для PostgreSQL лучше выключить: они дают задержки при выделении памяти;
- 💾 файловая система для данных СУБД — ext4 или XFS с опцией
noatime; - ⚡ режим энергосбережения процессора —
performance, иначе частота плавает и одиночные запросы тормозят.
Уровень кластера 1С
В свойствах рабочего сервера есть параметры числа информационных баз и соединений на процесс. Для 20–30 пользователей хватает значений по умолчанию. При росте нагрузки уменьшают число соединений на процесс, чтобы один тяжёлый пользователь не тормозил остальных.
Проверьте и ограничение памяти рабочих процессов. Если оно не задано, утечка в одном rphost может съесть всю память сервера. Порог задают в свойствах рабочего сервера; при превышении процесс перезапускается.
Уровень запросов
Когда железо в порядке, а отчёт всё равно идёт минуты — виноват запрос. Включите технологический журнал: файл logcfg.xml в /opt/1cv8/conf/ с событиями DBPOSTGRS длительностью больше секунды. Журнал покажет текст тяжёлых запросов и место в коде, откуда они вызваны.
Технологический журнал быстро растёт. Ставьте ограничение по времени хранения и включайте только те события, которые разбираете сейчас.
Ошибки при запуске и подключении
Почти все проблемы первого запуска укладываются в несколько сценариев. Выберите свой симптом:
Перезапуск службы srv1cv8 обрывает сеансы всех пользователей, включая фоновые задания и обмены. Делайте это вечером или после предупреждения, а не посреди рабочего дня.
Частые вопросы
Можно ли перенести готовую базу с Windows-сервера на Linux?
.dt в Конфигураторе на старом сервере, создайте пустую базу в новом кластере на PostgreSQL и загрузите туда файл. Перенос через .dt не зависит от СУБД, поэтому годится и при переходе с MS SQL.Нужен ли графический интерфейс на сервере?
rac.Можно ли держать на одном сервере две версии платформы?
/opt/1cv8/x86_64/. Но два кластера одновременно должны слушать разные порты, иначе второй не запустится.