Публикация информационной базы и веб сервисов на Apache2 в CentOS







Простая инструкция как серверную базу 1С на Linux опубликовать на этом же сервере через Apache2, для чайников и не только.

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()":

Спасибо, за внимание! 

Также если мы опубликовывали веб сервисы они тоже будут доступны.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *