При попытке развернуть публикацию информационной базы «1С:Предприятие» на веб-сервере Apache в дистрибутивах Linux (Debian, Ubuntu, CentOS, Rocky Linux и др.) администраторы часто сталкиваются с ошибкой проверки конфигурации или сбоем запуска службы веб-сервера:
Cannot load /opt/1C/v8.3/x86_64/wsap22.so into server: /opt/1C/v8.3/x86_64/wsap22.so: undefined symbol: ap_rputs Action 'configtest' failed.
Проанализируем технические причины возникновения этой неисправности и разберем по шагам, как правильно опубликовать базу 1С на актуальных версиях веб-сервера Apache, а также настроить сетевое лицензирование.
Выясним причину появления ошибки при загрузке модуля:
undefined symbol: ap_rputs указывает на несовпадение ABI (Application Binary Interface). Модуль wsap22.so скомпилирован строго для ветки Apache 2.2. В ветке Apache 2.4 внутреннее API изменилось, поэтому веб-сервер версии 2.4 не может загрузить библиотеку wsap22.so.wsap24.so и официальная поддержка Apache 2.4 появились в платформе 1С, начиная с версии 8.3.8. В устаревших версиях (8.3.4–8.3.7) модуль для Apache 2.4 отсутствует.Если на сервере установлен Apache 2.4, убедимся, что установлена платформа «1С:Предприятие» версии не ниже 8.3.8. В каталоге установки платформы (например, /opt/1C/v8.3/x86_64/) должен присутствовать файл wsap24.so.
Если используется старая платформа (8.3.7 и ниже), у нас есть два пути: обновить платформу 1С до поддерживаемой версии либо использовать Apache 2.2 в изолированном окружении (контейнер Docker или отдельный экземпляр) с проксированием трафика через Reverse Proxy.
Разберем важный нюанс архитектуры веб-сервера. Модуль расширения 1С (wsap24.so) спроектирован для работы с многопроцессной моделью mpm_prefork. По умолчанию в современных дистрибутивах Linux часто включены многопоточные модули mpm_event или mpm_worker, что может приводить к аварийному завершению процессов или нестабильной работе 1С.
Для корректной работы в Debian/Ubuntu переключим модуль MPM следующими командами:
sudo a2dismod mpm_event
sudo a2dismod mpm_worker
sudo a2enmod mpm_prefork
Для автоматической генерации конфигурации и создания дескриптора публикации (файла default.vrd) воспользуемся штатной утилитой webinst из поставки платформы 1С. Обязательно укажем флаг -apache24, чтобы утилита подключила модуль wsap24.so, а не wsap22.so.
Рассмотрим пример публикации файловой информационной базы:
/opt/1C/v8.3/x86_64/webinst -publish \
-apache24 \
-wsdir ib_name \
-dir '/var/www/html/ib_name/' \
-connStr 'File="/var/1c_bases/ib_name/";' \
-confPath /etc/apache2/apache2.conf
Разберем параметры команды подробнее:
-apache24 — указывает, что целевым веб-сервером является Apache 2.4 (в конфигурационный файл будет прописана загрузка wsap24.so).-wsdir — виртуальный каталог (алиас), по которому база будет доступна в адресной строке браузера (например, http://server/ib_name).-dir — физический путь к каталогу публикации на сервере, где будет создан файл default.vrd.-connStr — строка подключения к базе. Для файловой базы: File="/путь_к_базе/";, для клиент-серверной: Srvr="server_name";Ref="ib_name";.-confPath — путь к главному конфигурационному файлу веб-сервера (/etc/apache2/apache2.conf в Debian/Ubuntu или /etc/httpd/conf/httpd.conf в RHEL/CentOS).Проверим права доступа к каталогам и конфигурационным файлам:
www-data в Debian/Ubuntu или apache в CentOS/RHEL) должен иметь права на чтение и исполнение файлов в каталоге установки 1С: /opt/1C/v8.3/x86_64/.1Cv8.1CD.Allow from all.Посмотрим на пример корректного блока директории в конфигурации Apache:
# 1c publication
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so"
<Directory "/var/www/html/ib_name/">
AllowOverride None
Options None
Require all granted
SetHandler 1c-ws
ManagedApplicationDescriptor "/var/www/html/ib_name/default.vrd"
</Directory>
Если на сервере развернут только веб-сервер (без кластера серверов 1С), а база является файловой, лицензия запрашивается веб-клиентом от имени процесса веб-сервера. Для получения лицензий от сетевого ключа HASP необходимо настроить файл конфигурации nethasp.ini.
Разберем порядок настройки:
nethasp.ini в подкаталоге конфигурации платформы: /opt/1C/v8.3/x86_64/conf/.[NH_TCPIP].NH_SERVER_ADDR.
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100
NH_PORT_NUMBER = 475
NH_TCPIP_METHOD = UDP
NH_USE_BROADCAST = Disabled
Убедимся, что сетевой порт 475 UDP открыт на межсетевом экране между веб-сервером и сервером с установленным HASP License Manager.
После внесения всех настроек протестируем конфигурацию Apache на отсутствие синтаксических ошибок:
sudo apachectl configtest
Если получен ответ Syntax OK, перезапустим службу веб-сервера:
sudo systemctl restart apache2
После перезапуска перейдем в браузере по адресу http://ip_сервера/ib_name и убедимся в успешном открытии веб-клиента 1С.