Веб-доступ к базе 1С через Apache 2.4: от установки до HTTPS

· 10 мин

Содержание

Чтобы опубликовать 1С на Apache, нужны три вещи: Apache 2.4 той же разрядности, что и платформа, установленный компонент «Модули расширения веб-сервера» и команда публикации — из Конфигуратора (Администрирование → Публикация на веб-сервере) или утилитой webinst. После этого база открывается в браузере по адресу вида http://сервер/buh.

Сама публикация занимает пять минут. Время уходит на другое: Apache не стартует из-за разрядности модуля, после обновления платформы веб-клиент ругается на версию, а база смотрит в интернет без HTTPS. Порядок действий для Windows и Linux одинаков, различаются только пути и команды.

1. Подготовка сервера к публикации 1С на Apache

Схема простая: браузер или тонкий клиент обращается к Apache, Apache через модуль 1С передаёт запрос в информационную базу. Для клиент-серверной базы модуль подключается к серверу 1С, для файловой — открывает файлы базы прямо из процесса Apache.

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

  • 🖥️ ОС. Windows Server 2016 и новее либо Linux (Ubuntu, Debian, RHEL-совместимые). Apache — только ветка 2.4.
  • 🔢 Разрядность. 64-битная платформа 1С работает только с 64-битным Apache. Смешивать нельзя.
  • 📦 Компонент платформы. При установке 1С отметьте «Модули расширения веб-сервера». Если платформа уже стоит, запустите установщик ещё раз и выберите «Изменить».
  • 🔐 Права. Конфигуратор для публикации запускают от имени администратора: он записывает изменения в httpd.conf.
  • 🌐 Порты. 80 и 443 должны быть свободны. В Windows их часто занимает IIS — остановите его или уберите привязку.

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

Официальных сборок под Windows проект Apache не выпускает. Обычно берут сборку Apache Lounge (Win64). Для неё нужен пакет Visual C++ Redistributable той версии, что указана на странице загрузки.

  1. Распакуйте архив в C:\Apache24.
  2. В conf\httpd.conf проверьте Define SRVROOT "C:/Apache24" и строку ServerName localhost:80.
  3. Зарегистрируйте службу из командной строки администратора:
cd C:\Apache24\bin
httpd.exe -k install
httpd.exe -k start

Откройте http://localhost — должна появиться страница «It works!».

Установка Apache в Linux

В Ubuntu и Debian:

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

Платформу 1С на сервере ставьте с компонентом веб-модулей. Модуль окажется в каталоге вида /opt/1cv8/x86_64/8.3.xx.xxxx/wsap24.so.

2. Модуль 1С для Apache: нужен ли mod_fcgid

Не нужен. 1С не работает через FastCGI. Платформа ставит собственный модуль Apache:

ОСФайл модуляГде лежит
Windowswsap24.dllC:\Program Files\1cv8\8.3.xx.xxxx\bin\
Linuxwsap24.so/opt/1cv8/x86_64/8.3.xx.xxxx/

Модуль подключается одной строкой LoadModule _1cws_module. Обработчик для каталога публикации — SetHandler 1c-application. Ни mod_fcgid, ни mod_proxy для самой публикации не нужны.

mod_fcgid пригодится, только если на том же Apache крутится PHP-сайт. Тогда он соседствует с модулем 1С и не мешает ему. А вот mod_proxy полезен в другой схеме: внешний Apache или nginx принимает HTTPS и проксирует запросы на внутренний Apache с публикацией.

Номер версии платформы входит в путь к модулю. Это главная причина поломок после обновления — подробнее в разделе 8.

3. Публикация базы 1С на веб-сервере

Есть два способа. Результат одинаковый: в конфигурации Apache появляется блок публикации, а в каталоге публикации — файл default.vrd.

Способ 1. Через Конфигуратор (Windows)

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

Перезапуск Apache обрывает все веб-сеансы. В рабочее время предупредите пользователей.

Способ 2. Утилитой webinst (Windows и Linux)

На сервере без графики Конфигуратор не нужен. webinst лежит рядом с платформой:

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

Для файловой базы строка подключения выглядит так: File="/srv/1c/buh";. Снять публикацию — тот же вызов с ключом -delete.

Что появится в конфигурации

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.xx.xxxx/bin/wsap24.dll"

# 1c publication
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>

Файл default.vrd описывает точку публикации: атрибут base — адрес (/buh), атрибут ib — строка подключения к базе. Его можно править руками, после правки перезапустите Apache.

