СЕРВЕР 1С APACHE: установка, публикация базы и что дальше

Всем привет. С вами Низамов Илья, и это первый урок по интеграции 1С с web. Полный курс по интеграции 1С вы можете посмотреть по ссылке.

Эта статья — базовый вход в тему «1С и веб-сервер»: разворачиваем Apache, публикуем на нём информационную базу и получаем рабочий URL для веб-клиента, REST-сервисов или интеграций. Настройку HTTPS я вынес в отдельный урок — ссылка на него будет в конце статьи, там разбор с генерацией сертификата и конфигурацией SSL-модуля Apache.

 

Скачивание и подготовка структуры Apache

Для работы нам понадобится веб-сервер Apache. В следующих уроках мы установим PHP, базу MySQL и настроим безопасное подключение к серверу Apache. Начнём с базовой установки.

Скачиваем актуальную сборку Apache HTTP Server 2.4.x под вашу разрядность ОС (актуальная стабильная ветка на момент написания — 2.4.68). Для Windows проще всего взять готовую сборку с Apache Lounge или Apache Haus — сам проект Apache распространяет только исходники, бинарники собирают сторонние сборщики.

  

Перед установкой создам структуру локального веб-сервера: папку "Server" на диске C, внутри неё папку "Bin" — туда распакую архив с веб-сервером.

  

  

Далее нужно настроить конфигурационный файл. Ищем httpd.conf в папке conf.

  

Настройка httpd.conf

Для удобства редактирую его в Notepad++.

Меняем путь к серверу apache. Находим строку
Define SRVROOT "c:/Apache24"
и меняем на
Define SRVROOT "c:/Server/Bin/Apache24"
— указываем каталог, куда распакован Apache.

Далее находим
#ServerName www.example.com:80
и меняем на
ServerName localhost
Указываем localhost, так как сервер локальный — публикацию в интернет через голый Apache без reverse-proxy рассматривать не буду, это отдельная тема сетевой безопасности.

Перед изменением следующего параметра создаём папку, где будут храниться сайты и публикации баз 1С. У меня она на диске Z и называется www.

После создания папки находим
DocumentRoot "${SRVROOT}/htdocs"
и меняем на
DocumentRoot "Z:/www"

Чуть ниже
<Directory "${SRVROOT}/htdocs">
меняем на
<Directory "Z:/www">

Так как в дальнейшем будем использовать PHP, сразу меняем
DirectoryIndex index.html
на
DirectoryIndex index.php index.html index.htm

Меняем пару директив в настройке веб-сервера.

Первая — AllowOverride. Находим
AllowOverride none
и меняем на
AllowOverride All
Это директива, разрешающая использовать файлы .htaccess — они позволяют переопределять настройки для каждого подкаталога сайта отдельно от общей конфигурации виртуального хоста.

Второе — включаем модуль rewrite. Находим строку
#LoadModule rewrite_module modules/mod_rewrite.so
и убираем решётку в начале строки.
mod_rewrite отвечает за преобразование URL по правилам, описанным как регулярные выражения PCRE — либо прямо в httpd.conf, либо в .htaccess внутри структуры сайта.

 

Запуск веб-сервера как службы Windows

Сохраняем файл и из командной строки, запущенной от имени администратора, выполняем:

c:\Server\bin\Apache24\bin\httpd.exe -k install — установка службы
c:\Server\bin\Apache24\bin\httpd.exe -k start — запуск службы

Пригодятся и обратные команды на будущее:
httpd.exe -k stop — остановка
httpd.exe -k restart — перезапуск после правки конфига
httpd.exe -k uninstall — удаление службы

Проверить синтаксис конфига перед перезапуском полезно командой httpd.exe -t — она укажет строку с ошибкой, если та есть, вместо того чтобы просто не стартовать службу.

 

Проверка работы веб-сервера

Если в процессе установки и запуска не было ошибок, откройте браузер и введите localhost — должна открыться стартовая страница Apache.

  

В списке служб Windows (services.msc) должна появиться служба Apache2.4, и она должна быть в статусе "Выполняется".

 

Публикация информационной базы 1С на Apache

Голый веб-сервер сам по себе базу 1С не отдаёт — нужен модуль расширения веб-сервера из комплекта платформы 1С:Предприятие. Он идёт с установщиком технологической платформы (компонент "Модули расширения веб-сервера") и лежит в каталоге платформы, например:
C:\Program Files\1cv8\8.3.27.1508\bin\wsap24.dll

Модуль версионируется под ветку Apache: wsap22 — для Apache 2.2, wsap24 — для Apache 2.4. Версия модуля должна совпадать с веткой Apache и быть от того же дистрибутива платформы, что стоит на сервере 1С — иначе Apache откажется его загружать или публикация будет падать с ошибкой на старте.

В httpd.conf добавляем строку загрузки модуля:

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

Дальше — сама публикация. Два рабочих варианта:

Через конфигуратор 1С (самый простой путь для Windows): открываем базу в конфигураторе → "Администрирование" → "Публикация на веб-сервере" → указываем каталог публикации (тот самый Z:/www/имя_базы) и имя веб-сервера Apache → жмём "Опубликовать". Конфигуратор сам создаст файл default.vrd со строкой соединения и подключит его в httpd.conf через директиву Include.

