Веб-публикация базы 1С через Apache 2.4 на Windows и Linux
Содержание
Чтобы установить Apache сервер для 1С, нужны три вещи: сам Apache 2.4 той же разрядности, что и платформа 1С, компонент платформы «Модули расширения веб-сервера» и публикация базы через Конфигуратор или утилиту webinst. После публикации в httpd.conf появляется строка LoadModule _1cws_module с путём к wsap24.dll (в Linux — wsap24.so), и база открывается в браузере по адресу вида http://сервер/base.
Через тот же Apache работают веб-клиент, тонкий клиент по HTTP, веб-сервисы (SOAP), HTTP-сервисы и стандартный интерфейс OData. Настройка одинакова для файловой и клиент-серверной базы, разница только в строке подключения и правах доступа к каталогу базы.
Что проверить до установки: версии, разрядность, порт
Большая часть проблем с веб-публикацией 1С появляется ещё до первой команды. Пройдитесь по списку заранее.
- 🧩 Версия Apache. Берите ветку 2.4. Для неё в платформе 8.3 есть модуль
wsap24. Модульwsap22для Apache 2.2 тоже поставляется, но сама ветка 2.2 давно не поддерживается разработчиками Apache. - 🔢 Разрядность. 64-битный Apache загружает только модуль из 64-битной платформы. 32-битный — только из 32-битной. Смешать нельзя: сервис просто не стартует.
- 📦 Компонент платформы. При установке 1С:Предприятия отметьте «Модули расширения веб-сервера». Если платформа уже стоит, запустите установщик той же версии повторно и выберите «Изменить».
- 🔌 Свободный порт 80 (или 443). Его часто занимают IIS, другой веб-сервер или служебные программы. Проверка в Windows:
netstat -ano | findstr :80. - 🔑 Лицензии. В файловом режиме лицензию ищет процесс веб-сервера, то есть она должна быть доступна на компьютере, где работает Apache. В клиент-серверном режиме лицензии выдаёт сервер 1С.
| Что выбираем | Windows | Linux |
|---|---|---|
| Где взять Apache | сборка Apache Lounge (архив zip) | пакет из репозитория дистрибутива |
| Модуль 1С | wsap24.dll в каталоге bin платформы | wsap24.so в каталоге платформы |
| Главный конфиг | C:\Apache24\conf\httpd.conf | /etc/apache2/apache2.conf (Debian/Ubuntu), /etc/httpd/conf/httpd.conf (RHEL-семейство) |
| От чьего имени работает | служба, по умолчанию «Локальная система» | пользователь www-data или apache |
Официальный сайт Apache готовых сборок под Windows не выкладывает. Обычно используют Apache Lounge: это сборка того же Apache, собранная под Visual C++.
Установка Apache на Windows и Linux
Windows
- Скачайте 64-битный архив Apache 2.4 с сайта Apache Lounge.
- Установите пакет Visual C++ Redistributable последней версии для x64. Без него при запуске появится ошибка об отсутствии
VCRUNTIME140.dll. - Распакуйте папку
Apache24в корень диска:C:\Apache24. Это путь по умолчанию в конфиге (переменнаяSRVROOT). Если ставите в другое место, поправьте строкуDefine SRVROOTвhttpd.conf. - Откройте командную строку от имени администратора и зарегистрируйте службу:
cd C:\Apache24\bin
httpd.exe -k install
httpd.exe -k start
- Откройте
http://localhostв браузере. Страница «It works!» означает, что веб-сервер работает. - Если к базе будут подключаться с других компьютеров, откройте порт в брандмауэре Windows:
netsh advfirewall firewall add rule name="Apache 1C" dir=in action=allow protocol=TCP localport=80
Перед проверкой синтаксиса конфига полезно запомнить команду httpd.exe -t. Она показывает ошибку в httpd.conf с номером строки, а сервис при этом не трогает.
Linux (Ubuntu, Debian)
sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2
sudo apache2ctl -t
В RHEL-подобных системах пакет называется httpd, служба — тоже httpd, а пользователь веб-сервера — apache.
Платформа 1С для Linux ставится из пакетов дистрибутива 1С. Модули веб-сервера входят в отдельный пакет или компонент установщика (в зависимости от версии платформы это пакет ws или пункт в графическом установщике). После установки проверьте, что файл есть на месте:
ls /opt/1cv8/x86_64/*/wsap24.so
Подключение модуля 1С и публикация базы
Публикацию можно сделать двумя способами. Результат одинаковый: каталог публикации с файлом default.vrd и блок настроек в конфиге Apache.
Способ 1. Через Конфигуратор (Windows)
- Запустите Конфигуратор от имени администратора. Иначе он не сможет записать
httpd.conf. - Откройте меню
Администрирование → Публикация на веб-сервере. - Выберите веб-сервер «Apache 2.4».
- Задайте имя публикации латиницей, например
buh. Это часть адреса:http://сервер/buh. - Укажите каталог публикации, например
C:\Apache24\htdocs\buh. - Отметьте, что публиковать: тонкий клиент и веб-клиент, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
Способ 2. Утилита webinst (Windows и Linux)
На сервере без графики и для повторяемых установок удобнее командная строка. Утилита лежит рядом с исполняемыми файлами платформы.
cd /opt/1cv8/x86_64/8.3.24.1467
sudo ./webinst -publish -apache24 -wsdir buh -dir /var/www/buh \
-connstr "Srvr=srv1c;Ref=buh;" -confpath /etc/apache2/apache2.conf
Для файловой базы строка подключения будет такой: -connstr "File=/srv/1c/buh;". В Windows утилита называется webinst.exe, путь к конфигу передают как -confpath C:\Apache24\conf\httpd.conf. Номер версии в пути замените на свой.
Что появится в конфиге
После публикации в конце httpd.conf будет примерно такой блок:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1467/bin/wsap24.dll"
# 1c publication
Alias "/buh" "C:/Apache24/htdocs/buh/"
<Directory "C:/Apache24/htdocs/buh/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/Apache24/htdocs/buh/default.vrd"
</Directory>
Строка LoadModule пишется в файл один раз. Каждая следующая публикация добавляет только свой блок Alias и <Directory>.
Путь в LoadModule жёстко привязан к версии платформы. Если обновили платформу и удалили старую, Apache перестанет запускаться. После обновления поправьте путь вручную или переопубликуйте базу из новой версии.
Адреса веб-сервисов, HTTP-сервисов и OData
Ради интеграции Apache чаще всего и ставят. Когда публикация готова, сервисы конфигурации доступны по фиксированным адресам.
| Что опубликовано | Адрес | Как проверить |
|---|---|---|
| Веб-клиент | http://сервер/buh | открыть в браузере |
| Веб-сервис SOAP | http://сервер/buh/ws/ИмяСервиса?wsdl | браузер должен вернуть XML с описанием |
| HTTP-сервис | http://сервер/buh/hs/КорневойURL/... | запрос через curl или Postman |
| OData | http://сервер/buh/odata/standard.odata/ | список доступных наборов |
В адресе веб-сервиса подставляется имя публикации из свойств объекта в конфигурации, а не имя самого объекта. У HTTP-сервиса — его корневой URL.
Для OData мало галочки при публикации. В самой базе нужно указать, какие объекты отдавать через интерфейс. В типовых конфигурациях для этого есть обработка настройки автоматического REST-сервиса, её ищут через Все функции или по названию в списке обработок.
Для обмена между программами заведите в 1С отдельного пользователя только с нужными правами. Не отдавайте внешней системе логин главного бухгалтера.
Виртуальные хосты, HTTPS и права доступа
Права на каталог файловой базы
Клиент-серверной базе права на файлы не нужны: Apache обращается к серверу 1С по сети.
С файловой базой иначе. Процесс веб-сервера сам открывает файл 1Cv8.1CD, поэтому ему нужны чтение и запись в каталог базы.
- 🐧 Linux: выдайте права пользователю веб-сервера:
sudo chown -R www-data:www-data /srv/1c/buh
- 🪟 Windows, база на локальном диске: служба под «Локальной системой» обычно доступ имеет.
- 🪟 Windows, база на сетевой папке: «Локальная система» к чужой шаре не пустит. Запустите службу Apache от доменной учётной записи с правами на папку:
services.msc→ служба Apache → вкладка «Вход в систему».
Публикация на отдельном домене
Если на сервере несколько сайтов, вынесите публикацию в виртуальный хост. Блок Alias и <Directory> переносится внутрь <VirtualHost>:
<VirtualHost *:80>
ServerName 1c.example.local
Alias "/buh" "/var/www/buh/"
<Directory "/var/www/buh/">
AllowOverride All
Options None
Require ip 192.168.10.0/24
SetHandler 1c-application
ManagedApplicationDescriptor "/var/www/buh/default.vrd"
</Directory>
</VirtualHost>
Строка Require ip ограничивает доступ локальной сетью. Для доступа отовсюду верните Require all granted.
HTTPS
Базу 1С, открытую в интернет, публикуйте только по HTTPS. Пароли пользователей иначе уходят открытым текстом.
- Включите модуль: в Ubuntu
sudo a2enmod ssl, в Windows раскомментируйтеLoadModule ssl_moduleи строкуInclude conf/extra/httpd-ssl.conf. - Пропишите в виртуальном хосте на порту 443
SSLEngine on,SSLCertificateFileиSSLCertificateKeyFile. - Сертификат в Linux удобно получать через certbot, в Windows — через любой ACME-клиент под Windows.
Сертификат должен быть выдан на то имя, по которому открывают базу. Самоподписанный сертификат тонкий клиент и внешние системы примут не всегда.
Типовые ошибки Apache и модуля 1С
Сначала всегда запускайте проверку конфига: httpd.exe -t в Windows или apache2ctl -t в Linux. Она называет файл и строку с ошибкой. Затем смотрите журнал logs\error.log (Windows) или /var/log/apache2/error.log (Ubuntu).
LoadModule: не та разрядность модуля, путь к удалённой версии платформы или две строки LoadModule _1cws_module с разными версиями. Оставьте одну строку с путём к установленной платформе нужной разрядности.Предупреждение AH00558: Could not reliably determine the server's fully qualified domain name не мешает работе. Оно пропадает, если указать в конфиге строку ServerName с именем сервера.
Перезапуск Apache обрывает работу всех, кто сейчас в базе через веб-клиент, и прерывает обмены. Правку конфига на рабочем сервере делайте вне рабочего времени или предупредите пользователей.
Обслуживание публикации после запуска
Сама установка занимает полчаса. Потом нужно не сломать то, что уже работает.
- 🔄 Обновление платформы. Новая версия ставится в соседний каталог. Пока старую не удалили, Apache продолжает работать со старым модулем. Порядок такой: обновить платформу на сервере 1С → поправить путь в
LoadModule→ перезапустить Apache → проверить базу в браузере → только потом удалять старую версию. - 🗑️ Снятие публикации. В Конфигураторе то же окно
Публикация на веб-сервереи кнопка «Отключить». Из командной строки —webinst -deleteс теми же-wsdirи-confpath. - 📝 Ручные правки. Конфигуратор при повторной публикации перезаписывает свой блок. Свои директивы (ограничения по IP, HTTPS) держите в виртуальном хосте или отдельном подключаемом файле, чтобы их не затёрло.
- 💾 Копия конфига. Перед любой правкой копируйте
httpd.confрядом с датой в имени. Откат займёт секунды.
Частые вопросы
Можно ли поставить Apache и сервер 1С на один компьютер?
Что лучше для 1С: Apache или IIS?
Нужна ли отдельная лицензия на веб-клиент?
Можно ли опубликовать несколько баз на одном Apache?
/buh, /zup, /ut. Все базы на одном Apache должны работать на одной версии платформы.Как открыть опубликованную базу в тонком клиенте?
https://1c.example.ru/buh.