Apache как веб-сервер для 1С:Предприятия 8.3 — от дистрибутива до рабочей публикации

· 9 мин

Содержание

Чтобы открыть базу 1С через браузер или тонкий клиент по HTTP, нужны три вещи: Apache 2.4 той же разрядности, что и платформа, установленный компонент 1С «Модули расширения веб-сервера» и публикация базы из Конфигуратора. Сама установка Apache занимает 10–15 минут, а основное время обычно уходит на разрядность, права службы и путь к модулю wsap24.dll.

Типичная ситуация: бухгалтер уходит на удалёнку, RDP-сервера нет, и администратору нужно быстро открыть базу через веб-клиент. Ниже — порядок, при котором Apache для 1С запускается с первого раза, и разбор того, что делать, если служба не стартует.

Что подготовить до установки Apache для 1С

Сначала определитесь с версией и разрядностью. Это решает половину будущих проблем.

ЧтоРекомендацияПочему
Версия Apache2.4.xМодули 1С есть для 2.2 и 2.4, но 2.2 давно не развивается
Разрядность ApacheСовпадает с разрядностью платформы 1С на этом сервере64-битный Apache не загрузит 32-битный wsap24.dll, и наоборот
Сборка для WindowsApache Lounge (apachelounge.com)Сам проект Apache готовых сборок под Windows не выпускает
Среда выполненияMicrosoft Visual C++ Redistributable нужной разрядностиБез неё httpd.exe не запустится
Каталог установкиC:\Apache24Путь без пробелов и кириллицы, его ждёт стандартный httpd.conf

Что ещё проверить заранее:

  • 🔌 Порт 80 свободен. Его часто занимает IIS (служба веб-публикаций), Skype на старых системах или ранее установленный Apache. Проверка: netstat -ano | findstr :80.
  • 🧩 Компонент 1С. В установщике платформы отметьте «Модули расширения веб-сервера». Без него в каталоге bin не будет wsap24.dll, а публикация из Конфигуратора завершится ошибкой.
  • 🗄️ Тип базы. Для файловой базы веб-сервер работает с файлами напрямую, ему нужны права на каталог. Для клиент-серверной Apache подключается к кластеру 1С, права на файлы не нужны.
  • 🔑 Лицензии. Веб-клиент и тонкий клиент через HTTP тоже потребляют клиентские лицензии. Для файловой базы лицензия нужна на компьютере с веб-сервером, для клиент-серверной её выдаёт сервер 1С.

На одном экземпляре Apache может работать только одна версия модуля 1С. Если нужно публиковать базы под разными версиями платформы, поднимайте второй экземпляр Apache на другом порту.

Установка Apache 2.4 как службы Windows и на Linux

Windows

  1. Скачайте архив Apache 2.4 нужной разрядности с Apache Lounge и распакуйте его так, чтобы получился каталог C:\Apache24.
  2. Установите Visual C++ Redistributable той же разрядности, если его ещё нет.
  3. Запустите командную строку от имени администратора и перейдите в каталог bin.
  4. Проверьте конфигурацию, зарегистрируйте службу и запустите её:
cd /d C:\Apache24\bin
httpd -t
httpd -k install
httpd -k start
  1. Откройте в браузере на сервере http://localhost. Если видите страницу «It works!», Apache работает.

Служба по умолчанию называется Apache2.4 и стартует от учётной записи «Локальная система». Тип запуска — «Автоматически», это видно в оснастке services.msc.

Чтобы базу открывали с других компьютеров, откройте порт в брандмауэре:

netsh advfirewall firewall add rule name="Apache 80" dir=in action=allow protocol=TCP localport=80

Linux (Ubuntu, Debian)

На Linux Apache ставится из репозитория, разрядность там уже 64 бита, как и у платформы:

sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2
sudo apachectl configtest