Через утилиту webinst (пригодится для автоматизации и для Linux-серверов): утилита лежит в том же bin-каталоге платформы, что и wsap24.

webinst.exe -publish -apache24 -wsdir mybase -dir "Z:\www\mybase" -connstr "Srvr=server1c;Ref=mybase;" -confPath "C:\Server\Bin\Apache24\conf\httpd.conf"

На Linux синтаксис аналогичный, только модуль называется mod_wsap24.so, а путь — от установленного пакета платформы:

./webinst -publish -apache24 -wsdir mybase -dir /var/www/mybase -connstr "File="/home/user1c/bases/mybase";" -confpath /etc/apache2/apache2.conf

После публикации — перезапуск Apache (httpd.exe -k restart / systemctl restart apache2) и проверка по адресу http://localhost/mybase/.

 

Apache vs IIS vs Nginx для 1С: что выбрать

Вопрос всплывает у всех, кто впервые публикует базу — три веб-сервера часто путают между собой, хотя роли у них разные.

КритерийApacheIISNginx
Прямая публикация базы 1СДа, через модуль wsap22/wsap24Да, через модуль расширения для ISAPIНет — модуля расширения 1С для Nginx не существует
ПлатформыWindows, Linuxтолько Windows ServerWindows, Linux
Типичная роль в связке с 1Сосновной веб-сервер публикацииосновной веб-сервер публикации в чисто Windows-инфраструктуреreverse-proxy перед Apache/IIS — SSL-терминация, балансировка, отдача статики
Сложность настройкиниже, чем у IIS — публикация без лишних танцев с пулами приложенийвыше — нужен отдельный пул приложений с поддержкой 32-битных приложенийпростая, но требует Apache/IIS позади себя для самой 1С
Когда выбиратьсервер уже на Linux, либо в компании принят Apacheинфраструктура полностью на Windows Server, сервер 1С там женужен единый HTTPS-вход для нескольких публикаций или доп. защита на периметре

Итого: выбор между Apache и IIS — это выбор основной ОС сервера и того, кто будет админить веб-сервер дальше. Nginx в эту вилку не встаёт как замена — он решает другую задачу и почти всегда стоит перед Apache или IIS, а не вместо них. Если у вас Windows-инфраструктура и всё остальное уже крутится на IIS — почитайте урок по установке IIS на Windows Server 2019.

 

Следующий шаг: настройка SSL

После базовой публикации сервер отдаёт базу по http — для веб-клиента, мобильных подключений и любой интеграции через интернет это неприемлемо, трафик идёт открытым текстом. Следующий шаг — включить HTTPS на этом же Apache: сгенерировать сертификат, подключить модуль mod_ssl и переключить публикацию на защищённый порт. Подробный разбор с командами openssl и конфигурацией — в статье «Apache SSL: настройка Apache для 1С с HTTPS».

Если публикуемая база дальше используется как бэкенд для внешних интеграций — REST API, обмен сообщениями и т.п. — посмотрите также урок «1С Kafka: как связать базу 1С и REST-сервис через Kafka», там показано, как поверх такой же веб-публикации поднять асинхронный обмен.

 

Частые ошибки при установке и публикации

Apache не стартует после правки httpd.conf. В 99% случаев — опечатка в пути или незакрытая директива. Сначала гоняем httpd.exe -t (Windows) или apachectl configtest (Linux) — команда покажет номер строки с ошибкой, не нужно вычитывать весь файл руками.

"Cannot load ... wsap24.dll into server" при старте Apache. Не совпадает разрядность: Apache x64 не загрузит 32-битный wsap24.dll и наоборот. Проверьте разрядность вашей сборки Apache и разрядность установленной платформы 1С — они должны совпадать.

Модуль есть, но публикация всё равно не открывается — 404 или "The requested URL was not found". Обычно забыли добавить Include для файла default.vrd в httpd.conf, либо алиас (Alias) публикации не совпадает с тем, что запрашивается в браузере. Проверьте секцию, которую добавил конфигуратор или webinst, — она должна идти после LoadModule _1cws_module.

"Ошибка при выполнении файловой операции" или "Недостаточно прав" при обращении к базе. Учётной записи, от имени которой работает служба Apache, не хватает прав на каталог базы (файловый вариант) либо на порт менеджера кластера (клиент-серверный вариант). На Linux это чаще всего chown на каталог базы в пользу пользователя, от которого запущен веб-сервер.

После обновления платформы 1С публикация перестала работать. Версия wsap24.dll в httpd.conf всё ещё указывает на старую папку платформы (8.3.XX.XXXX сменился при обновлении). Модуль веб-сервера обновляется вручную — путь в LoadModule нужно поправить на новую версию и перезапустить Apache.

Служба Apache не появляется в списке служб после httpd.exe -k install. Команда запущена не от имени администратора, либо уже существует служба Apache2.4 с другим путём — сначала httpd.exe -k uninstall, потом install заново из нужного каталога.