Публикуем базу 1С через веб-сервер Apache: от установки до рабочего адреса

· 9 мин

Содержание

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 не запустится.

Перед установкой проверьте
Выполнено: 0 / 6

Установка Apache на Windows Server

Готовый дистрибутив Apache 2.4 под Windows — это ZIP-архив, а не MSI. Порядок такой.

  1. Распакуйте архив в простой путь без пробелов и кириллицы, например C:\Apache24.
  2. Откройте C:\Apache24\conf\httpd.conf и проверьте строку Define SRVROOT "c:/Apache24" — путь должен совпадать с реальным. Прямые слэши, не обратные.
  3. Откройте командную строку от имени администратора и перейдите в C:\Apache24\bin.
  4. Установите Apache как службу: httpd.exe -k install. Служба появится под именем Apache2.4.
  5. Запустите её: 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, графический режим). Самый простой путь.

  1. Откройте базу в режиме Конфигуратор от имени администратора.
  2. Меню Администрирование → Публикация на веб-сервере….
  3. В поле Имя задайте короткое латинское имя публикации (это часть адреса), например base.
  4. В поле Веб-сервер выберите Apache нужной версии.
  5. В поле Каталог укажите пустую папку, куда лягут файлы публикации.
  6. Отметьте, что публикуете: веб-клиент, HTTP-сервисы, Web-сервисы, стандартный интерфейс OData.
  7. Нажмите Опубликовать и согласитесь перезапустить веб-сервер .

После этого база откроется по адресу 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?
Можно и IIS — платформа поддерживает оба веб-сервера, модуль для 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 не запустит модуль. Решение — опубликовать базу заново из новой версии платформы.