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

  • Tutorial
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
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 27

    0
    Спасибо за туториал, положил в закладки. Сам поднял с год назад в одной очень маленькой конторе сервер 1с на postgreSQL на Ubuntu server. Но без веб-сервисов. 1с на тонких клиентах летает, агент 1с не падает. Вот совсем никогда. Но есть пара минусов особенностей.

    1. Обновлять платформу на сервере приходится мне. Сертифицированные сотрудники лицензированных партнеров 1с при слове Linux теряются на местности и просят при них не выражаться.

    2. Для запуска конфигуратора на клиентском компьютере обязательно должен быть установлен толстый клиент.
      0
      Ну с обновлением сервера я не вижу особой проблемы, в Linux новая платформа встает поверх старой, а не параллельно, как в Windows, поэтому все обновление сводится к распаковке нового архива и установки новых deb.

      По поводу пункта 2 вы правы, обязательно должен быть толстый клиент, и более того он должен подключаться к базе не через веб, а через SQL. Через веб — конфигуратор не работает. Но будем честными, пользователям в конфигураторе делать нечего, а на «админской» машине поставить толстый клиент не проблема, как и обновить его…
        0
        Особой проблемы конечно нет. Но у меня был такой такой диалог:
        — Нам нужно обновить платформу 1с, дайте доступ к серверу
        — ssh, port, login, pass
        — Что это?
        — Доступ к серверу
        — А запустите на нем TeamViewer
        — На нем нет TeamViewer. Это Убунту сервер.
        — А? Это типа Линукс что ли? А чё делать-то? Там что нужно так же войти и какой-то другой установочный файл запустить?
        — Нет. Там настоящий сервер. Черный экран и приглашение ввести команду.
        — А?

        И в этот момент я понял что даже для айтишников Информационные технологии выглядят очень по разному.
          0
          Мне франчи как-то пытались доказать, что их код (доработка в программе) не работает, потому что у нас сервер на Linux… после 40 минутных препираний, тестов на виндовой машине на нашей стороне, я все-таки доказал им что проблема не в сервере, а в коде…
      0
      А чем не устроил webinst, который не графический и идет в поставке? Умеет делать публикацию веб-клиента, а все остальное через шаблон публикации.
        0
        webinst как раз и используется для создания публикации… проблема в том что он не публикует именно веб-сервисы встроенные/написанные в конфигурации… Поэтому то и приходится править файл .vrd ручками по шаблону который я описал.
          0
          Да, прощу прощения, сослепу не заметил :(
          Как вариант — можно сделать шаблон публикации на любой виндовой машине (с нужными настройками) и потом использовать этот шаблон для webinst.
            0
            вот именно для того что бы вам не приходилось поднимать два сервера, на винде публиковать и потом переносить настройки на linux, я и написал эту статью…

            Так-то в принципе толстый клиент под линукс вполне себе есть и нормально работает, можно публиковать из гуи конфигуратора линукс, но ставить ради этого графику на сервер — «не комильфо»
              0
              Зачем второй сервер?
              1. можно использовать с виндовой машин линуксовый сервер
              2. можно вообще не использовать сервер, а опубликовать файловый вариант и потом изменить только путь к базе, сохранив остальные параметры публикации
              Шаблон публикации потом можно использовать везде
                0
                Пару лет назад писал скрипт для генерации vrd. Может вам пригодится.
                  0
                  Спасибо большое, с вашего позволения добавлю в статью.
          0

          Версия 1с сервера linux пускает до 10 пользователей без серверного ключа, но эта лазейка оставлена только для разработчиков и тестирования, использовать данную возможность в коммерческих целях запрещено. Так же это не отменяет что вам все равно нужны клиентские лицензии.

            0
            Это нелегальное использование в любых целях. К разработчикам и тестированию этот момент не имеет никакого отношения. Это просто для информации, а не для спора или обсуждения :)
              0
              В свое время 1с франчайзи отвечали что использование этой «фичи» допускается если ты официальный франчайзи и для тестирования и совместной разработки 1с это допускает, поскольку на все тестовые сервера ключей не напасешся.
                0
                Вам соврали. Такого никогда не было.
                  0
                  ок… возможно… но оно работает.
                    0
                    Оно и работает. Это правда.
                    Но это использование нелицензионно. Это тоже правда.
                    И использование сервера 1с под Линуксом без ключа для 12- пользователей — никогда не являлось лицензионным для любых пользователей. Это тоже правда.
                      0
                      стоп! во-первых 10, во вторых я писал выше, что пользовательские лицензии не отменяются… что бы войти в базу вам нужен хотя бы 1 ключ на одного пользователя, я говорю про то что вам не нужен серверный ключ, который по факту перемычка позволяющий вам пользоваться sql базой… просто файловую, вы можете юзать сколько вам влезет на том количестве лицензий клиентских сколько у вас есть… хоть 50, хоть 100, хоть 500 (да-да есть ключ у 1с на 500 пользователей, есть у меня подозрение, что он хранится в 1с на Кипре под хрустальным колпаком, поскольку его цена заоблачна)… НО для использования sql базы в Windows, начиная даже с первого пользователя вам нужен СЕРВЕРНЫЙ ключ… в линукс позволяет 10 пользователям зайти без него… но не более… даже если у вас 500 пользовательский клиентский ключ…
                        0
                        еще раз, по порядку.
                        1. для работы клиент-серверной версии нужно две лицензии: клиентская и серверная
                        2. наличие какой-то одной лицензии не достаточно, чтобы работать в клиент-серверном варианте. Всегда, под любой ОС, нужны 2 лицензии: клиентская и серверная
                        3. в текущей реализации, сервер под Линукс позволяет работать с одним рабочим процессом не более, чем 12 пользователям. Это техническая особенность линуксового сервера.
                        Так вот, использование описанной технической особенности сервера (linux/до 12 пользователе/1 рабочий процесс) — это нелицензионное использование.
                        Фирма 1С никогда не обещала, что эта техническая особенность предназначены для каких-то сфер применений. Она всегда говорила то, что написано выше: серверная лицензия нужна безусловно, клиентская лицензия нужна безусловно, сервер на Линукс без ключа использовать нельзя. Именно поэтому я написал, что франч вам солгал про какие-то условия применения.
                        P.S. А есть еще и на 1 000 пользователей лицензия
                        P.P.S. А еще есть КОРП-лицензии, там еще немного сложностей прибавляется
                          0
                          То есть ты хочешь сказать, что если я создам два рабочих процесса через консоль администрирования, то сервер на линукс технически пустит 24 пользователя без серверного ключа? Я не оспариваю выше написанное, я просто интересуюсь…

                          Сервер описанный в статье выше, помимо 1с сервера, использует Postgres Pro 11 Standart который тоже не является бесплатным решением и предоставляется только в ознакомительных целях… для тестового стенда этого достаточно…
                            0
                            Начнет просить лицензию с первого пользователя
                          0
                          да-да есть ключ у 1с на 500 пользователей, есть у меня подозрение, что он хранится в 1с на Кипре под хрустальным колпаком

                          А почему на Кипре? Почему под хрустальным колпаком?)))
                          У нас у клиента три таких на 500 стояло. Но не хватало, пришлось четвертый добавить.
              0
              У меня есть вопрос. А лицензию на сервер покупали?
                0
                на тестовый стенд, нет… а вообще в оргнизации у нас купленная конечно лицензия.
                0
                1) в данной статье описано как можно ручками поправить публикации веб-сервисов…
                2) если у меня получится, то в следующей статье, я совмещю, эту, и предыдущую свою статью, о двух факторной аутентификации и покажу, как защитить публикацию базы разовым токеном…
                  0
                  берите в расчет, что после покупки, если Ваш сайт сломается, то Вас неделями будут кормить завтраками, а клиенты проходить мимо. «Мы передали Вашу заявку в разработку и не можем сказать, когда все заработает» и так день за днем… и клиенты уходят день за днем мимо нерабочего сайта.
                  image
                    0
                    При чем здесь Bitrix?

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое