Как настроить хранилище конфигураций 1С на веб-сервере Apache 2.4 и решить проблемы с загрузкой модуля wsap24.dll?

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

Настройка хранилища конфигураций 1С на веб-сервере Apache 2.4 может вызвать ряд трудностей, особенно когда речь идет о корректной загрузке специализированного модуля wsap24.dll. Часто пользователи сталкиваются с ошибкой "The request operation has failed!", при этом журналы ошибок Apache остаются пустыми. Давайте подробно разберем, как мы можем решить эту проблему и успешно запустить хранилище.

Мы выясним причины возникновения ошибок, проанализируем необходимые шаги по настройке конфигурационного файла httpd.conf, а также обратим внимание на нюансы, связанные с версиями Apache, библиотеками времени выполнения и правами доступа. В отличие от публикации обычных информационных баз или веб-сервисов 1С, настройка хранилища конфигураций имеет свои особенности, которые мы подробно рассмотрим.

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

Одна из наиболее распространенных причин ошибок при загрузке модуля Apache заключается в некорректном указании путей в конфигурационном файле httpd.conf. Несмотря на то, что в операционной системе Windows мы привыкли использовать обратный слеш (\) для разделения компонентов пути, Apache требует использования прямого слеша (/), как это принято в Unix-подобных системах. Это особенно критично, когда путь содержит пробелы или специальные символы.

Предположим, мы хотим загрузить модуль wsap24.dll, который находится по пути C:\Program Files\1cv8\8.3.15.1489\bin\wsap24.dll. Изначально мы можем попытаться добавить следующую строку в httpd.conf:

LoadModule _1cws_module "C:\Program Files\1cv8\8.3.15.1489\bin\wsap24.dll"

Однако, такая запись, вероятно, приведет к ошибке. Нам необходимо изменить все обратные слеши на прямые. Корректная запись будет выглядеть так:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.15.1489/bin/wsap24.dll"

Помимо этого, нам следует обратить внимание на правильное указание путей во всех других директивах, где используются файловые пути, таких как Alias и Directory, которые мы рассмотрим далее. Даже если изменение слешей не решит проблему полностью для Apache 2.4 (как было отмечено в одном из сообщений), это является обязательным первым шагом и необходимым условием для корректной работы.

Шаг 2: Обеспечение совместимости версий Apache и библиотек Visual C++ Redistributable

Загрузка модуля wsap24.dll тесно связана с версией Apache и средой, в которой он был скомпилирован. Очень часто проблемы с загрузкой модуля, особенно те, что приводят к ошибкам в "Просмотре событий" Windows, ссылающимся на libapr-1.dll, возникают из-за несовместимости библиотек времени выполнения Visual C++. Модуль 1С (wsap24.dll) и Apache должны быть скомпилированы с одной и той же версией Visual C++ Redistributable.

Мы должны убедиться, что устанавливаем версию Apache, которая собрана с соответствующей версией компилятора. Например, для более новых версий Apache рекомендуется использовать сборки, скомпилированные с Visual C++ Redistributable for Visual Studio 2015-2019 (VS16). Если в системе отсутствует необходимая версия этих библиотек, Apache или модуль 1С не смогут корректно загрузиться.

Для того чтобы проверить это, выполним следующие действия:

  1. Определим версию Apache: Мы можем узнать версию Apache, запустив команду httpd -v в командной строке. Обычно информация о компиляторе указывается в названии дистрибутива Apache (например, httpd-2.4.46-win64-VS16 означает, что он скомпилирован с VS16).
  2. Установим соответствующие библиотеки: Если мы обнаружили, что Apache требует, например, VS16, нам необходимо загрузить и установить соответствующий пакет Visual C++ Redistributable (например, vc_redist.x64.exe для 64-битной системы).
  3. Проверим "Просмотр событий" Windows: Если Apache не запускается, и в его собственных логах ничего нет, мы всегда должны обращаться к "Просмотру событий" Windows (раздел "Журналы Windows" -> "Приложения" и "Система"). Там могут быть детальные сообщения о сбое модуля или отсутствии необходимых библиотек. Именно здесь часто появляются ошибки, ссылающиеся на libapr-1.dll.

В одном из сообщений пользователь успешно запустил Apache на версии httpd-2.4.46-win64-VS16, что подчеркивает важность правильного подбора среды.

Шаг 3: Полная конфигурация httpd.conf для хранилища конфигураций

