Почему веб-клиент и тонкий клиент 1С не работают без запущенного конфигуратора на сервере Linux?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Развертывание системы «1С:Предприятие» в связке с ОС Ubuntu, СУБД PostgresPro и веб-сервером Apache — это популярное решение, которое, однако, таит в себе множество нюансов. Часто системные администраторы сталкиваются с парадоксальной ситуацией: клиентские приложения отказываются запускаться или «виснут», если на самом сервере не открыт сеанс Конфигуратора или Предприятия. Рассмотрим подробно причины этого явления и разберем по шагам, как привести систему в рабочее состояние.

Анализ архитектуры и вопрос лицензирования

Первым делом проанализируем ситуацию с лицензиями. В клиент-серверном варианте работы (когда используется SQL-база, например PostgresPro) наличие серверной лицензии является обязательным условием. Распространенное заблуждение заключается в том, что при работе через веб-сервер достаточно только клиентских лицензий. Это не так.

Разберем, как распределяются роли в этой схеме:

  1. СУБД (PostgresPro): Хранит данные, но ничего не знает о лицензиях 1С.
  2. Сервер 1С:Предприятия: Обеспечивает логику и взаимодействие с базой. Именно ему требуется лицензия «на сервер», чтобы он мог легально взаимодействовать с SQL-сервером.
  3. Веб-сервер (Apache): Служит «транспортом» для веб-клиентов, пересылая запросы к серверу 1С.

В рассматриваемом случае проблема частично решилась приобретением лицензии «Сервер-МИНИ» на 5 подключений. Без нее сервер 1С на Linux может работать нестабильно или требовать постоянного «прогрева» сессии через графический интерфейс, что мы и наблюдали при запуске Конфигуратора.

Диагностика через технологический журнал и логи сервера

Если после установки лицензии веб-клиент продолжает виснуть, нам необходимо заглянуть «под капот» системы. Проанализируем логи менеджера кластера. Для этого в Linux используем стандартные инструменты терминала. Обратите внимание на ошибки Software licensing error.

Рассмотрим пример команды для мониторинга ошибок в реальном времени:

tail -f /var/1cv8/log/rmngr_XXXX/YYYYMMDD.log | grep err

Если вы видите сообщения типа Maximum number of users per software license file is exceeded или Software license file does not support running 1C:Enterprise server, это сигнализирует о том, что:

Проверим содержимое файла публикации default.vrd. В нем должен быть правильно настроен параметр hasp. Если вы хотите, чтобы лицензии раздавал сервер 1С (что предпочтительно для клиент-сервера), убедитесь, что настройки не конфликтуют.

Проблема критической нехватки ресурсов

Одной из самых серьезных проблем в данной ситуации является объем оперативной памяти. Рассмотрим конфигурацию: 2 ГБ ОЗУ и 2 ГБ swap. Для современного сервера 1С и SQL-сервера на одной машине — это критически мало. Выясним, почему это приводит к зависаниям веб-клиента.

Когда вы запускаете Конфигуратор на сервере через Xrdp, вы принудительно инициализируете рабочие процессы rphost. Система выделяет под них память и удерживает её. Когда же пытается подключиться веб-клиент «на холодную», серверу 1С нужно породить новый поток или процесс, на что у ОС просто не хватает ресурсов, и процесс уходит в глубокий своп или блокируется механизмом OOM Killer в Linux.

Проанализируем ошибку: «Превышен максимальный расход памяти сервера за один вызов». Это прямое следствие нехватки физической памяти. В настройках рабочего сервера 1С есть параметр Безопасный расход памяти за один вызов.

Рассмотрим, как это исправить программно, хотя лучшим решением будет добавление ОЗУ:

  1. Откройте консоль администрирования кластеров 1С.
  2. Перейдите в свойства «Рабочего сервера».
  3. Найдите параметры «Безопасный расход памяти за один вызов» и «Критический объем памяти процессов».
  4. Если у вас всего 2 ГБ памяти, попробуйте временно установить значение «0» (без ограничений), чтобы проверить, исчезнет ли ошибка. Но помните, что это может привести к падению всей ОС при переполнении памяти.

Настройка прав доступа веб-сервера

Часто веб-клиент «висит» из-за того, что модуль Apache (работающий от пользователя www-data) не имеет доступа к программным лицензиям 1С, которые лежат в папке /var/1C/licenses и принадлежат пользователю usr1cv8.

Выполним проверку прав доступа. Рассмотрим типичную структуру каталогов:


# Проверка владельца папки с лицензиями
ls -l /var/1C/licenses
# Если владельцем не является группа, в которую входит www-data, могут быть проблемы

Чтобы решить проблему доступа, рекомендуется добавить пользователя веб-сервера в группу grp1cv8 или установить права на чтение файлов лицензий для всех пользователей:


chmod 644 /var/1C/licenses/*.lic
chmod 755 /var/1C/licenses

Итоги и рекомендации

Подводя итог, можно сказать, что «нормальная» работа 1С в таких условиях невозможна без соблюдения трех факторов:

  1. Лицензирование: Для SQL-версии обязательна лицензия на сервер. Без нее система может работать только в режиме отладки или с ограниченным числом подключений, что крайне нестабильно.
  2. Ресурсы: Для связки Postgres + 1С + Apache требуется минимум 8 ГБ ОЗУ для комфортной работы 3-5 пользователей. На 2 ГБ система будет постоянно спотыкаться о лимиты памяти.
  3. Чистка кэша: При смене лицензий или параметров кластера обязательно выполняйте очистку серверного кэша. Для этого нужно остановить службу srv1cv8 и удалить содержимое папки reg_1541/snacc... (но будьте осторожны, не удалите файлы настроек самого кластера).

Если вы выполнили все настройки, но веб-клиент все еще виснет, попробуйте опубликовать базу заново, убедившись, что в пути к базе в default.vrd указан правильный адрес сервера 1С, а не локальный путь к файлам (так как у вас клиент-серверный вариант).

← На главную