Как устранить ошибку undefined symbol: ap_rputs при запуске веб-сервера 1С на Apache в Linux?

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

При попытке развернуть публикацию информационной базы «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, а также настроить сетевое лицензирование.

Причины возникновения ошибки

Выясним причину появления ошибки при загрузке модуля:

  1. Несовместимость версий Apache и модуля 1С. Сообщение undefined symbol: ap_rputs указывает на несовпадение ABI (Application Binary Interface). Модуль wsap22.so скомпилирован строго для ветки Apache 2.2. В ветке Apache 2.4 внутреннее API изменилось, поэтому веб-сервер версии 2.4 не может загрузить библиотеку wsap22.so.
  2. Версия платформы «1С:Предприятие». Отдельный модуль wsap24.so и официальная поддержка Apache 2.4 появились в платформе 1С, начиная с версии 8.3.8. В устаревших версиях (8.3.4–8.3.7) модуль для Apache 2.4 отсутствует.

Шаг 1. Выбор правильной версии платформы и модуля расширения

Если на сервере установлен 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.

Шаг 2. Настройка модели процессов Apache (MPM Prefork)

Разберем важный нюанс архитектуры веб-сервера. Модуль расширения 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

Шаг 3. Публикация информационной базы с помощью webinst

Для автоматической генерации конфигурации и создания дескриптора публикации (файла 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

Разберем параметры команды подробнее:

  1. -apache24 — указывает, что целевым веб-сервером является Apache 2.4 (в конфигурационный файл будет прописана загрузка wsap24.so).
  2. -wsdir — виртуальный каталог (алиас), по которому база будет доступна в адресной строке браузера (например, http://server/ib_name).
  3. -dir — физический путь к каталогу публикации на сервере, где будет создан файл default.vrd.
  4. -connStr — строка подключения к базе. Для файловой базы: File="/путь_к_базе/";, для клиент-серверной: Srvr="server_name";Ref="ib_name";.
  5. -confPath — путь к главному конфигурационному файлу веб-сервера (/etc/apache2/apache2.conf в Debian/Ubuntu или /etc/httpd/conf/httpd.conf в RHEL/CentOS).

Шаг 4. Настройка прав доступа и синтаксиса Apache 2.4

Проверим права доступа к каталогам и конфигурационным файлам:

  1. Пользователь веб-сервера (www-data в Debian/Ubuntu или apache в CentOS/RHEL) должен иметь права на чтение и исполнение файлов в каталоге установки 1С: /opt/1C/v8.3/x86_64/.
  2. При работе с файловой информационной базой процесс веб-сервера должен обладать правами на чтение и запись в каталоге с файлом 1Cv8.1CD.
  3. В сгенерированном блоке конфигурации для каталога публикации в Apache 2.4 должен использоваться директивный синтаксис Require all granted вместо устаревшего 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>

Шаг 5. Настройка сетевых лицензий (nethasp.ini)

Если на сервере развернут только веб-сервер (без кластера серверов 1С), а база является файловой, лицензия запрашивается веб-клиентом от имени процесса веб-сервера. Для получения лицензий от сетевого ключа HASP необходимо настроить файл конфигурации nethasp.ini.

Разберем порядок настройки:

  1. Найдем файл nethasp.ini в подкаталоге конфигурации платформы: /opt/1C/v8.3/x86_64/conf/.
  2. Откроем файл в текстовом редакторе и настроим секцию [NH_TCPIP].
  3. Укажем точный IP-адрес или доменное имя сервера лицензирования в параметре NH_SERVER_ADDR.
  4. Установим использование протокола UDP и отключим широковещательный поиск (Broadcast), чтобы ускорить старт сессий и исключить сетевые задержки:

[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.

Шаг 6. Проверка конфигурации и перезапуск веб-сервера

После внесения всех настроек протестируем конфигурацию Apache на отсутствие синтаксических ошибок:

sudo apachectl configtest

Если получен ответ Syntax OK, перезапустим службу веб-сервера:

sudo systemctl restart apache2

После перезапуска перейдем в браузере по адресу http://ip_сервера/ib_name и убедимся в успешном открытии веб-клиента 1С.

← На главную