Модули 1С лежат в каталоге платформы, например /opt/1cv8/x86_64/8.3.24.1342/wsap24.so. Номер версии подставьте свой.

Настройка httpd.conf под 1С

Основной файл конфигурации на Windows — C:\Apache24\conf\httpd.conf, на Ubuntu — /etc/apache2/apache2.conf плюс подключаемые файлы из conf-enabled. Перед правкой сохраните копию файла.

Что поправить вручную в httpd.conf на Windows:

  1. Корень сервера. Если Apache стоит не в C:\Apache24, исправьте строку Define SRVROOT "C:/Apache24". Слэши — прямые.
  2. Порт. Директива Listen 80. Если 80-й занят и освободить его нельзя, укажите, например, Listen 8080.
  3. Имя сервера. Раскомментируйте и заполните ServerName srv-web:80. Без этого Apache пишет предупреждение AH00558: Could not reliably determine the server's fully qualified domain name.

Строки для 1С вручную писать не обязательно, их добавит публикация. Но полезно знать, как они выглядят, чтобы чинить конфиг после обновлений:

# 1c publication
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1342/bin/wsap24.dll"
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 для 1С в файле должен быть один, даже если опубликовано десять баз.
  • В пути к модулю стоит номер версии платформы. После обновления платформы и удаления старой версии Apache перестанет запускаться, пока путь не исправлен.
  • Alias задаёт адрес базы: /buh превратится в http://srv-web/buh.
  • Файл default.vrd описывает, к какой базе подключаться и какие сервисы открыты.

После каждой правки проверяйте синтаксис командой httpd -t и только потом перезапускайте службу: httpd -k restart.

Публикация базы 1С на Apache

Через Конфигуратор

  1. Запустите 1С от имени администратора: публикация пишет в httpd.conf и в каталог веб-сервера.
  2. Откройте базу в режиме Конфигуратора.
  3. Выберите Администрирование → Публикация на веб-сервере.
  4. Заполните поля:
    • Имя — латиницей без пробелов, например buh. Это часть адреса.
    • Веб-сервер — Apache 2.4.
    • Каталог — папка для default.vrd, например C:\Apache24\htdocs\buh.
  5. Отметьте нужное: тонкий клиент и веб-клиент, OData, веб-сервисы, HTTP-сервисы. Лишнее не включайте.
  6. Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.

Проверка: http://srv-web/buh в браузере открывает веб-клиент. Для тонкого клиента в списке баз добавьте базу с типом «На веб-сервере» и тем же адресом.

Из командной строки: webinst

Утилита webinst лежит рядом с платформой и удобна, когда баз много или Конфигуратор на сервере не запустить. Пример для клиент-серверной базы:

"C:\Program Files\1cv8\8.3.24.1342\bin\webinst.exe" -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"

Для файловой базы строка подключения выглядит так: File="D:\Bases\buh";. Удалить публикацию — тот же вызов с ключом -delete вместо -publish.

На Linux команда аналогичная:

sudo /opt/1cv8/x86_64/8.3.24.1342/webinst -publish -apache24 -wsdir buh -dir /var/www/buh -connstr "Srvr=localhost;Ref=buh;" -confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2

Права службы Apache на базу и каталоги

Если Apache стартует, а база в браузере не открывается, первым делом проверьте права. Служба работает не от вашего пользователя, а от системной учётной записи.

СитуацияЧто нужно
Файловая база на диске сервераУчётной записи службы (по умолчанию «Локальная система») — изменение на каталог базы
Файловая база в сетевой папкеЗапускать службу от доменной учётной записи с правами на папку; «Локальная система» в сеть ходит от имени компьютера
Клиент-серверная базаПрава на файлы базы не нужны, нужен сетевой доступ к серверу 1С (порт агента 1540 и диапазон рабочих процессов)
LinuxПользователю www-data — чтение каталога публикации и, для файловой базы, запись в каталог базы

