Развертывание серверной части 1С:Предприятие на операционных системах семейства Linux, в частности на Ubuntu 18.04, часто сопровождается трудностями, связанными с сетевой доступностью и настройкой прав доступа. В этой статье мы подробно разберем ситуацию, когда сервер 1С, база данных PostgreSQL и веб-сервер Apache формально запущены, но клиентские приложения не могут установить соединение с информационной базой или зайти в конфигуратор.
Первым делом проанализируем состояние основных процессов сервера 1С. Для корректной работы кластера в системе должны быть активны три ключевых процесса: ragent (агент сервера), rmngr (менеджер кластера) и rphost (рабочий процесс). Выясним их статус с помощью системных инструментов Ubuntu.
Рассмотрим использование команд управления службами. В современных дистрибутивах Ubuntu управление осуществляется через systemd. Выполним команду для проверки статуса службы:
systemctl status srv1cv83
Если служба не активна, попробуем ее перезапустить. Важно понимать, что процессы могут не запуститься из-за отсутствия необходимых библиотек или прав доступа. Если мы видим, что процессы ragent запущены, но rmngr или rphost отсутствуют, причину стоит искать в логах сервера или в настройках кластера через консоль администрирования.
Одной из наиболее частых причин ошибки «Соединение с сервером 1С:Предприятие разорвано» является блокировка необходимых портов сетевым экраном. Для сервера 1С:Предприятие по умолчанию используется следующий диапазон портов:
Разберем, как проверить доступность этих портов с клиентской машины. Для этого воспользуемся утилитой telnet. Попробуем выполнить подключение по IP-адресу сервера:
telnet 192.168.x.x 1540
telnet 192.168.x.x 1541
Если подключение по порту 1540 проходит успешно, а по 1541 — нет, это явный признак того, что порт закрыт на стороне сервера. Проанализируем настройки iptables. Нам необходимо убедиться, что правила сетевого экрана разрешают входящий трафик на указанные порты. Для открытия портов выполним следующие команды:
iptables -A INPUT -p tcp --dport 1540 -j ACCEPT
iptables -A INPUT -p tcp --dport 1541 -j ACCEPT
iptables -A INPUT -p tcp --dport 1560:1591 -j ACCEPT
После внесения изменений обязательно проверим, что настройки сохранились после перезагрузки. В Ubuntu для этого часто используется пакет iptables-persistent.
Проанализируем ситуацию, когда по IP-адресу сервер доступен, а по имени — нет. 1С:Предприятие крайне чувствительно к корректному разрешению имен (DNS). Если клиент не может сопоставить имя сервера с его IP-адресом, соединение не будет установлено, даже если порты открыты.
Посмотрим на содержимое файла /etc/hosts на сервере. В нем должно быть четко прописано соответствие IP-адреса и сетевого имени. Пример правильной конфигурации:
127.0.0.1 localhost
192.168.1.10 server-1c.domain.local server-1c
Важный момент: избегайте записей типа 127.0.1.1, которые Ubuntu часто добавляет автоматически. Также рекомендуется закомментировать или удалить настройки IPv6 (записи с ::1), если ваша сеть их не использует, так как 1С может пытаться установить соединение через этот протокол и завершаться с ошибкой тайм-аута.
На стороне клиентской машины (особенно если это Windows) также следует проверить файл C:\Windows\System32\drivers\etc\hosts. Добавим туда строку с IP-адресом сервера и его именем, чтобы исключить влияние некорректной работы DNS-сервера в локальной сети.
Выясним, какие системные библиотеки необходимы для стабильной работы 1С на Ubuntu 18.04. Часто установка пакетов .deb проходит без ошибок, но сервер работает некорректно из-за отсутствия графических библиотек или шрифтов.
Рассмотрим список необходимых компонентов:
sudo apt-get install ttf-mscorefonts-installer
Посмотрим на настройки базы данных. Стандартный PostgreSQL из репозиториев Ubuntu не содержит специфических патчей, необходимых для 1С. Нужно использовать сборки от Postgres Pro или самой фирмы 1С.
Разберем важный параметр в файле postgresql.conf. Найдем строку standard_conforming_strings и установим значение off. Если этот параметр включен (on), 1С может выдавать ошибки при попытке записи строк с обратными слэшами, что критично для структуры метаданных.
Также проанализируем локаль системы. Сервер 1С требует, чтобы в системе была сгенерирована русская локаль. Проверим это командами:
locale -a
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8
Выясним причину возможных блокировок на уровне файловой системы. При установке 1С создается пользователь usr1cv8. Все процессы сервера запускаются от его имени. Проверим, имеет ли этот пользователь права на запись в свою домашнюю директорию, где хранятся настройки кластера:
chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8
chmod -R 755 /home/usr1cv8/.1cv8
Не забудем про AppArmor. В Ubuntu этот модуль безопасности может блокировать доступ процесса postgres или apache2 к нестандартным каталогам. Если вы перенесли базу данных на другой диск, обязательно проверьте логи /var/log/syslog на предмет записей «denied». В случае обнаружения блокировок, необходимо добавить соответствующие пути в профили AppArmor.
Если планируется работа через веб-клиент, проанализируем настройку Apache. При использовании порта, отличного от 80 (например, 8080, как в случае совместной работы с почтовым сервером), убедитесь, что в конфигурационном файле публикации .vrd правильно указан адрес сервера.
При публикации базы с помощью утилиты webinst, 1С создает файл в каталоге веб-сервера. Проверьте права доступа: пользователь www-data (под которым работает Apache в Ubuntu) должен иметь права на чтение файлов публикации. Также убедитесь, что в Apache включен модуль rewrite и разрешено использование файлов .htaccess (директива AllowOverride All), иначе авторизация в веб-клиенте может не работать.
Подведем итог: стабильная работа 1С на Ubuntu складывается из трех составляющих: правильной настройки сетевых портов в iptables, корректного разрешения имен в hosts и наличия всех необходимых системных библиотек. Системный подход к диагностике, начиная от проверки процессов и заканчивая анализом прав доступа, позволяет быстро локализовать и устранить большинство проблем запуска.