Рассмотрим классический и крайне неприятный сценарий, с которым часто сталкиваются системные администраторы при настройке удаленной работы. У нас развернута файловая база данных «1С:Управление нашей фирмой» (УНФ) на сервере под управлением операционной системы Linux. Все работает исправно в локальном режиме. Однако для удобства пользователей или интеграции со сторонними сервисами возникает необходимость опубликовать базу на веб-сервере Apache 2.4. Мы успешно выполняем публикацию, все запускается и функционирует, но после первой же перезагрузки сервера система выдает критическую ошибку: «Неверный формат файла программной лицензии».
При этом повторная активация резервным пин-кодом временно спасает ситуацию, но повторный запуск через Web или перезагрузка сервера снова приводит к краху лицензии. Выясним причину этой проблемы, проанализируем технические нюансы работы платформы «1С:Предприятие 8» в среде Linux и разберем по шагам, как настроить стабильную работу системы.
Проанализируем техническую сторону процесса. Когда мы работаем с файловой базой 1С локально (через тонкий или толстый клиент), поиском и проверкой лицензии занимается непосредственно само клиентское приложение, запущенное на рабочей станции пользователя. Оно ищет локальный файл лицензии *.lic в каталогах пользователя или на сервере.
Однако, как только мы публикуем базу на веб-сервере Apache, механизм кардинально меняется. Теперь подключение клиентов происходит по протоколу HTTP или HTTPS. Браузер или тонкий клиент, подключающийся к веб-серверу, вообще не имеют доступа к локальным лицензиям на клиентских компьютерах. Всю работу по поиску, проверке и распределению лицензий берет на себя модуль расширения веб-сервера 1С (специальная динамическая библиотека *.so в среде Linux, например, wsap24.so).
Именно этот модуль обращается к файлам лицензий, расположенным на сервере, и выделяет сессии пользователям по принципу «один сеанс — одна лицензия». Любые несоответствия в правах доступа, путях размещения файлов или конфигурации самой программы мгновенно приводят к сбоям, которые платформа интерпретирует как повреждение или неверный формат файла лицензии.
Разберем важнейшее ограничение, с которым часто сталкиваются администраторы. В рассматриваемом случае используется Базовая версия «1С:Управление нашей фирмой».
Согласно лицензионной политике и техническим ограничениям фирмы «1С», базовые версии программных продуктов имеют ряд жестких лимитов:
При попытке опубликовать базовую версию на Apache и подключиться к ней через веб-клиент, модуль расширения веб-сервера пытается инициализировать многопользовательский режим работы или распределить сессии. Система защиты платформы распознает это как нарушение лицензионного соглашения и попытку обойти ограничения однопользовательского режима. В результате защитный механизм 1С блокирует файл лицензии, делая его непригодным для дальнейшего использования. На экране пользователя появляется ошибка «Неверный формат файла программной лицензии». Попытки восстановить лицензию резервными пин-кодами на базовой версии при сохранении веб-публикации будут приводить к аналогичному результату — повторной блокировке новых файлов лицензий.
Даже если мы используем версию ПРОФ, при публикации на Apache под Linux часто возникают сопутствующие инфраструктурные проблемы, приводящие к аналогичной ошибке. Проанализируем их:
*.lic в разные папки (например, в домашний каталог пользователя 1С и в каталог веб-сервера Apache). Защитная система 1С при сканировании каталогов обнаруживает две одинаковые лицензии на одном хосте, расценивает это как попытку нелегального копирования и мгновенно блокирует обе копии, повреждая их структуру.www-data (или apache в RedHat-подобных дистрибутивах). В то же время сама платформа 1С или сервер приложений (если используется клиент-серверный вариант) работает под пользователем usr1cv8. Если файл лицензии был создан под учетной записью одного пользователя, а веб-сервер пытается прочитать его из-под своей учетной записи и не имеет на это прав, возникает ошибка доступа, которую платформа часто маскирует под «неверный формат»..pfl (например, 1cv8conn.pfl), в которых кэшируются параметры соединений и привязки лицензий. При некорректной перезагрузке сервера Linux или жестком завершении процесса Apache эти файлы могут оказаться недописанными, что вызывает сбои при последующей проверке лицензии.Рассмотрим подробную инструкцию, как перевести систему на стабильные рельсы, устранить ошибки лицензирования и успешно запустить работу через веб-интерфейс.
Так как базовая версия физически не предназначена для работы через веб-сервер, первым делом необходимо выполнить апгрейд конфигурации до версии ПРОФ. Для этого выполним следующие шаги:
*.cf).Перед тем как активировать новую лицензию, мы должны полностью очистить сервер Linux от старых заблокированных файлов лицензий и временных конфигурационных файлов. В противном случае платформа продолжит считывать поврежденные файлы и выдавать ошибку. Выполним следующие действия в терминале Linux:
sudo systemctl stop apache2
# или для CentOs/RHEL:
sudo systemctl stop httpd
.lic на сервере. Для этого воспользуемся стандартной утилитой поиска:
sudo find / -name "*.lic"
/var/1C/licenses//home/usr1cv8/.1cv8/1C/1cv8/conf/rm.
sudo find / -name "*.pfl" -delete
Это сбросит кэш сетевых подключений и заставит платформу создать новые чистые файлы привязок при следующем запуске.
Чтобы избежать конфликтов прав доступа между локальными пользователями и веб-сервером Apache, мы должны разместить файл новой программной лицензии в едином общедоступном каталоге, который по умолчанию сканируется платформой 1С. Рекомендуемым глобальным путем в ОС Linux является каталог /var/1C/licenses/. Создадим этот каталог и зададим корректную структуру:
sudo mkdir -p /var/1C/licenses
Это один из самых критичных шагов. Нам нужно сделать так, чтобы и системный пользователь 1С (usr1cv8), и пользователь веб-сервера Apache (www-data или apache) имели беспрепятственный доступ на чтение файлов в этом каталоге. Разберем, как настроить права через создание общей группы пользователей:
1c_licenses:
sudo groupadd 1c_licenses
usr1cv8) и пользователя веб-сервера Apache (www-data):
sudo usermod -aG 1c_licenses usr1cv8
sudo usermod -aG 1c_licenses www-data
usr1cv8, а группой-владельцем — созданную группу 1c_licenses:
sudo chown -R usr1cv8:1c_licenses /var/1C/licenses
sudo chmod -R 770 /var/1C/licenses
Теперь выполним чистую активацию программной лицензии 1С:УНФ ПРОФ:
usr1cv8 (чтобы файлы лицензии создавались с правильными владельцами и правами)./var/1C/licenses/. Если платформа предлагает сохранить лицензию в домашний каталог текущего пользователя, измените этот путь вручную.После успешной активации лицензии выполним повторную публикацию информационной базы на веб-сервере:
sudo systemctl restart apache2
Проанализируем результаты проделанной работы. Теперь, когда мы заходим в базу данных через браузер, модуль расширения веб-сервера обращается к глобальному каталогу /var/1C/licenses/. Благодаря тому, что системный пользователь веб-сервера состоит в группе 1c_licenses, он успешно считывает файл программной лицензии *.lic.
Поскольку мы перешли на версию ПРОФ, платформа корректно обрабатывает многопользовательские сессии, не блокируя файлы лицензий и не вызывая ошибку «Неверный формат файла программной лицензии». Если в будущем потребуется расширить количество рабочих мест, вы сможете просто активировать дополнительные многопользовательские или однопользовательские лицензии в этот же каталог, и веб-сервер автоматически начнет раздавать их подключающимся клиентам.
Для предотвращения подобных проблем в будущем всегда придерживайтесь следующих правил при администрировании серверов 1С на операционных системах семейства Linux:
/var/1C/licenses/). Не допускайте появления дубликатов файлов *.lic в домашних каталогах пользователей.usr1cv8 и www-data через общую группу безопасности, чтобы избежать конфликтов чтения/записи модулем веб-сервера.*.pfl, чтобы избежать сбоев при чтении кэша лицензий.