Учётную запись службы на Windows меняют в services.msc → свойства службы Apache2.4 → вкладка «Вход в систему».

Не давайте «Полный доступ» группе «Все» на каталог базы ради быстрого результата. Выдавайте права одной учётной записи службы.

Почему Apache не запускается: логи и диагностика

Где искать причину:

  • 📄 C:\Apache24\logs\error.log — основной журнал ошибок; на Ubuntu — /var/log/apache2/error.log.
  • 🧪 httpd -t — показывает строку httpd.conf, на которой споткнулся разбор.
  • 🪟 Журнал Windows «Приложение» — туда пишет служба, если она не поднялась.
  • 🖥️ Запуск httpd.exe прямо из консоли без -k start — ошибка выводится сразу на экран, а не теряется в службе.
Диагностика: выберите симптом

Если ошибка возникает только у одной базы, а остальные публикации работают, смотрите её default.vrd и строку подключения в нём. Проблема в описании публикации, а не в Apache.

Производительность и защита веб-сервера 1С

Нагрузка

Каждый одновременный запрос веб-клиента занимает поток Apache. На Windows число потоков задаёт директива ThreadsPerChild в блоке mpm_winnt_module. Её удобно вынести в conf/extra/httpd-mpm.conf и подключить строкой Include conf/extra/httpd-mpm.conf.

Ориентиры для небольшой компании:

  • 👥 до 20 пользователей — значения по умолчанию хватает;
  • 👥 50–100 пользователей — поднимите ThreadsPerChild до 250–500 и следите за памятью процесса httpd.exe;
  • 🧠 сам Apache почти не нагружает сервер, основная работа идёт в процессах 1С. Если всё тормозит, сначала смотрите сервер 1С и диск с базой.

Для медленных каналов включите сжатие ответов модулем mod_deflate. Он идёт в стандартной сборке, нужно раскомментировать LoadModule deflate_module.

Безопасность

Публикация в интернет без защиты открывает базу всем, кто подберёт пароль. Минимальный набор:

  1. HTTPS. Включите mod_ssl, добавьте Listen 443 и сертификат. Пароли пользователей 1С по HTTP идут в открытом виде.
  2. Ограничение по адресам. Если доступ нужен только из офиса и с VPN, замените Require all granted на Require ip 192.168.1.0/24.
  3. Без лишних сервисов. Не публикуйте OData и веб-сервисы, если ими никто не пользуется.
  4. Пароли в 1С. У всех пользователей базы должен быть пароль, у администратора — сложный.
  5. Меньше информации наружу. Добавьте ServerTokens Prod и ServerSignature Off, чтобы Apache не сообщал свою версию.
Перед открытием публикации в интернет
Выполнено: 0 / 5

Частые вопросы

Что выбрать для 1С: Apache или IIS?
Обе связки рабочие. Apache бесплатен, работает и на Windows, и на Linux, проще переносится между серверами. IIS удобнее, если в компании уже всё на Windows-инфраструктуре и есть администратор IIS.
Можно ли поставить Apache не на сервер 1С, а на отдельную машину?
Да. На эту машину ставят Apache и модули расширения веб-сервера той же версии, что и кластер 1С. Публикуют базу со строкой подключения Srvr=имя_сервера_1С;Ref=имя_базы;.
Нужна ли отдельная лицензия на Apache?
Нет, Apache распространяется бесплатно под лицензией Apache License 2.0. Лицензии 1С при этом нужны как обычно — по числу одновременных пользователей.
Как опубликовать несколько баз на одном Apache?
Публикуйте каждую под своим именем: /buh, /zup, /ut. В httpd.conf появится по блоку Alias и Directory на каждую базу при одной общей строке LoadModule.
Почему при публикации из Конфигуратора нет пункта Apache 2.4?
Не установлен компонент «Модули расширения веб-сервера» или запущена платформа другой разрядности. Доустановите компонент через установщик платформы и запустите 1С от администратора.