Публикуем базу 1С через веб-сервер Apache: от установки до рабочего адреса
Содержание
Apache ставят для 1С с одной целью — открыть базу
по адресу в браузере: веб-клиент, тонкий клиент через интернет
, мобильный клиент, HTTP- и веб-сервисы, обмен по OData. Сам Apache базу не «запускает» — он отдаёт запросы модулю расширения платформы wsap24, а тот уже работает с файловой базой или сервером 1С.
Главное, из-за чего установка срывается у новичков, — разрядность. Модуль расширения веб-сервера входит в состав платформы 1С, лежит в её папке bin, и его разрядность обязана совпадать с разрядностью Apache. 64-битный Apache грузит wsap24.dll только из 64-битной платформы, 32-битный — только из 32-битной. Перепутали — Apache не стартует или валится при загрузке модуля. С этого и начнём.
Что подготовить до установки Apache
Соберите три вещи, иначе на полпути придётся возвращаться.
- 🧩 Разрядность. Apache и платформа 1С — одной разрядности. На современном сервере это 64 бита. Разрядность установленной платформы видно по папке: 64-битная лежит в
C:\Program Files\1cv8\, 32-битная — вC:\Program Files (x86)\1cv8\. - 📦 Версия Apache. Платформа работает с Apache 2.4 (модуль
wsap24). Для Apache 2.2 модуль другой —wsap22, но 2.2 давно не поддерживается, ставьте 2.4. - 🔌 Свободный порт 80. На Windows его часто уже занял IIS, служба «Веб-публикации WWW» или старый Skype. Проверьте заранее командой
netstat -ano | findstr :80.
На Windows у Apache нет официального установщика с сайта проекта — Apache Software Foundation публикует только исходники. Готовые сборки под Windows берут у сторонних сборщиков (Apache Lounge, Apache Haus). Это нормальная практика, но версию Visual C++ Redistributable ставят ту, под которую собран дистрибутив, — иначе httpd.exe не запустится.
Установка Apache на Windows Server
Готовый дистрибутив Apache 2.4 под Windows — это ZIP-архив, а не MSI. Порядок такой.
- Распакуйте архив в простой путь без пробелов и кириллицы, например
C:\Apache24. - Откройте
C:\Apache24\conf\httpd.confи проверьте строкуDefine SRVROOT "c:/Apache24"— путь должен совпадать с реальным. Прямые слэши, не обратные. - Откройте командную строку от имени администратора и перейдите в
C:\Apache24\bin. - Установите Apache как службу:
httpd.exe -k install. Служба появится под именемApache2.4. - Запустите её:
httpd.exe -k start, либо через оснасткуservices.msc.
Проверка: откройте в браузере http://localhost — должна появиться страница-заглушка (обычно «It works!»). Если открылась — веб-сервер жив, можно публиковать базу.
Если служба не стартует, смотрите не в браузер, а в журнал C:\Apache24\logs\error.log и в «Просмотр событий» Windows. Две самые частые причины — занятый порт 80 и отсутствие нужного Visual C++ Redistributable. Разбор ошибок — ниже отдельным разделом.
Apache на Windows работает в одном процессе с потоками (MPM winnt). Для десятков одновременных пользователей файловой базы этого мало — для нагрузки публикуйте серверную (клиент-серверную) базу, а не файловую.
Установка Apache на Linux: Debian/Ubuntu и CentOS
На Linux Apache ставится из репозитория пакетным менеджером — это проще, чем на Windows.
Debian и Ubuntu. Пакет называется apache2:
sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2
Конфигурация лежит в /etc/apache2/, главный файл — apache2.conf, модули подключаются через a2enmod, служба называется apache2, работает под пользователем www-data.
CentOS, RHEL, Rocky, AlmaLinux. Пакет называется httpd:
sudo dnf install httpd # на старых системах — yum install httpd
sudo systemctl enable --now httpd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
Здесь конфигурация в /etc/httpd/, главный файл — conf/httpd.conf, служба httpd, пользователь apache. Не забудьте открыть порт в firewalld — на CentOS он по умолчанию закрыт, и это частая причина «сервер не отвечает».
Проверка на обеих системах — curl http://localhost с самого сервера или адрес сервера в браузере. Модуль расширения wsap24.so для Linux лежит в папке платформы, обычно /opt/1cv8/x86_64/<номер версии>/. Разрядность та же: 64-битный Apache — 64-битный модуль.
Публикация базы 1С: Конфигуратор и утилита webinst
Установленный Apache — это ещё пустой веб-сервер. Чтобы база открылась по адресу, её нужно опубликовать. Публикация создаёт каталог с файлом default.vrd и дописывает в конфигурацию Apache подключение модуля и ссылку на этот каталог.
Способ 1. Через Конфигуратор (Windows, графический режим). Самый простой путь.
- Откройте базу в режиме Конфигуратор от имени администратора.
- Меню
Администрирование → Публикация на веб-сервере…. - В поле Имя задайте короткое латинское имя публикации (это часть адреса), например
base. - В поле Веб-сервер выберите Apache нужной версии.
- В поле Каталог укажите пустую папку, куда лягут файлы публикации.
- Отметьте, что публикуете: веб-клиент, HTTP-сервисы, Web-сервисы, стандартный интерфейс OData.
- Нажмите Опубликовать и согласитесь перезапустить веб-сервер .
После этого база откроется по адресу http://<адрес сервера>/base. Конфигуратор сам допишет в httpd.conf строку загрузки модуля _1cws_module с путём к wsap24.dll и блок с каталогом публикации — руками это править не нужно.
Способ 2. Утилита webinst (Linux и командная строка). Когда графического Конфигуратора нет, публикуют утилитой webinst из папки bin платформы:
sudo /opt/1cv8/x86_64/8.3.x.xxxx/webinst -publish -apache24 \
-wsdir base \
-dir /var/www/base \
-connstr 'Srvr="localhost";Ref="base";' \
-confPath /etc/apache2/apache2.conf
Разберём параметры, в которых стоит быть уверенным:
-apache24— публикуем под Apache 2.4.-wsdir— имя публикации (виртуальный каталог в адресе).-dir— физическая папка публикации на диске.-connstr— строка соединения: для серверной базыSrvr=...;Ref=...;, для файловойFile="/путь/к/базе";.-confPath— путь к файлу конфигурации Apache, который правит утилита.
Полный список ключей и их точное написание смотрите в выводе webinst -help — состав параметров зависит от версии платформы, поэтому придумывать их не стоит. После публикации перезапустите веб-сервер: sudo systemctl restart apache2.
Доступ к каталогу публикации: права и default.vrd
Два момента, на которых чаще всего спотыкаются после публикации.
Права на папки. Пользователь, под которым работает Apache (www-data на Debian, apache на CentOS, системная учётка службы на Windows), должен иметь доступ:
- к каталогу публикации с файлом
default.vrd; - к папке файловой базы (если база файловая) — на чтение и запись
.1CD; - к модулю
wsap24в папке платформы — на чтение.
Если прав нет — браузер отдаст 403 или ошибку доступа к базе. Для серверной базы доступ к файлам самой базы не нужен: Apache общается с сервером 1С по сети, а не с файлом.
Файл default.vrd. Это и есть описание публикации. В нём указано, какая база опубликована и что в ней доступно снаружи: веб-клиент, HTTP-сервисы, OData. Если какой-то интерфейс не нужен — не публикуйте его. Открытый наружу стандартный OData или лишние веб-сервисы — это поверхность для атаки и утечки данных. Публикуйте ровно то, чем будете пользоваться.
После любой правки httpd.conf или default.vrd веб-сервер нужно перезапустить, иначе изменения не подхватятся.
Типичные ошибки публикации и их причины
Большинство проблем сводится к разрядности, портам и правам. Определите симптом — и причина станет понятна.
Отдельно про монопольный доступ: публиковать можно и работающую базу, но саму платформу (модуль wsap24) при обновлении платформы придётся переустановить и опубликовать заново — путь к .dll в httpd.conf жёстко прописан с номером версии и после обновления станет недействительным.
Производительность: как Apache тянет нагрузку 1С
Сам Apache в связке с 1С почти ничего не вычисляет — он проксирует запросы к серверу 1С или файловой базе. Поэтому узкое место обычно не в нём, а в сервере 1С (rphost) и в оперативной памяти. Но настройки веб-сервера всё же влияют.
- ⚙️ Выбор MPM на Linux. Для многопользовательской публикации включайте event или worker MPM вместо prefork — они экономнее по памяти на одновременных соединениях. На Windows выбора нет: там единственный MPM winnt, нагрузку регулируют числом потоков
ThreadsPerChild. - 🔁 KeepAlive. Держите
KeepAlive Onс умереннымKeepAliveTimeout(2–5 секунд). Тонкий клиент делает много запросов подряд — переиспользование соединения заметно снижает задержки. - 🧠 Память. Основную память съедает не Apache, а сеансы на сервере 1С. Планируйте ОЗУ под число одновременных пользователей сервера, а не под веб-сервер.
- 🗂️ Файловая база под нагрузкой. Если пользователей больше нескольких — переводите базу в клиент-серверный режим. Публикация файловой базы для десятков человек упирается в блокировки и работает нестабильно независимо от Apache.
«Если не помогло» — когда производительность упёрлась в потолок, проблема почти наверняка в сервере 1С, а не в веб-сервере: смотрите загрузку rphost, память, тайм-ауты соединения с сервером, а Apache оставьте в покое.
Безопасность: закрываем опубликованную базу
Опубликованная база доступна из сети, а значит, её надо защитить. Минимальный набор.
- 🔒 HTTPS. Публикуйте только по шифрованному соединению. На Linux включите
mod_sslи получите бесплатный сертификат Let’s Encrypt черезcertbot— он сам пропишет виртуальный хост и настроит продление. На Windows сертификат подключают черезmod_sslв сборке Apache. - 🌐 Ограничение по адресам. Если базой пользуются из известной сети, ограничьте доступ директивой
Require ipдля каталога публикации — снаружи базу вообще не будет видно. - 🚪 Отдельная авторизация. Поверх входа в 1С можно поставить базовую аутентификацию Apache (
.htpasswd) — это отсекает автоматические сканеры ещё до обращения к базе. - 🙈 Скрыть лишнее. Поставьте
ServerTokens ProdиServerSignature Off, чтобы Apache не сообщал свою версию. Отключите вdefault.vrdинтерфейсы, которыми не пользуетесь. - 🧱 Минимум публикаций. Публикуйте только нужные сервисы. Открытый наружу стандартный OData без ограничений отдаёт данные справочников и документов любому, кто знает адрес.
Прежде чем открывать базу наружу, убедитесь, что в 1С заданы пароли всем пользователям и отключён запуск без аутентификации. Веб-публикация без паролей в базе — открытая дверь.
Частые вопросы
Нужен ли вообще Apache, или можно обойтись IIS?
wsisapi. Apache выбирают за простоту установки и кроссплатформенность: на Linux это стандарт. На Windows Server, где уже развёрнут IIS, иногда проще опубликовать под него.Почему модуль не из Apache, а из папки 1С?
wsap24) — часть платформы 1С, а не Apache. Он поставляется вместе с платформой и обновляется вместе с ней. Apache только загружает его, поэтому после обновления платформы публикацию выполняют заново.Можно ли опубликовать несколько баз на одном Apache?
default.vrd. Адреса будут вида http://сервер/base1, http://сервер/base2. Один Apache спокойно держит несколько публикаций.Файловую базу публиковать можно?
Что сломается при обновлении платформы 1С?
wsap24 в httpd.conf содержит номер версии платформы. После обновления он указывает на старую, уже удалённую папку, и Apache не запустит модуль. Решение — опубликовать базу заново из новой версии платформы.