Публикация базы 1С:Предприятия через IIS и Apache — от подготовки сервера до проверки
Содержание
Чтобы разместить 1С на веб-сервере, нужно три вещи: установленный веб-сервер (IIS на Windows или Apache 2.4 на Linux и Windows), модули расширения веб-сервера из дистрибутива платформы той же версии, что и база, и публикация базы — через Конфигуратор (Администрирование → Публикация на веб-сервере) или утилиту webinst. После этого база открывается в браузере по адресу вида http://server/buh/, а тонкий клиент подключается к ней по HTTP.
Выбор простой. Сервер на Windows — берите IIS, он уже есть в системе. Сервер на Linux — Apache 2.4. Nginx платформа напрямую не поддерживает: его ставят перед Apache или IIS как обратный прокси, чтобы раздавать HTTPS и закрывать лишнее.
Какой веб-сервер выбрать для размещения 1С
Платформа 1С:Предприятие 8.3 работает с двумя веб-серверами через свои модули: ISAPI-расширение для IIS и модуль для Apache. Всё остальное — только как надстройка.
| Вариант | Где работает | Модуль 1С | Когда выбирать |
|---|---|---|---|
| IIS | Windows Server 2016 и новее | wsisapi.dll | Сервер 1С и так на Windows, администратор знаком с IIS |
| Apache 2.4 | Linux, Windows | wsap24.so (Linux), wsap24.dll (Windows) | Сервер на Linux, нужна прозрачная текстовая конфигурация |
| Nginx + Apache/IIS | Любая ОС | Модуль 1С ставится в Apache/IIS | Публикация в интернет: TLS, ограничение доступа, несколько сайтов на одном IP |
Опубликовать можно и файловую, и клиент-серверную базу . Для пяти-десяти пользователей файловая база через веб-сервер работает приемлемо. Для большего числа и для доступа из интернета логичнее клиент-серверный вариант: сервер 1С плюс СУБД (PostgreSQL или MS SQL).
Подготовка сервера перед публикацией 1С
Сам веб-сервер нагружен слабо: основную работу делают рабочие процессы сервера 1С. Ориентиры для небольшой компании:
- 🖥️ процессор — от 4 ядер на машину, где стоят и сервер 1С, и веб-сервер;
- 💾 память — примерно от 8 ГБ для 10–20 пользователей, плюс память под СУБД, если она на той же машине;
- 💿 диск — SSD под базы и временные файлы кластера;
- 🌐 сеть — статический IP или доменное имя, если доступ нужен снаружи.
Порты, которые нужно учесть в брандмауэре:
| Порт | Кто слушает | Открывать наружу? |
|---|---|---|
| 80 / 443 | Веб-сервер | Да, только 443 при доступе из интернета |
| 1540 | Агент сервера 1С | Нет, только внутри сети |
| 1541 | Менеджер кластера | Нет |
| 1560–1591 | Рабочие процессы (диапазон задаётся в свойствах рабочего сервера) | Нет |
Веб-сервер и сервер 1С можно разнести на разные машины. Тогда между ними должны быть открыты 1540, 1541 и диапазон рабочих процессов.
Установка платформы 1С и модулей расширения веб-сервера
Главное правило: версия модулей на веб-сервере должна совпадать с версией сервера 1С до последней цифры. Иначе клиент получит ошибку о несоответствии версий.
Windows
- Запустите
setup.exeиз дистрибутива технологической платформы. - В списке компонентов включите Модули расширения веб-сервера. Если на этой же машине нужен Конфигуратор для публикации — оставьте и «1С:Предприятие».
- Для 64-битного IIS ставьте 64-битный дистрибутив. Модули 32-битной платформы потребуют включить 32-битные приложения в пуле IIS.
- После установки проверьте папку
C:\Program Files\1cv8\8.3.xx.xxxx\bin\— в ней должен лежатьwsisapi.dll.
Linux
Модули веб-сервера идут отдельным пакетом с суффиксом -ws в имени. В новых дистрибутивах платформа ставится единым установщиком, где компонент выбирается галочкой. После установки файлы окажутся в каталоге /opt/1cv8/x86_64/8.3.xx.xxxx/, там же лежат wsap24.so и утилита webinst.
Сервер 1С для клиент-серверной базы
Если база файловая, этот шаг пропускается. Для клиент-серверного варианта:
- Установите компонент «Сервер 1С:Предприятия» той же версии. На Windows установщик предложит запустить сервер как службу — соглашайтесь и задайте отдельного пользователя службы.
- Убедитесь, что служба запущена и слушает 1540:
netstat -an | findstr 1540на Windows илиss -tlnp | grep 1540на Linux. - В консоли кластера (или через
rac cluster list) проверьте, что кластер виден. - Создайте или загрузите информационную базу в кластер. Запомните имя базы в кластере — оно понадобится для строки подключения.
Строка подключения для публикации будет выглядеть так: Srvr="srv1c";Ref="buh";. Для файловой базы: File="D:\Bases\Buh";.
Настройка IIS или Apache под 1С
IIS на Windows Server
- Откройте
Диспетчер серверов → Управление → Добавить роли и компоненты. - Отметьте роль Веб-сервер (IIS). В службах роли раскройте Разработка приложений и включите Расширения ISAPI и Фильтры ISAPI.
- Оставьте средства управления: Консоль управления IIS.
- Дайте права на чтение и выполнение группе
IIS_IUSRSна папкуbinплатформы. Для файловой базы этой же группе нужны права на изменение каталога базы.
Если публикуете модули 32-битной платформы, в дополнительных параметрах пула приложений установите «Разрешены 32-разрядные приложения» = True.
Apache 2.4 на Linux
На Debian и Ubuntu: sudo apt install apache2. Публикацию удобнее сделать утилитой webinst — она сама допишет нужные строки в конфиг. Для понимания, что именно появится в apache2.conf:
LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.xx.xxxx/wsap24.so"
# 1c publication
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>
После обновления платформы путь в LoadModule меняется вместе с номером версии. Поправьте его вручную или перепубликуйте базу, затем перезапустите Apache.
Публикация базы 1С на веб-сервере
Через Конфигуратор (Windows + IIS)
- Запустите 1С от имени администратора Windows. Без этого пункт публикации будет недоступен или упадёт с ошибкой прав.
- Откройте базу в режиме Конфигуратора.
- Выберите
Администрирование → Публикация на веб-сервере. - Заполните поля:
- Имя — латиницей, без пробелов: оно станет частью адреса (
buh); - Веб-сервер — Internet Information Services;
- Каталог — например,
C:\inetpub\wwwroot\buh.
- Имя — латиницей, без пробелов: оно станет частью адреса (
- Оставьте флажки публикации тонкого клиента и веб-клиента. Веб-сервисы, HTTP-сервисы и OData включайте только те, что реально используются.
- Нажмите Опубликовать. Платформа создаст каталог с файлом
default.vrdи приложение в IIS.
Через webinst (Linux + Apache)
sudo mkdir -p /var/www/buh
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
Ключевой файл публикации — default.vrd. В нём хранится строка подключения к базе и список опубликованных сервисов. При переносе публикации на другой сервер достаточно поправить в нём адрес сервера 1С.
Несколько баз на одном веб-сервере — это несколько публикаций с разными именами: /buh, /zup, /ut. Каждая получает свой каталог и свой default.vrd.
Безопасность и Nginx перед веб-сервером 1С
Публикация «как есть» по HTTP подходит только для локальной сети. Перед выходом в интернет:
- 🔒 HTTPS обязателен. Логин и пароль пользователя иначе идут открытым текстом. Бесплатный сертификат Let’s Encrypt подходит.
- 👤 У каждого пользователя базы — пароль. Пустой пароль у пользователя с полными правами в опубликованной базе — открытая дверь.
- 🚪 Наружу только 443. Порты кластера 1540–1591 и порт RDP из интернета закрыты.
- 🧹 Лишние сервисы не публикуйте. Отключённые веб- и HTTP-сервисы в
default.vrd— меньше поверхность атаки. - 🛡️ Ограничение по IP или VPN для доступа из филиалов — надёжнее любого пароля.
Типовая схема для интернета: Nginx принимает HTTPS на 443 и передаёт запросы на Apache, который слушает только 127.0.0.1:8080.
server {
listen 443 ssl http2;
server_name 1c.example.ru;
ssl_certificate /etc/letsencrypt/live/1c.example.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/1c.example.ru/privkey.pem;
client_max_body_size 200m; # загрузка файлов и вложений
proxy_read_timeout 600s; # долгие отчёты и обработки
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Сертификат на Debian и Ubuntu выпускается и продлевается пакетом certbot:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d 1c.example.ru
Доменное имя должно уже указывать на IP сервера, а порт 80 — быть открыт на время проверки. Продление certbot настраивает сам, через системный таймер.
На Windows с IIS сертификат привязывается к сайту в консоли IIS: в разделе привязок сайта добавьте тип https, порт 443 и выберите установленный сертификат. Для бесплатных сертификатов под IIS есть сторонние утилиты-клиенты ACME.
Без увеличенного proxy_read_timeout длинная выгрузка или закрытие месяца
в веб-клиенте оборвётся через 60 секунд со стороны прокси, хотя на сервере 1С операция продолжится.
Проверка работы и наблюдение за публикацией
Проверяйте в таком порядке, от простого к сложному:
- Браузер на самом сервере:
http://localhost/buh/. Должна появиться форма входа 1С. - Браузер с другого компьютера сети:
http://server/buh/. Не открывается — смотрите брандмауэр. - Тонкий клиент: в списке баз нажмите «Добавить», выберите вариант подключения через веб-сервер и укажите адрес
https://1c.example.ru/buh. - Нагрузка: попросите 3–5 пользователей поработать одновременно и сформировать тяжёлый отчёт.
Где смотреть, если что-то не так:
| Что | Где лежит |
|---|---|
| Журнал IIS | C:\inetpub\logs\LogFiles\ |
| Ошибки Apache | /var/log/apache2/error.log |
| Активные сеансы базы | Консоль кластера или rac session list |
| Технологический журнал 1С | Включается файлом logcfg.xml в каталоге conf платформы |
Сеансы веб-клиента и тонкого клиента через веб-сервер занимают клиентские лицензии так же, как обычные подключения. Если пользователь закрыл вкладку браузера, не выйдя из базы, сеанс какое-то время остаётся висеть и держит лицензию — это видно в списке сеансов.
Ошибки при размещении 1С на веб-сервере
Перезапуск IIS (iisreset) или Apache обрывает все сеансы, открытые через веб-сервер: несохранённые документы у пользователей пропадут. Делайте это вне рабочего времени или после предупреждения.