Права на каталоги

  • 🪟 Windows, файловая база. Учётная запись службы Apache должна иметь права на изменение каталога базы. По умолчанию служба работает от «Локальной системы»; если вы сменили её на отдельного пользователя — выдайте ему права.
  • 🐧 Linux. Пользователь Apache (www-data в Ubuntu) читает каталог публикации. Для файловой базы ему нужна ещё и запись в каталог базы.
  • 🗄️ Клиент-серверная база . Модуль ходит к серверу 1С по сети. Нужен доступ к порту агента 1540, менеджера кластера 1541 и к диапазону портов рабочих процессов.

Проверка: откройте http://сервер/buh — должно появиться окно входа 1С. Тонкий клиент подключается к этой же базе по адресу публикации, если в списке баз выбрать тип «На веб-сервере».

4. Виртуальный хост Apache для опубликованной базы

Публикация в основном конфиге работает, но при нескольких базах и доменах удобнее вынести её в отдельный виртуальный хост. Так проще включать HTTPS, вести отдельные логи и отключать одну базу, не трогая остальные.

Пример для Ubuntu — файл /etc/apache2/sites-available/1c.conf:

<VirtualHost *:80>
    ServerName 1c.example.ru

    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>

    ErrorLog ${APACHE_LOG_DIR}/1c_error.log
    CustomLog ${APACHE_LOG_DIR}/1c_access.log combined
</VirtualHost>

Строку LoadModule _1cws_module оставьте в общем конфиге, а блок Alias/Directory, который добавил webinst, перенесите в виртуальный хост. Иначе одна и та же публикация будет описана дважды.

sudo a2ensite 1c.conf
sudo apachectl configtest
sudo systemctl reload apache2

В Windows виртуальные хосты подключают через conf\extra\httpd-vhosts.conf: раскомментируйте строку Include conf/extra/httpd-vhosts.conf в httpd.conf.

Несколько баз на одном домене — это несколько пар Alias/Directory с разными именами: /buh, /zup, /ut. У каждой свой каталог и свой default.vrd.

5. HTTPS и безопасность веб-публикации 1С

Публикация на голом HTTP годится только для локальной сети. Пароли пользователей 1С при входе через веб-клиент идут в запросе — без шифрования их видно любому на пути.

Включаем HTTPS

В Linux с публичным доменом быстрее всего Let’s Encrypt:

sudo a2enmod ssl headers
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d 1c.example.ru

Certbot сам создаст хост на 443 порту и предложит перенаправлять HTTP на HTTPS. Вручную блок выглядит так:

<VirtualHost *:443>
    ServerName 1c.example.ru
    SSLEngine on
    SSLCertificateFile    /etc/ssl/1c/fullchain.pem
    SSLCertificateKeyFile /etc/ssl/1c/privkey.pem
    # Alias и Directory публикации — как в разделе 4
</VirtualHost>

В Windows раскомментируйте в httpd.conf строки LoadModule ssl_module и Include conf/extra/httpd-ssl.conf, затем укажите пути к сертификату и ключу в httpd-ssl.conf.

Что ещё закрыть

  • 🔑 Пароли в базе. У каждого пользователя 1С — свой пароль. Пустой пароль администратора при публикации наружу — открытая дверь.
  • 🧱 Доступ по IP. Если работают только из офиса, замените Require all granted на Require ip 203.0.113.0/24.
  • 🚪 Лишние сервисы. Не публикуйте OData и веб-сервисы, если ими никто не пользуется.
  • 🙈 Версия сервера. ServerTokens Prod и ServerSignature Off убирают версию Apache из ответов.
  • 🔒 Лучше VPN. Для бухгалтерии на десять человек VPN надёжнее открытого порта 443.

Не публикуйте в интернет базу, где есть пользователь без пароля. Боты перебирают типовые адреса вида /buh, /zup, /trade постоянно.

6. Производительность публикации 1С при большом числе пользователей

Apache в этой схеме — тонкая прослойка. Основную работу делает сервер 1С и СУБД. Поэтому оптимизация начинается с правильной архитектуры, а не с тонкой настройки Apache.

СитуацияЧто делать
Файловая база, больше 5–10 пользователей через вебПереводить базу на клиент-серверный вариант
Клиент-серверная база, Apache и 1С на одной машинеНормально, пока хватает памяти и ядер
Десятки веб-пользователей, растёт нагрузкаВыносить Apache на отдельный сервер
Внешний доступ из интернетаСтавить HTTPS-прокси (nginx или Apache) перед публикацией

С файловой базой через веб все сеансы работают внутри процесса Apache и делят одну блокировку файла. При росте числа пользователей это первое узкое место.

Настройки Apache в Windows

В Windows Apache работает модулем mpm_winnt: один рабочий процесс с потоками. По умолчанию потоков 64. Для 50 и более активных веб-пользователей поднимите их в httpd.conf:

