База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как опубликовать веб-сервисы 1С на Apache в Linux? › Ответ в теме: Как опубликовать веб-сервисы 1С на Apache в Linux?
Публикация веб-сервисов 1С на Apache в Linux делается так:
1. **Подготовка веб-сервера и модуля 1С**
— Установите Apache (обычно 2.4) и необходимые компоненты 1С (сервер, веб-сервер, общий пакет).
— Убедитесь, что в конфиге Apache (/etc/httpd/conf/httpd.conf или /etc/apache2/apache2.conf) подключен модуль 1С:
|
1 |
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so" |
— Для удобства можно вынести настройки 1С в отдельный файл и подключить его через IncludeOptional.
2. **Публикация базы 1С с помощью утилиты webinst**
— Перейдите в каталог с утилитой:
|
1 |
cd /opt/1C/v8.3/x86_64/ |
— Выполните команду публикации базы с указанием параметров:
|
1 |
./webinst -apache24 -wsdir test -dir /var/www/test -connstr "Srvr=server;Ref=test;" -confPath /etc/apache2/apache2.conf |
Здесь:
— -wsdir test — имя публикации (путь в URL будет /test)
— -dir /var/www/test — каталог публикации
— -connstr — строка подключения к базе
— -confPath — путь к конфигу Apache
3. **Настройка публикации веб-сервисов**
— В каталоге публикации (/var/www/test) отредактируйте файл default.vrd.
— Добавьте в него блок с описанием веб-сервисов, например:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="UTF-8"?> <point xmlns="http://v8.1c.ru/8.2/virtual-resource-system" base="/test" ib="Srvr=server;Ref=test;"> <ws publishExtensionsByDefault="true"> <point name="DMService" alias="dm.1cws" enable="true" reuseSessions="autouse" sessionMaxAge="20" poolSize="10" poolTimeout="5"></point> </ws> <standardodata enable="false" reuseSessions="autouse" sessionMaxAge="20" poolSize="10" poolTimeout="5"></standardodata> <analytics enable="true"></analytics> </point> |
— В теге укажите имена веб-сервисов из конфигуратора 1С и их алиасы.
4. **Настройка Apache для публикации**
— В конфиге Apache добавьте или проверьте наличие блока:
|
1 2 3 4 5 6 7 8 |
Alias "/test" "/var/www/test/" <directory "/var/www/test/"> AllowOverride All Options None Require all granted SetHandler 1c-application ManagedApplicationDescriptor "/var/www/test/default.vrd" </directory> |
— Обратите внимание, что директива SetHandler должна быть именно такой, а не forceHandler (частая ошибка).
5. **Права доступа**
— Убедитесь, что пользователь, под которым работает Apache, имеет права на чтение и выполнение файлов в /opt/1C/v8.3/x86_64/ и на каталог публикации /var/www/test.
— Если база файловая, то права на запись в каталог базы.
6. **Перезапуск Apache**
|
1 |
systemctl restart apache2 |
или
|
1 |
systemctl restart httpd |
7. **Проверка**
— В браузере перейдите по адресу:
|
1 |
http://<ваш_сервер>/test/dm.1cws |
(где dm.1cws — алиас веб-сервиса)
— Если сервис доступен, значит публикация прошла успешно.
—
**Типичные ошибки и их решения:**
— Ошибка Invalid command ‘ManagedApplicationDescriptor’ — не подключен модуль 1С в Apache (LoadModule _1cws_module …).
— Ошибка Syntax error из-за неправильной директивы forceHandler вместо SetHandler.
— Ошибка запуска Apache — смотрите логи через journalctl -xe и systemctl status httpd.
—
https://infostart.ru/1c/articles/440532/
https://1s-on.ru/publikacziya-1s-na-veb-servere-linux/
https://1s-on.ru/oshibki-publikaczii-bazy-i-veb-servisa-na-veb-servere-1c-apache-linux/