Как стать автором
Обновить

Поднимаем сервер 1с с публикацией базы и веб сервисов на Linux

Время на прочтение4 мин
Количество просмотров34K
image

Сегодня я бы хотел рассказать, как поднять сервер 1с на linux debian 9 с публикацией web-сервисов.

Что такое web-сервисы 1с?

Web-сервисы — это один из механизмов платформы, используемых для интеграции с другими информационными системами. Он является средством поддержки SOA (Service-Oriented Architecture) — сервис-ориентированной архитектуры, которая является современным стандартом интеграции приложений и информационных систем. По сути — это возможность создать html страницу с данными, к которой, потом можно обратиться любым другим приложением и забрать их.

Плюсы — работает быстро (даже при достаточно большом объеме данных), относительно удобно.

Минусы — ваш програмист 1с будет много и долго на вас ворчать, пока будет писать веб-сервис для вашей базы. Штука очень своеобразная в написании.

Я не буду рассказывать как написать веб-сервис… я расскажу как его опубликовать на Linux из консоли сервера, а так же немного про установку 1с сервера на Linux.

И так, у нас есть debian 9 netinst, приступаем:

Устанавливаем PostgresPro (Прошу заметить что он не бесплатный, и распространяется, только в рамках ознакомления с возможностями):

# apt-get update -y

# apt-get install -y wget gnupg2 || apt-get install -y gnupg

# wget -O - http://repo.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO | apt-key add -

# echo deb http://repo.postgrespro.ru/pgpro-archive/pgpro-11.4.1/debian stretch main > /etc/apt/sources.list.d/postgrespro-std.list

# apt-get update -y


# apt-get install -y postgrespro-std-11-server


# /opt/pgpro/std-11/bin/pg-setup initdb


# /opt/pgpro/std-11/bin/pg-setup service enable


# service postgrespro-std-11 start


# su - postgres


# /opt/pgpro/std-11/bin/psql -U postgres -c "alter user postgres with password 'ВашПароль';"

Скажем postgresql слушать все адреса а не только localhost
# nano /var/lib/pgpro/std-11/data/postgresql.conf


Раскомментируем и поменяем какие адреса слушать:

#listen_addresses = 'localhost'


На

listen_addresses = '*'



Далее разрешим авторизоваться пользователям из нашей сети
# nano /var/lib/pgpro/std-11/data/pg_hba.conf

Изменим:
# IPv4 local connections:
host all all 127.0.0.1/32 md5

на
host all all 192.168.188.0/24 md5
host all all 127.0.0.1/32 md5


Более подробно о различных установках Postgres для 1с можно почитать тут.

Далее ставим 1с сервер.

Заливаем на сервер архив скачанный с сайта 1с (в моем случае deb64_8_3_15_1534.tar.gz)

# tar -xzf deb64_8_3_15_1534.tar.gz

# dpkg -i *.deb

еще пара мелочей:
# apt install imagemagick unixodbc libgsf-bin


Теперь установим Apache2

# apt install apache2


Через консоль администрирования или через клиент 1с создаем базу и заливаем нашу конфигурацию…

Теперь публикуем базу:

переходим в папку с 1с.
# cd /opt/1C/v8.3/x86_64/



./webinst -publish -apache24 -wsdir Test -dir /var/www/test/ -connstr  "Srvr=10.7.12.108;Ref=test;" -confPath /etc/apache2/apache2.conf


Лезем в var/www/test/ и смотрим что там появилось.

# cd /var/www/test


# nano default.vrd


"
<?xml version=«1.0» encoding=«UTF-8»?>
<point xmlns=«v8.1c.ru/8.2/virtual-resource-system»
xmlns:xs=«www.w3.org/2001/XMLSchema»
xmlns:xsi=«www.w3.org/2001/XMLSchema-instance»
base="/Test"
ib=«Srvr=192.168.188.150;Ref=Test;»>
<standardOdata enable=«false»
reuseSessions=«autouse»
sessionMaxAge=«20»
poolSize=«10»
poolTimeout=«5»/>
"

Это схемы которые нужны для запуска веб-клиента 1с… теперь в нашу тестовую базу можно зайти из браузера по адресу «http ://АдресСервера/Test» (регистр важен! это же линукс) или указать в клиенте «тип расположения базы» адрес «http ://АдресСервера/Test», и клиент будет работать с опубликованной базой.

НО

А что же на счет веб-сервисов? (в моей тестовой конфигурации их два: WebBuh для обмена данными с бухгалтерией и toplog интеграция с системой wms одноименной компании).

Что ж, добавим пару строк в наш vrd файлик…

<?xml version=«1.0» encoding=«UTF-8»?>
<point xmlns=«v8.1c.ru/8.2/virtual-resource-system»
xmlns:xs=«www.w3.org/2001/XMLSchema»
xmlns:xsi=«www.w3.org/2001/XMLSchema-instance»
base="/TestWeb"
ib=«Srvr=IP_addres;Ref=TestWebServ»>
<standardOdata enable=«false»
reuseSessions=«autouse»
sessionMaxAge=«20»
poolSize=«10»
poolTimeout=«5»/>

# Вот тут начинается код который публикует веб-сервисы
<point name="WebBuh" # Имя веб-сервиса в конфигураторе
alias="Web_buh.1cws" # Web_buh.1cws - алиас веб-сервиса в браузере
enable="true" # дальше я думаю строки и так понятны
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<point name="TopLog" # второй веб сервис
alias="toplog.1cws" # toplog.1cws
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>


сохраним.

И теперь наш веб-сервис доступен по адресу «http ://АдресСервера/Test/Web_buh.1cws?»

Зачем надо было делать это руками?

Поскольку наш сервер без графической оболочки, запустить на нем конфигуратор — не получится, и соответственно выполнить публикацию штатными средствами. Удаленный же конфигуратор, который стоит на клиенте не публикует на сервере веб-сервисы. Поэтому нам приходится править конфиг вручную по шаблону описанному выше.

Скрипт для генерации .vrd — спасибо TihonV
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+10
Комментарии27

Публикации

Изменить настройки темы

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн