Публикация 1С через Apache: веб-клиент и HTTP-сервисы

Зачем публиковать 1С через веб-сервер

Публикация информационной базы 1С через веб-сервер Apache открывает несколько сценариев использования:

  • Веб-клиент — работа с 1С через браузер без установки платформы на клиентское устройство
  • Тонкий клиент через интернет — подключение тонкого клиента к базе через HTTP/HTTPS
  • HTTP-сервисы — REST API для интеграции с внешними системами (сайт, CRM, мобильные приложения)
  • Web-сервисы (SOAP) — интеграция по протоколу SOAP

Веб-клиент особенно актуален для территориально распределённых компаний и удалённых сотрудников. Пользователю достаточно современного браузера — Chrome, Firefox или Edge. Установка дополнительного ПО не требуется.

В данной статье мы рассмотрим публикацию на связке Apache 2.4 + модуль веб-расширения 1С на платформе Linux (Ubuntu 22.04) и Windows Server 2019. Все примеры приведены для платформы 1С:Предприятие 8.3.24.

Установка компонентов на Linux (Ubuntu/Debian)

Для работы веб-клиента 1С на Linux необходимо установить платформу 1С, Apache и модуль веб-расширения.

Устанавливаем Apache:

sudo apt update
sudo apt install apache2 -y
sudo a2enmod ssl rewrite headers
sudo systemctl enable apache2

Устанавливаем серверные компоненты 1С из deb-пакетов:

# Скачайте пакеты с releases.1c.ru
sudo dpkg -i 1c-enterprise83-common_8.3.24.1548-1_amd64.deb
sudo dpkg -i 1c-enterprise83-ws_8.3.24.1548-1_amd64.deb
sudo apt install -f  # исправление зависимостей

Пакет 1c-enterprise83-ws устанавливает модуль Apache wsap24.so и утилиту публикации webinst. Проверяем наличие модуля:

ls -la /opt/1cv8/x86_64/8.3.24.1548/wsap24.so

Создаём симлинк для Apache:

cat > /etc/apache2/mods-available/1c.load <<EOF
LoadModule _1cws_module /opt/1cv8/x86_64/8.3.24.1548/wsap24.so
EOF

sudo a2enmod 1c
sudo systemctl restart apache2

Публикация базы через webinst

Утилита webinst создаёт конфигурацию Apache для доступа к информационной базе:

# Для файловой базы
/opt/1cv8/x86_64/8.3.24.1548/webinst -apache24 \
  -wsdir erp \
  -dir /var/www/1c/erp \
  -connstr "File=/opt/1c-bases/erp" \
  -confpath /etc/apache2/1c-publications.conf

# Для серверной базы
/opt/1cv8/x86_64/8.3.24.1548/webinst -apache24 \
  -wsdir erp \
  -dir /var/www/1c/erp \
  -connstr "Srvr=srv-1c;Ref=erp" \
  -confpath /etc/apache2/1c-publications.conf

Подключаем конфигурацию публикации в Apache:

echo "Include /etc/apache2/1c-publications.conf" >> /etc/apache2/apache2.conf
sudo systemctl restart apache2

Базы будет доступна по адресу http://server/erp.

Настройка публикации на Windows Server

На Windows Server публикация выполняется из конфигуратора 1С или через утилиту командной строки. Предварительно установите Apache 2.4 для Windows (например, сборку Apache Lounge).

Публикация из конфигуратора:

  1. Откройте базу в конфигураторе
  2. Меню Администрирование → Публикация на веб-сервере
  3. Укажите параметры:
    • Имя публикации: erp
    • Веб-сервер: Apache 2.4
    • Каталог: C:\inetpub\1c\erp
    • Поставьте галочки: «Публиковать веб-клиент», «Публиковать HTTP-сервисы»
  4. Нажмите «Опубликовать»

Конфигуратор создаст файл default.vrd в указанном каталоге и добавит настройки в httpd.conf. Содержимое default.vrd:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  base="/erp"
  ib="Srvr=&quot;srv-1c&quot;;Ref=&quot;erp&quot;;"
  enable="true">
  <ws enable="true"/>
  <httpServices publishByDefault="true">
    <service name="API_Exchange" enable="true" rootUrl="api"/>
  </httpServices>
</point>

Файл default.vrd — ключевой файл публикации. Именно его можно редактировать вручную для тонкой настройки без конфигуратора.

Настройка HTTPS и аутентификации

Для продакшен-среды обязательно настройте HTTPS. Использование HTTP допустимо только в изолированных сетях.

Получаем сертификат Let's Encrypt и настраиваем Apache:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d 1c.company.ru

Виртуальный хост Apache для 1С с HTTPS:

<VirtualHost *:443>
    ServerName 1c.company.ru
    DocumentRoot /var/www/1c

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/1c.company.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/1c.company.ru/privkey.pem

    # Публикация 1С
    Alias /erp /var/www/1c/erp
    <Directory /var/www/1c/erp>
        AllowOverride All
        Require all granted
    </Directory>

    # Ограничение по IP (опционально)
    <Location /erp>
        Require ip 10.0.0.0/8
        Require ip 192.168.0.0/16
        Require ip 203.0.113.50
    </Location>

    # Заголовки безопасности
    Header always set X-Frame-Options DENY
    Header always set X-Content-Type-Options nosniff
    Header always set Strict-Transport-Security "max-age=31536000"
</VirtualHost>

# Редирект HTTP → HTTPS
<VirtualHost *:80>
    ServerName 1c.company.ru
    Redirect permanent / https://1c.company.ru/
</VirtualHost>

Аутентификация OpenID и прокси

Для усиления безопасности можно настроить двухфакторную аутентификацию через reverse proxy. В default.vrd доступны параметры аутентификации:

<point ...
  allowedHosts="1c.company.ru"
  sessionMaxAge="3600"
  poolSize="10"
  poolTimeout="30">
  <openid url="https://auth.company.ru/openid"
    rely="https://1c.company.ru/erp" />
</point>

Параметры пула соединений в default.vrd критичны для производительности:

  • poolSize — максимальное количество сеансов в пуле (по умолчанию 10)
  • poolTimeout — таймаут ожидания свободного сеанса в секундах
  • sessionMaxAge — максимальное время жизни сеанса

Публикация HTTP-сервисов для интеграции

HTTP-сервисы 1С позволяют создать REST API для обмена данными с внешними системами. После создания HTTP-сервиса в конфигураторе его нужно опубликовать.

В файле default.vrd раздел HTTP-сервисов:

<httpServices publishByDefault="false">
  <service name="API_Exchange"
    enable="true"
    rootUrl="api"
    reuseSessions="autouse"
    sessionMaxAge="60" />
  <service name="API_Catalog"
    enable="true"
    rootUrl="catalog" />
</httpServices>

После публикации HTTP-сервис доступен по URL:

https://1c.company.ru/erp/hs/api/v1/orders

Пример обращения к HTTP-сервису через curl:

# Получение списка заказов
curl -X GET "https://1c.company.ru/erp/hs/api/v1/orders?date=2026-04-01" \
  -H "Authorization: Basic $(echo -n 'APIUser:P@ssw0rd' | base64)" \
  -H "Content-Type: application/json"

# Создание документа
curl -X POST "https://1c.company.ru/erp/hs/api/v1/orders" \
  -H "Authorization: Basic $(echo -n 'APIUser:P@ssw0rd' | base64)" \
  -H "Content-Type: application/json" \
  -d '{"client": "ООО Компания", "items": [{"sku": "00001", "qty": 10}]}'

Важно: для HTTP-сервисов рекомендуется создать отдельного пользователя 1С с минимальными правами и отключённым интерактивным входом.

Оптимизация производительности

Веб-клиент 1С требует значительных ресурсов сервера. На каждого подключённого пользователя приходится отдельный серверный процесс. Основные параметры оптимизации:

Настройка Apache MPM

Для 1С рекомендуется MPM prefork (не worker и не event), так как модуль 1С не является потокобезопасным:

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork

# /etc/apache2/mods-enabled/mpm_prefork.conf
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers       10
    MaxRequestWorkers     50
    MaxConnectionsPerChild 1000
</IfModule>

Значение MaxRequestWorkers определяет максимальное количество одновременных подключений. Каждый процесс потребляет 200-500 МБ RAM, поэтому для 50 пользователей нужно минимум 16 ГБ оперативной памяти.

Сжатие и кэширование

Включите сжатие для уменьшения трафика:

sudo a2enmod deflate expires

# /etc/apache2/conf-available/1c-optimization.conf
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/javascript application/javascript
    AddOutputFilterByType DEFLATE application/json
</IfModule>

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/png "access plus 7 days"
    ExpiresByType image/gif "access plus 7 days"
    ExpiresByType text/css "access plus 1 day"
    ExpiresByType application/javascript "access plus 1 day"
</IfModule>
sudo a2enconf 1c-optimization
sudo systemctl restart apache2

Решение типичных проблем

При публикации 1С через Apache часто возникают характерные ошибки. Рассмотрим наиболее распространённые:

Ошибка «Сервер 1С:Предприятия не обнаружен»:

  • Проверьте, загружен ли модуль: apache2ctl -M | grep 1cws
  • Убедитесь, что путь к wsap24.so корректен
  • Проверьте права доступа к каталогу публикации: chown -R www-data:www-data /var/www/1c/

Ошибка 403 Forbidden:

# Проверяем логи Apache
tail -f /var/log/apache2/error.log

# Часто причина — SELinux (на CentOS/RHEL)
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_unified 1

Веб-клиент открывается, но зависает при входе:

  • Проверьте доступность сервера 1С с машины Apache: telnet srv-1c 1541
  • Убедитесь, что кластер 1С запущен: sudo systemctl status srv1cv83
  • Проверьте файл default.vrd — строка подключения должна быть корректной

Медленная работа веб-клиента:

  • Включите сжатие (mod_deflate)
  • Убедитесь, что используется HTTPS/2: sudo a2enmod http2
  • Увеличьте poolSize в default.vrd
  • Проверьте, нет ли нехватки оперативной памяти: free -h

Часто задаваемые вопросы

Платформа 8.3.24 поддерживает Google Chrome (версия 100+), Mozilla Firefox (100+), Microsoft Edge (100+) и Safari (15+). Internet Explorer не поддерживается начиная с платформы 8.3.20. Рекомендуется Chrome — он обеспечивает наилучшую производительность веб-клиента.

Нет, модуль веб-расширения 1С (wsap24.so) работает только с Apache. Nginx можно использовать как reverse proxy перед Apache для терминации SSL и балансировки нагрузки, но бэкендом всё равно должен быть Apache с модулем 1С.

В среднем один сеанс веб-клиента потребляет 200-500 МБ RAM на сервере в зависимости от конфигурации 1С. Для 20 одновременных пользователей рекомендуется сервер с 16 ГБ RAM. Не забывайте про память для самого сервера 1С и СУБД.

Запустите webinst для каждой базы с разными параметрами -wsdir. Например, -wsdir erp для ERP и -wsdir buh для бухгалтерии. Базы будут доступны по адресам https://server/erp и https://server/buh. Все публикации хранятся в одном файле конфигурации Apache.

При обновлении платформы путь к модулю wsap24.so изменяется (содержит номер версии). После установки новой версии обновите симлинк или путь в конфигурации Apache, укажите новую версию в 1c.load и перезапустите Apache. Файл default.vrd не зависит от версии платформы и остаётся без изменений.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#1С веб-клиент#Apache 1С#публикация 1С#HTTP-сервисы 1С#1С через браузер#1С Apache настройка#веб-сервер 1С#1С Предприятие веб
Комментарии 0

Оставить комментарий

загрузка...