Как выложить информационную базу 1С в веб через Apache 2.4 на Windows и Linux
Содержание
Чтобы опубликовать базу 1С на веб-сервере Apache, нужны три вещи: Apache 2.4 той же разрядности, что и платформа, установленный компонент «Модули расширения веб-сервера» и сама публикация — через Конфигуратор (Администрирование → Публикация на веб-сервере) или утилиту webinst. После этого база открывается в браузере по адресу вида http://сервер/buh/, а тонкий клиент подключается к ней «через веб-сервер».
Частое заблуждение — что достаточно поставить Apache и нажать «Опубликовать». На деле публикация ломается на мелочах: 32-битный Apache при 64-битной платформе, у пользователя веб-сервера нет прав на каталог базы, после обновления платформы в конфиге остался путь к старому модулю. Ниже — порядок, при котором эти ловушки не срабатывают.
Что подготовить до публикации базы 1С
Сначала решите, какую базу публикуете. От этого зависят права и лицензии.
| Вариант базы | Строка подключения | Что важно |
|---|---|---|
| Файловая | File="D:\Bases\buh"; | Пользователь, от имени которого работает Apache, должен иметь полный доступ к каталогу базы |
| Клиент-серверная | Srvr="srv1c";Ref="buh"; | Веб-сервер должен видеть сервер 1С по сети (порты кластера, по умолчанию 1540–1541 и диапазон 1560–1591) |
Список того, что понадобится:
- 🖥️ Apache 2.4. Для Windows — сборка Apache Lounge, для Linux — пакет
apache2(Debian/Ubuntu) илиhttpd(RHEL-семейство). - 🧩 Платформа 1С:Предприятие 8.3 с компонентом модулей веб-сервера. Версия платформы на веб-сервере должна совпадать с версией сервера 1С до последней цифры.
- 🔑 Лицензии. Каждый сеанс через браузер или тонкий клиент по HTTP занимает клиентскую лицензию, как и обычный запуск.
- 🔒 Сертификат, если база будет доступна из интернета. Без HTTPS пароли пользователей 1С уходят по сети открытым текстом.
Разрядность решает всё. 64-битная платформа работает только с 64-битным Apache. Модуль 32-битной платформы не загрузится в 64-битный веб-сервер, и наоборот.
Установка модуля расширения веб-сервера 1С
Модуль — это библиотека, которую Apache подгружает при старте. Для Apache 2.4 она называется wsap24.dll в Windows и wsap24.so в Linux. Для старого Apache 2.2 был wsap22, но эту ветку давно пора не использовать.
Windows
- Скачайте Apache 2.4 нужной разрядности, распакуйте в
C:\Apache24. - Установите распространяемый пакет Visual C++, который требует сборка Apache Lounge (версия указана на странице загрузки).
- Зарегистрируйте службу из командной строки администратора:
cd C:\Apache24\bin
httpd.exe -k install
httpd.exe -k start
- Откройте
http://localhost/— должна появиться страница «It works!». - Запустите установщик платформы 1С и в списке компонентов включите «Модули расширения веб-сервера». Если платформа уже стоит — запустите установщик повторно и выберите «Изменить».
Linux
Начиная с версии 8.3.20 платформа ставится единым установщиком. Компонент веб-сервера называется ws:
sudo apt install apache2
sudo ./setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws
Если веб-сервер стоит на отдельной машине, где сервер 1С не нужен, достаточно --enable-components ws. Модуль окажется в каталоге платформы, обычно /opt/1cv8/x86_64/<версия>/wsap24.so.
Проверьте, что Apache стартует чисто ещё до публикации: sudo apachectl configtest должен вернуть Syntax OK. Иначе потом не поймёте, чья это ошибка — 1С или веб-сервера.
Публикуем базу на веб-сервере Apache: Конфигуратор и webinst
Способ выбирайте по ситуации.
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Конфигуратор | Windows, разовая публикация, есть рабочий стол на сервере | Нужен запуск Конфигуратора от имени администратора |
webinst | Linux, скрипты, массовая публикация, обновление путей после смены версии | Всё задаётся ключами командной строки |
| Ручная правка конфига | Тонкая настройка, нестандартные пути | Легко ошибиться в кавычках и путях |
Через Конфигуратор
- Запустите 1С от имени администратора Windows (правой кнопкой → «Запуск от имени администратора»). Без этого Конфигуратор не сможет записать файл
httpd.conf. - Откройте базу в Конфигураторе.
- Выберите
Администрирование → Публикация на веб-сервере. - Укажите имя публикации латиницей, например
buh. Оно станет частью адреса. - Веб-сервер —
Apache 2.4. Каталог — напримерC:\Apache24\htdocs\buh. - Отметьте, что публиковать: тонкий и веб-клиент, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData — по задаче.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
Через webinst
Утилита лежит в каталоге bin платформы. Пример для Linux и клиент-серверной базы:
cd /opt/1cv8/x86_64/8.3.xx.xxxx
sudo ./webinst -publish -apache24 -wsdir buh -dir /var/www/buh \
-connstr "Srvr=srv1c;Ref=buh;" -confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2
Пример для Windows и файловой базы:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\webinst.exe" -publish -apache24 -wsdir buh ^
-dir "C:\Apache24\htdocs\buh" -connstr "File=""D:\Bases\buh"";" ^
-confpath "C:\Apache24\conf\httpd.conf"
Кавычки вокруг пути в строке файловой базы удвоены — так их экранирует командная строка Windows.
Что публикация добавляет в конфигурацию Apache
После публикации в конце httpd.conf (или apache2.conf) появляется блок такого вида:
LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.xx.xxxx/wsap24.so"
# 1c publication
Alias "/buh" "/var/www/buh/"
<Directory "/var/www/buh/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "/var/www/buh/default.vrd"
</Directory>
Разберём строки:
LoadModule— путь к модулю конкретной версии платформы. Строка должна быть одна на весь конфиг, даже если публикаций десять.Alias— связывает адрес/buhс каталогом на диске.SetHandler 1c-application— передаёт все запросы в этом каталоге модулю 1С.ManagedApplicationDescriptor— путь к файлуdefault.vrd, где описана сама публикация.
Файл default.vrd — это XML. Главное в нём — атрибут ib со строкой подключения и блоки, включающие сервисы:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/buh"
ib="Srvr="srv1c";Ref="buh";">
<ws pointEnableCommon="true"/>
<httpServices publishByDefault="true"/>
<standardOdata enable="true"/>
</point>
После публикации адреса будут такими:
- 🌐 веб-клиент —
http://сервер/buh/; - 🔌 HTTP-сервисы —
http://сервер/buh/hs/<корневой URL сервиса>/...; - 📄 веб-сервисы —
http://сервер/buh/ws/<имя>?wsdl; - 📊 OData —
http://сервер/buh/odata/standard.odata/.
Для отдельной интеграции удобно сделать вторую публикацию той же базы, например /buh-api, и включить в ней только HTTP-сервисы. Так проще ограничить к ней доступ и не открывать наружу веб-клиент.
Права доступа и аутентификация пользователей
Здесь две независимые части: права операционной системы для процесса Apache и вход пользователей в 1С.
Права процесса Apache
В Linux Apache работает от пользователя www-data (Debian/Ubuntu) или apache (RHEL). Для файловой базы ему нужны чтение и запись в каталог:
sudo chown -R www-data:www-data /srv/1c/buh
sudo chmod -R u+rwX /srv/1c/buh
В Windows служба Apache по умолчанию запущена от Локальная система. Она имеет доступ к локальным дискам, но не к сетевым папкам. Если файловая база лежит на другом компьютере, назначьте службе доменную учётную запись с правами на эту папку: services.msc → Apache2.4 → Свойства → Вход в систему.
Для клиент-серверной базы права на файлы не нужны — достаточно сетевой доступности сервера 1С.
Вход пользователей
- 👤 Пароли 1С. Самый простой и надёжный вариант. У каждого пользователя в списке пользователей базы должен быть задан пароль. Публиковать в интернет базу, где у пользователей нет паролей, нельзя: войти сможет любой, кто знает адрес.
- 🪪 Логин в строке подключения. В
ibможно дописатьUsr=иPwd=, тогда вход будет без запроса. Годится только для закрытого сервиса интеграции, и то с ограничением по IP. - 🏢 Вход через Windows. Для веб-клиента требует настройки Kerberos на стороне Apache — это отдельная задача, во внутренних сетях её решают через IIS чаще, чем через Apache.
Ограничение по сети и HTTPS
Доступ можно сузить средствами самого Apache, заменив Require all granted в блоке публикации:
<RequireAny>
Require ip 192.168.10.0/24
Require ip 203.0.113.25
</RequireAny>
Для HTTPS в Linux включите mod_ssl и получите сертификат, например через certbot:
sudo a2enmod ssl
sudo certbot --apache -d 1c.example.ru
После этого направьте пользователей на https://1c.example.ru/buh/ и закройте порт 80 или настройте с него перенаправление на 443.
Производительность публикации: что реально ускоряет
Основную работу выполняет сервер 1С или файловая база, а не Apache. Поэтому чудес от тюнинга веб-сервера ждать не стоит. Но несколько настроек заметно влияют на отклик.
- ⚡ Число потоков. В Windows Apache работает в режиме
mpm_winnt, и одновременные соединения ограничены параметромThreadsPerChild. При 40–50 активных пользователях веб-клиента значения по умолчанию может не хватить — увеличьте его и перезапустите службу. - 🗜️ Сжатие. Включите
mod_deflateдля текстовых ответов. Это сокращает трафик веб-клиента, особенно на медленных каналах. - 🔁 KeepAlive. Оставьте включённым: веб-клиент шлёт много коротких запросов, и повторное открытие соединения на каждом из них заметно добавляет задержку.
- 📂 Файловая база через веб. Это допустимо для 3–5 пользователей. Дальше блокировки файла базы начинают тормозить всех, и правильнее перейти на клиент-серверный вариант.
- 🌍 Расстояние до сервера 1С. Если Apache и сервер 1С в разных сетях, каждый вызов сервера идёт через этот канал. Ставьте веб-сервер рядом с сервером 1С, а не рядом с пользователями.
Не включайте на Apache кеширование ответов (mod_cache) для каталога публикации. Ответы 1С зависят от сеанса пользователя, и общий кеш способен отдать одному человеку данные другого.
Обновление платформы и несколько публикаций
Отдельная ловушка, которой нет в большинстве инструкций. После обновления платформы на веб-сервере строка LoadModule по-прежнему указывает на каталог старой версии. Если старую версию удалили — Apache перестаёт запускаться. Если не удалили — веб-клиент работает старой платформой и не может подключиться к
обновлённому серверу 1С из-за несовпадения версий.
Что делать после каждого обновления:
- Поправьте путь в
LoadModuleна новую версию или повторно запуститеwebinst -publishиз каталога новой платформы. - Проверьте, что строка
LoadModule _1cws_moduleв конфиге осталась одна. - Выполните
apachectl configtestи перезапустите Apache.
Несколько баз публикуются просто: каждая получает свой блок Alias и <Directory> со своим default.vrd, а модуль подгружается один раз. Удалить публикацию можно тем же webinst с ключом -delete либо в Конфигураторе, кнопкой «Отключить» в окне публикации.
Ошибки при публикации на Apache и где искать причину
Смотрите сразу в три места:
- 📜 Журнал Apache:
/var/log/apache2/error.logв Linux илиC:\Apache24\logs\error.logв Windows. Здесь видны проблемы загрузки модуля и прав. - 🗂️ Журнал регистрации базы: в Конфигураторе
Администрирование → Журнал регистрации. Здесь — неудачные попытки входа и ошибки сеансов. - 🔬 Технологический журнал 1С: включается файлом
logcfg.xmlв каталогеconfплатформы. Нужен, когда первые два журнала молчат.
Если ошибка не воспроизводится в браузере, проверьте публикацию запросом с самого сервера: curl -I http://localhost/buh/. Ответ с кодом 200 или с перенаправлением на страницу входа означает, что Apache и модуль работают, и искать нужно на стороне сети или пользователя.
Частые вопросы
Нужна ли отдельная лицензия для работы через Apache?
Можно ли опубликовать базу на Apache без прав администратора?
Чем Apache лучше IIS для публикации 1С?
Как подключить тонкий клиент к опубликованной базе?
https://1c.example.ru/buh/.