Apache как веб-сервер для 1С:Предприятия 8.3 — от дистрибутива до рабочей публикации
Содержание
Чтобы открыть базу
1С через браузер или тонкий клиент по HTTP, нужны три вещи: Apache 2.4 той же разрядности, что и платформа, установленный компонент 1С «Модули расширения веб-сервера» и публикация базы из Конфигуратора. Сама установка Apache занимает 10–15 минут, а основное время обычно уходит на разрядность, права службы и путь к модулю wsap24.dll.
Типичная ситуация: бухгалтер уходит на удалёнку, RDP-сервера нет, и администратору нужно быстро открыть базу через веб-клиент. Ниже — порядок, при котором Apache для 1С запускается с первого раза, и разбор того, что делать, если служба не стартует.
Что подготовить до установки Apache для 1С
Сначала определитесь с версией и разрядностью. Это решает половину будущих проблем.
| Что | Рекомендация | Почему |
|---|---|---|
| Версия Apache | 2.4.x | Модули 1С есть для 2.2 и 2.4, но 2.2 давно не развивается |
| Разрядность Apache | Совпадает с разрядностью платформы 1С на этом сервере | 64-битный Apache не загрузит 32-битный wsap24.dll, и наоборот |
| Сборка для Windows | Apache 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
- Скачайте архив Apache 2.4 нужной разрядности с Apache Lounge и распакуйте его так, чтобы получился каталог
C:\Apache24. - Установите Visual C++ Redistributable той же разрядности, если его ещё нет.
- Запустите командную строку от имени администратора и перейдите в каталог
bin. - Проверьте конфигурацию, зарегистрируйте службу и запустите её:
cd /d C:\Apache24\bin
httpd -t
httpd -k install
httpd -k start
- Откройте в браузере на сервере
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:
- Корень сервера. Если Apache стоит не в
C:\Apache24, исправьте строкуDefine SRVROOT "C:/Apache24". Слэши — прямые. - Порт. Директива
Listen 80. Если 80-й занят и освободить его нельзя, укажите, например,Listen 8080. - Имя сервера. Раскомментируйте и заполните
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С от имени администратора: публикация пишет в
httpd.confи в каталог веб-сервера. - Откройте базу в режиме Конфигуратора.
- Выберите
Администрирование → Публикация на веб-сервере. - Заполните поля:
- Имя — латиницей без пробелов, например
buh. Это часть адреса. - Веб-сервер — Apache 2.4.
- Каталог — папка для
default.vrd, напримерC:\Apache24\htdocs\buh.
- Имя — латиницей без пробелов, например
- Отметьте нужное: тонкий клиент и веб-клиент, OData, веб-сервисы, HTTP-сервисы. Лишнее не включайте.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
Проверка: 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.
Безопасность
Публикация в интернет без защиты открывает базу всем, кто подберёт пароль. Минимальный набор:
- HTTPS. Включите
mod_ssl, добавьтеListen 443и сертификат. Пароли пользователей 1С по HTTP идут в открытом виде. - Ограничение по адресам. Если доступ нужен только из офиса и с VPN, замените
Require all grantedнаRequire ip 192.168.1.0/24. - Без лишних сервисов. Не публикуйте OData и веб-сервисы, если ими никто не пользуется.
- Пароли в 1С. У всех пользователей базы должен быть пароль, у администратора — сложный.
- Меньше информации наружу. Добавьте
ServerTokens ProdиServerSignature Off, чтобы Apache не сообщал свою версию.
Частые вопросы
Что выбрать для 1С: Apache или IIS?
Можно ли поставить Apache не на сервер 1С, а на отдельную машину?
Srvr=имя_сервера_1С;Ref=имя_базы;.Нужна ли отдельная лицензия на Apache?
Как опубликовать несколько баз на одном Apache?
/buh, /zup, /ut. В httpd.conf появится по блоку Alias и Directory на каждую базу при одной общей строке LoadModule.