Публикация хранилища конфигураций 1С на Apache отличается от публикации обычной информационной базы или веб-сервисов. Для хранилища, помимо директивы LoadModule, необходимы специальные настройки, включающие директиву ManagedApplicationDescriptor, указывающую на файл storage.1ccr. Этот файл storage.1ccr создается при первоначальной настройке хранилища и содержит информацию о его фактическом расположении.

Рассмотрим полный блок конфигурации, который мы можем добавить в файл httpd.conf. Рекомендуется размещать LoadModule в начале файла, вместе с другими модулями, а блок Alias и Directory – ближе к концу или в отдельном подключаемом файле.

Пример полного блока конфигурации для Apache 2.4:


# 1C-хранилище конфигураций:
# Загрузка модуля расширения веб-сервера 1С для Apache 2.4
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.19.1229/bin/wsap24.dll"

# 1C-хранилище конфигураций:
# Создаем виртуальный путь (алиас) для доступа к папке с файлом storage.1ccr
# "Storage" - это URL-путь, по которому будет доступно хранилище
# "D:/web/hosts/storage1c/" - это физический путь к папке, где лежит storage.1ccr
Alias "/Storage" "D:/web/hosts/storage1c/"

# 1C-хранилище конфигураций:
# Настраиваем доступ к физической папке хранилища
<Directory "D:/web/hosts/storage1c/">
    # Разрешаем переопределение настроек через .htaccess (необязательно, но может быть полезно)
    AllowOverride All
    # Отключаем все специальные опции для безопасности, кроме тех, что явно указаны
    Options None
    # Разрешаем доступ всем (Require all granted) - для тестовых сред
    # Для продакшн-средств рекомендуем более строгие правила доступа (например, по IP)
    Require all granted
    # Указываем, что этот каталог должен обрабатываться как приложение 1С
    SetHandler 1c-application
    # Указываем путь к дескриптору хранилища 1С.
    # Этот файл содержит настройки самого хранилища и путь к его базе данных.
    ManagedApplicationDescriptor "D:/web/hosts/storage1c/storage.1ccr"
</Directory>

Важные моменты, на которые мы должны обратить внимание в этой конфигурации:

  1. LoadModule _1cws_module "C:/Program Files/1cv8/8.3.19.1229/bin/wsap24.dll": Мы используем модуль wsap24.dll, предназначенный специально для Apache 2.4. Путь к модулю должен быть указан с прямыми слэшами, а версия платформы 1С (8.3.19.1229 в примере) должна соответствовать вашей установленной версии.
  2. Alias "/Storage" "D:/web/hosts/storage1c/": Директива Alias сопоставляет виртуальный URL-путь (/Storage) с физическим путем на диске (D:/web/hosts/storage1c/). Это означает, что когда пользователь будет обращаться к http://ваш_сервер/Storage, Apache будет искать файлы в указанной папке.
  3. <Directory "D:/web/hosts/storage1c/">...</Directory>: Этот блок определяет правила доступа и обработки для физической папки, где находится файл storage.1ccr.
  4. SetHandler 1c-application: Эта директива указывает Apache, что запросы к данному каталогу должны обрабатываться модулем 1С (_1cws_module) как приложение 1С. Обратите внимание, что в старых версиях или некорректных инструкциях может быть указано "1c application" (с пробелом), но правильно использовать дефис: "1c-application".
  5. ManagedApplicationDescriptor "D:/web/hosts/storage1c/storage.1ccr": Это ключевая директива для хранилища конфигураций. Она указывает путь к файлу storage.1ccr, который является дескриптором хранилища и содержит информацию о его внутреннем устройстве и физическом расположении. Путь к этому файлу также должен быть указан с прямыми слэшами.

Файл storage.1ccr: Мы должны убедиться, что этот файл существует в указанном каталоге и содержит актуальную информацию о хранилище. Он создается при первом создании хранилища и обычно включает путь к основному каталогу хранилища (например, C:/Storage1C/) в своей внутренней структуре.

Шаг 4: Проверка прав доступа и дополнительный отладчик

Даже если мы правильно настроили httpd.conf и обеспечили совместимость версий, проблемы могут сохраняться из-за недостаточных прав доступа. Процесс Apache, работающий в операционной системе Windows, обычно запускается под учетной записью NETWORK SERVICE или IIS_IUSRS. Нам критически важно удостовериться, что эта учетная запись имеет следующие разрешения:

  1. Полные права доступа к каталогу с платформой 1С (например, C:\Program Files\1cv8\8.3.15.1489\bin\) и ко всем файлам внутри него, включая wsap24.dll.
  2. Полные права доступа к каталогу, где находится файл storage.1ccr (например, D:/web/hosts/storage1c/).
  3. Полные права доступа к каталогу, который является фактическим местоположением хранилища конфигураций (например, C:/Storage1C/), указанному внутри файла storage.1ccr.