<IfModule mpm_winnt_module>
    ThreadsPerChild 250
    MaxConnectionsPerChild 0
</IfModule>

Настройки в Linux

Посмотрите, какой MPM включён: apachectl -V | grep MPM. Для event и worker число одновременно обслуживаемых запросов ограничивают MaxRequestWorkers и ThreadsPerChild в /etc/apache2/mods-available/mpm_event.conf (или mpm_worker.conf). Поднимайте лимиты постепенно и следите за памятью.

Что даёт заметный эффект

  • ⚡ Держите KeepAlive On — веб-клиент делает много мелких запросов подряд.
  • 📶 Сжатие mod_deflate для текстовых ответов уменьшает трафик на медленных каналах.
  • 🧮 Следите за памятью процессов rphost на сервере 1С: тормоза веб-клиента чаще оттуда, чем из Apache.
  • 🪪 Лицензии. Сеанс веб-клиента занимает клиентскую лицензию так же, как тонкий клиент. При нехватке лицензий база просто не пустит новых пользователей.

7. Ошибки при публикации 1С на Apache

Начинайте всегда с проверки синтаксиса: в Windows httpd.exe -t, в Linux apachectl configtest. Затем смотрите error.log Apache — модуль 1С пишет туда причины отказов.

Диагностика: выберите симптом

Если публикация не сохраняется из Конфигуратора

Кнопка «Опубликовать» срабатывает, но в httpd.conf ничего не меняется. Почти всегда это запуск Конфигуратора без прав администратора. Закройте его и откройте через «Запуск от имени администратора».

8. Обновление платформы, резервные копии и автоматизация

Обновили платформу — проверьте публикацию в тот же день. Старая строка LoadModule продолжает указывать на каталог прежней версии. Если старую версию удалили, Apache не запустится. Если оставили — веб-клиент будет конфликтовать с сервером 1С новой версии.

Порядок при обновлении платформы

  1. Установите новую версию платформы с компонентом веб-модулей.
  2. Поправьте путь в LoadModule _1cws_module на новый каталог.
  3. Проверьте синтаксис (httpd.exe -t или apachectl configtest).
  4. Вне рабочего времени перезапустите Apache — веб-сеансы оборвутся.
  5. Откройте базу в браузере и войдите под тестовым пользователем.

Автоматизация замены версии

На Linux помогает переопубликация через webinst из скрипта: она пропишет модуль новой версии.

#!/bin/bash
# Использование: ./republish.sh 8.3.xx.xxxx
VER="$1"
BIN="/opt/1cv8/x86_64/$VER"
sudo "$BIN/webinst" -publish -apache24 -wsdir buh -dir /var/www/buh \
  -connstr "Srvr=srv1c;Ref=buh;" -confpath /etc/apache2/apache2.conf
sudo apachectl configtest && sudo systemctl restart apache2

Проверьте после первого прогона, что в конфиге не осталось двух строк LoadModule _1cws_module — Apache не загрузит модуль дважды. В Windows то же делается PowerShell-скриптом, который заменяет номер версии в httpd.conf, или повторной публикацией из Конфигуратора новой версии.

Что включить в резервные копии

  • 📄 httpd.conf, файлы виртуальных хостов и httpd-ssl.conf.
  • 📄 Все default.vrd из каталогов публикации.
  • 🔑 Сертификаты и закрытые ключи (с ограниченным доступом).
  • 🗄️ Сами базы — штатными средствами: выгрузка .dt, резервное копирование СУБД или копия каталога файловой базы при остановленной работе.

С копией конфигов восстановление публикации на новом сервере занимает минуты: установить Apache и платформу, вернуть файлы, поправить пути.

Частые вопросы о публикации 1С на Apache

Можно ли опубликовать на Apache файловую базу?
Да. В строке подключения указывается File="путь". Подходит для небольшого числа пользователей; при росте нагрузки базу лучше перевести на сервер 1С.
Какой Apache выбрать: 2.2 или 2.4?
Только 2.4. Актуальные версии платформы 8.3 поставляют модуль для этой ветки, а 2.2 давно не поддерживается самим Apache.
Нужен ли сервер 1С для работы через браузер?
Нет. Веб-клиент работает и с файловой базой, и с клиент-серверной. Сервер 1С нужен для производительности и для работы многих пользователей.
Можно ли подключить тонкий клиент к публикации?
Да. При добавлении базы в список выберите вариант на веб-сервере и укажите адрес публикации, например https://1c.example.ru/buh.
Как опубликовать несколько баз на одном Apache?
Опубликуйте каждую под своим именем и в свой каталог. Получатся адреса /buh, /zup, /ut, все они обслуживаются одним модулем.