Warning
Данная статья не претендует на оригинальность и не является конечным решением. Подходы решения задач и их примеры несут исключительно обучающий характер. |
Сколько бы ни было написано статей на тему работы 1С и Linux, никогда не поздно написать еще одну!
Исходные данные:
- Сервер на CentOS 7, тут про него писал;
- Платформа 8.3.12.1714;
- Пустая база на БСП;
- Всякие утилиты для работы по SSH: PuTTY и FileZilla.
Все выше у меня уже было установлено, настроено и стабильно работало. Теперь сразу перейдем к установке и настройке веб сервера Apache2.
Установим apache2 и выполним предварительные приготовления:
# установим apache2
$ yum install httpd
# все настройки веб сервера уже сделаны по умолчанию и он без проблем запуститься
$ systemctl start httpd
# теперь должен открыться 80-й порт и на ip сервера будет доступна html страница по умолчанию
# если что не так можно проверить состояние сервера
$ systemctl status httpd
# если все классно можно его вырубать он нам пока не нужен
$ systemctl stop httpd
# нужно добавить порты сервера 1С в исключения SELinux для процесса httpd
$ semanage port -a -t http_port_t -p tcp 1541
$ semanage port -a -t http_port_t -p tcp 1560
Теперь нам нужно подготовить файл VRD для публикации. Вот как его получить:
- Открыть Конфигуратор 1С (можно на windows);
- Открыть меню Администрирование -> Публикация на веб сервере;
- Если выдал ошибку, что нет модуля для веб сервера, значит переустановить клиент 1С и выбрать модуль для работы с веб сервером (доступен для выбора в полном дистрибутиве платформы);
- Соглашаемся с тем, что написано;
- Перед нами открываться окно, где галочками можно выбрать, что публикуем; Я выбрал все;
- Жмем Сохранить;
- Сохраняем файл default.vrd себе на диск.
Полученный файл нужно скорректировать в текстовом редакторе (правильно указать имя базы и заменить адрес сервера на localhost):
<?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="/Имябазы"
ib="Srvr=localhost;Ref=Имябазы;">
.......
.....<!-- тут будут все сервисы для публикации -->
...
</point>
Подробнее про Apache2 на CentOS 7:
- Проверить установленную версию можно следующей командой: $ httpd -V
- Версия, которая поставилась по умолчанию — "Server version: Apache/2.4.6 (CentOS)" (12.05.2024)
- Папка для сайтов и прочего контента публикации: "/var/www"
- Корневая директория веб сервера: "/var/www/html" (если закинуть сюда html файл, то он будет доступен по имени через слеш от имени хоста в браузере)
- Папка с настройками: "/etc/httpd"
- Путь к httpd.conf: "/etc/httpd/conf/httpd.conf" — менять сам файл для публикации 1С не нужно!
- Путь к конфигурационным файлам: "/etc/httpd/conf.modules.d" — именно тут и добавим файл .conf для загрузки модуля 1C в apache2.
Подробнее о стандартной утилите 1С для публикации в Linux (webinst):
- Корневая папка: "/opt/1C/v8.3/x86_64" — собственно там, где и вся платформа;
- Имя исполняемого файла: "webinst";
- Аргументы:
- -apache24 — без значения, передает версию веб сервера;
- -wsdir 1СDB_test1 — имеет значение 1СDB_test1, передает адрес, по которому база будет доступна по HTTP, пример: http://centos-s-1vcpu/1CDB_test1/ru_RU/ или http://публичный IP сервера/1CDB_test1/ru_RU/
- -dir /var/www/1c-web/1CDB_test1/ — имеет значение, папка куда положить сгенерированный default.vrd;
- -connstr "Srvr=localhost;Ref=1CDB_test1; — имеет значение, привычная всем строка соединения;
- -confPath /etc/httpd/conf.modules.d/00-1c.conf — имеет значение, конфигурационный файл httpd, но мы не будем менять стандартный, мы просто создадим еще один, а веб сервер подтянет его сам!
Пример использования:
# перейдем в паку с платформой
$ cd /opt/1C/v8.3/x86_64
# опубликуем первую базу
$ ./webinst -apache24 -wsdir 1CDB_test1 -dir /var/www/1c-web/1CDB_test1 -connstr "Srvr=localhost;Ref=1CDB_test1;" -confPath /etc/httpd/conf.modules.d/00-1c.conf
# если хотим опубликовать еще одну
$ ./webinst -apache24 -wsdir 1CDB_test2 -dir /var/www/1c-web/1CDB_test2 -connstr "Srvr=localhost;Ref=1CDB_test2;" -confPath /etc/httpd/conf.modules.d/00-1c.conf
Собственно что webinst прописывает в файл .conf:
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so"
# 1c publication
Alias "/1CDB_test1" "/var/www/1c-web/1CDB_test1/"
<Directory "/var/www/1c-web/1CDB_test1/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "/var/www/1c-web/1CDB_test1/default.vrd"
</Directory>
# 1c publication
Alias "/1CDB_test2" "/var/www/1c-web/1CDB_test2/"
<Directory "/var/www/1c-web/1CDB_test2/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "/var/www/1c-web/1CDB_test2/default.vrd"
</Directory>
И файл /var/www/1c-web/1CDB_test1/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="/1CDB_test1"
ib="Srvr=localhost;Ref=1CDB_test1;">
<standardOdata enable="false"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</point>
После работы с webinst бестолковый файл /var/www/1c-web/1CDB_test1/default.vrd можно заменить на тот, который мы сохранили с конфигуратора. Для этого поможет FileZilla.
Пример файла default.vrd из Конфигратора:
Заменили файл, прекрасно! Запустим сервер httpd:
$ systemctl start httpd
# убедимся что все хорошо
$ systemctl status httpd
Теперь можно переходить по адресу, где опубликована база, и если на сервере установлена программная лицензия, то она откроется в веб клиенте. Если добавить базу в тонкий клиент 1С по http — тоже откроется.
Если в конфигруаторе, на форме публикации, пред сохранением файла VRD выбрали веб и http сервисы, они также будут доступны.
Проверим стандартный веб сервис БСП, метод "ping()":
Спасибо, за внимание!