Недостаток прав доступа часто приводит к ошибке "The request operation has failed!" без каких-либо записей в логах Apache, поскольку процесс просто не может получить доступ к необходимым файлам или создать их.

Как мы можем проверить и установить права доступа:

  1. Откроем "Свойства" нужной папки (например, C:\Program Files\1cv8).
  2. Перейдем на вкладку "Безопасность".
  3. Нажмем "Изменить", затем "Добавить".
  4. Введем имя учетной записи (например, NETWORK SERVICE или IIS_IUSRS, в зависимости от того, под какой учетной записью запускается служба Apache), нажмем "Проверить имена" и "ОК".
  5. Предоставим этой учетной записи "Полный доступ" и применим изменения.

Шаг 5: Использование отдельных виртуальных хостов

Для лучшей организации и изоляции различных веб-приложений мы можем настроить хранилище конфигураций на отдельном виртуальном хосте Apache, а не добавлять все настройки непосредственно в основной файл httpd.conf. Это позволяет более гибко управлять ресурсами и безопасностью.

Если мы уже используем виртуальные хосты, то блок конфигурации для хранилища можно разместить внутри соответствующего блока <VirtualHost>. Для этого нам необходимо убедиться, что в httpd.conf включен модуль mod_vhost_alias и настроены виртуальные хосты.

Пример настройки виртуального хоста для хранилища:


# Убедитесь, что LoadModule _1cws_module уже загружен в основном httpd.conf
# LoadModule _1cws_module "C:/Program Files/1cv8/8.3.19.1229/bin/wsap24.dll"

# В файле httpd-vhosts.conf или другом файле, подключенном через Include
<VirtualHost *:80>
    ServerName storage.yourdomain.com
    DocumentRoot "D:/web/hosts/storage1c/"

    Alias "/Storage" "D:/web/hosts/storage1c/"

    <Directory "D:/web/hosts/storage1c/">
        AllowOverride All
        Options None
        Require all granted
        SetHandler 1c-application
        ManagedApplicationDescriptor "D:/web/hosts/storage1c/storage.1ccr"
    </Directory>

    ErrorLog "logs/storage_error.log"
    CustomLog "logs/storage_access.log" common
</VirtualHost>

Такой подход помогает нам разделить логи ошибок и доступа для хранилища, что упрощает отладку и мониторинг.

Резюме и общий алгоритм действий

Мы видим, что успешная публикация хранилища конфигураций 1С на Apache 2.4 требует комплексного подхода. Давайте подытожим шаги, которые нам необходимо выполнить:

  1. Проверим версию Apache: Убедимся, что наша версия Apache (например, httpd-2.4.46-win64-VS16) совместима с версией платформы 1С и необходимыми библиотеками Visual C++ Redistributable. При необходимости установим соответствующий пакет VC++ Redistributable.
  2. Исправим пути в httpd.conf: Изменим все обратные слеши (\) на прямые (/) в путях к wsap24.dll, в директивах Alias, Directory и ManagedApplicationDescriptor.
  3. Добавим полный блок конфигурации: Включим в httpd.conf (или в файл виртуального хоста) полный блок, аналогичный приведенному примеру, включая LoadModule, Alias, <Directory> с SetHandler 1c-application и ManagedApplicationDescriptor.
  4. Проверим файл storage.1ccr: Убедимся, что файл storage.1ccr существует в указанном каталоге и содержит корректный путь к основному каталогу хранилища.
  5. Настроим права доступа: Предоставим учетной записи, под которой работает служба Apache (NETWORK SERVICE или IIS_IUSRS), полные права доступа ко всем необходимым каталогам: к папке с платформой 1С, к папке с storage.1ccr и к фактическому каталогу хранилища.
  6. Проверим логи: Если Apache все еще не запускается, мы должны внимательно изучить "Просмотр событий" Windows на предмет ошибок, связанных с httpd.exe или wsap24.dll.
  7. Перезапустим Apache: После всех изменений обязательно перезапустим службу Apache, чтобы новые настройки вступили в силу.

Следуя этим шагам, мы значительно увеличим наши шансы на успешную настройку хранилища конфигураций 1С на Apache 2.4. Эта задача, хоть и требует внимания к деталям, вполне выполнима при систематическом подходе и проверке всех потенциальных источников проблем.

← На главную