Вступление

Здравствуйте, меня зовут Шилин Никита и в прошлом я довольно много работал разработчиком 1С, а так же выполнял сопутствующие задачи. В настоящий момент я всё больше занимаюсь управлением командой и исполняю функции CTO на производственном предприятии. Команда у нас небольшая, отдельного девопса нет, а системный администратор не должен заниматься настройкой сервера 1С используется для других целей. Одной из задач на текущий момент для меня является администрирование сервера 1С на базе Ubuntu и его окружения.

Данная статья является, по сути, моей методичкой, которую я написал, собрав опыт настройки сервера под Linux с различных статей, официальной документации и просто покопавшись руками "вот в этом вот всем". Так как я ни разу не системный администратор и уж тем более под Linux, мне это далось с трудом, пришлось дополнительно много с чем разобраться. А мне ещё и делегировать это...

Действуя по этой методичке вы сможете обновить свою платформу в конце 2022 года, включить отладку на сервере и обновить свой веб-сервер. В отличие от большинства гайдов, работать будем с подсистемой systemd, вместо описанных везде init.d.

Проблематика

В последних дистрибутивах платформы 1С поменяла философию работы как с установочными файлами, так и с самими настройками сервера, поэтому первое с чем вы столкнетесь — это огромный ворох статей пятилетней давности, неактуальной документацией на its и множеством вопросов в духе "Почему не работает, я же все сделал по инструкции?". Плюс информация довольно сильно размазана и некоторые шаги я делал интуитивно, складывая, по аналогии, информацию из нескольких статей и пытаясь "изменить-сохранить-перезапустить" без малейшего понимания что я делаю, зачем, и надежды на то что оно вообще заработает. Спойлер: заработало.

Надеюсь, эта статья здорово сократит вам путь и снимет с вас головную боль от мысли что надо обновить платформу до последней версии, отладка отвалится, интеграции прилягут, а утром пользователи начнут звонить к вам в кровать.

Окружение

Мы используем Ubuntu 20.04.2 LTS (x64) для сервера 1С.

Вторую такую же машину для веб-сервера + Apache 2.4 для самописной интеграции с Битрикс24 (веб-хуки) и публикаций / внутренних сервисов компании.
Так же терминальный сервер для пользователей под Windows Server 2019 Standard.

Все настройки будут происходить по SSH/WinSCP. Все команды, выполняемые в консоли выполняются от имени пользователя с полными правами (root).

Больше никакой воды, переходим к инструкции.

Инструкция по обновлению

  1. Сделаем архивы всех боевых баз. Надеюсь, вы еще и проверяете что они работают. Мы проверяем.

  2. Скачаем нужный дистрибутив с сайта users.v8.1c. Когда перейдёте на страницу для выбора варианта своего дистрибутива вас неприветливо встретят 34 ссылки с вариантами клиентов и прочей информацией. Я прочитал и разобрался в них за вас: Выбираем "Технологическая платформа 1С:Предприятия (64-bit) для Linux".

  3. Создадим на сервере папку через WinSCP, загрузим в неё дистрибутив и распакуем через WinSCP.

  4. Идём в SSH-клиент, подключаемся к серверу 1С, переходим в папку с распакованным дистрибутивом, запускаем единый установочный файл:
    ./setup-full-8.3.22.1709-x86_64.run

    Выбираем русский язык, платформу не ставим, клиенты не ставим, сервер ставим, остальные средства администрирования на ваше усмотрение. Модули расширения веб-сервера нам тут тоже не понадобятся.
    Соглашаемся, соглашаемся, соглашаемся, готово.

  5. Останавливаем службу сервера текущей версии платформы:
    systemctl stop srv1cv8-8.3.21.1302@default.service

  6. Отключаем службу:
    systemctl disable srv1cv8-8.3.21.1302@

  7. Удаляем старую платформу:
    cd /opt/1cv8/x86_64/8.3.21.1302/
    ./uninstaller-full

  8. Регистрируем новую службу (тут надо использовать полный путь):
    systemctl link /opt/1cv8/x86_64/8.3.22.1709/srv1cv8-8.3.22.1709@.service

  9. Добавляем новую службу в автозагрузку:
    systemctl enable srv1cv8-8.3.22.1709@

  10. Запускаем службу и проверяем что она работает, перезагружаем сервер:
    systemctl start srv1cv8-8.3.22.1709@default.service
    systemctl status srv1cv8-8.3.22.1709@default.service
    reboot

  11. Проверяем что служба перезапустилась при старте сервера.

    На этом с сервером 1С - всё! Идём дальше.

  12. Скачиваем новую платформу для Windows и ставим её на терминальник (установку платформы на Windows, я надеюсь, все осилят без подсказок. В любом случае есть достаточно статей на эту тему).

  13. Удаляем старую платформу с терминального сервера.

  14. Перезагружаем терминальный сервер.

  15. Проверяем что все заработало, пробуем войти в наши базы.

  16. Регистрируем новую утилиту администрирования серверов и проверяем что можем запустить её, подключиться к кластеру.

  17. Проверяем что отладка не работает. Плачем. Идём настраивать отладку. Для этого надо отредактировать unit-файл службы на сервере 1С.

    Останавливаем службу:
    systemctl stop srv1cv8-8.3.22.1709@default.service


    Идём туда, где лежит файл конфигурации:
    сd /opt/1cv8/x86_64/8.3.22.1709/

    Открываем его:
    nano srv1cv8-8.3.22.1709@.service

    Ищем строку Environment=SRV1CV8_DEBUG= и добавляем в конец -http чтобы получилось:
    Environment=SRV1CV8_DEBUG=-http

    Тут стоит уточнить: вы можете использовать флаг -tcp вместо -http, но у нас стоит NAT и добиться отладки по tcp мне пока не удалось.
    Сохраняем, выходим.

    Перечитываем новую конфигурацию:
    systemctl daemon-reload

    Запускаем службу:
    systemctl start srv1cv8-8.3.22.1709@default.service

    Проверяем статус
    systemctl status srv1cv8-8.3.22.1709@default.service

    Должны увидеть следующее:
    CGroup: /system.slice/system-srv1cv8\x2d8.3.22.1709.slice/srv1cv8-8.3.22.1709@default.service
    ├─3266 /opt/1cv8/x86_64/8.3.22.1709/ragent -d /home/usr1cv8/.1cv8/1C/1cv8 -port 1540 -regport 1541 -range 1560:1591 -seclev 0 -pingPeriod 1000 -pingTimeout 5000 -http

    ├─3296 /opt/1cv8/x86_64/8.3.22.1709/rmngr -port 1541 -host server1c.local -range 1560:1591 -d /home/usr1cv8/.1cv8/1C/1cv8/ -debug -http -clstid bd0a303e-c762-417f-b310-dc3aa2e80fca

    ├─3400 /opt/1cv8/x86_64/8.3.22.1709/dbgs --port=1550

    └─3401 /opt/1cv8/x86_64/8.3.22.1709/rphost -range 1560:1591 -reghost server1c.local -regport 1541 -pid decb62bb-5dbe-42b7-a6c6-bd08c442d996 -debug -http

    Тут мы хотим видеть флаги -http, -debug, а так же процесс сервера отладки dbgs.

  18. Проверяем что отладка запустилась — ставим точку останова в процедуре ПриСозданииНаСервере() в управляемой форме и запускаем её.

  19. Танцуем, потому что мы великолепны!

  20. Идём на веб сервер. Повторяем историю с WinSCP, заливаем дистрибутив, распаковываем, переустанавливаем файлы платформы для веб-сервера.
    Выбираем русский язык, ставим платформу и модули расширения веб-сервера, от остального отказываемся.

  21. Удаляем старую платформу:
    cd /opt/1cv8/x86_64/8.3.21.1302/
    ./uninstaller-full

  22. Останавливаем сервис апача:
    service apache2 stop

  23. Идём в конфигурационный файл и меняем ссылки на файлы расширения веб-сервера:
    cd /etc/apache2/
    nano apache2.conf

    Находим строку
    LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.21.1302/wsap24.so"

    и меняем в ней версию платформы на 8.3.22.1709.
    Сохраняем, закрываем.

  24. Запускаем сервис, проверяем что запустился без ошибок:
    service apache2 start
    service apache2 status

  25. Проверяем что интеграция взлетела. Для этого обновим комментарий в тестовой сделке в битриксе и проверим что он обновится в 1С.

  26. Удаляем установочные файлы платформы на сервере, на веб-сервере и на терминальнике.

  27. После того, как 1С перешла на работу с единым файлом для установки всего-всего, к нам на сервер заодно будет установлен gnome, который нам, например не нужен. Отказаться нельзя. Поэтому мы удаляем gnome, который поставился вместе с платформой:
    apt purge gnome-shell gnome-control-center gnome-keyring
    apt autoremove

Вот и всё! Можно возвращаться к работе.

Заключение, благодарности.

Для подготовки я использовал материалы следующих статей:

https://interface31.ru/tech_it/2021/10/edinyy-distributiv-1c-dlya-linux-server.html

https://infostart.ru/1c/articles/805266/

https://rarus.ru/publications/20210927-ot-ekspertov-ustanovka-1c-linux-496320/

Выражаю благодарность авторам, за то что они собрали информацию по работе с подсистемой systemd, так как большинство мануалов, в том числе официальных, написано для традиционной подсистемы init.

Дополнения и уточнения в комментариях приветствуются.

Комментарии (12)


  1. mgis
    07.01.2023 00:08

    Спасибо большое, очень подробное руководство.
    Сам пока на линукс переходить не рискнуо в качестве ОС для сервера 1с.
    Но на новых проектах непременно буду пробовать.


  1. evros
    07.01.2023 00:30

    Подскажу.

    Вам бы пополнить статью настройкой файрвола в части доступа к кластеру с доверенного VLAN/хостов. Доступ клиента с нужных сетей.

    Мануал по резке логов баз - скрипт/ручной привод.

    Запуск службы из-под специальной учетки.

    Чистка темпов 1С, если падают обмены или иной нюанс.


  1. Zzzz9
    07.01.2023 02:10

    Выбираем русский язык, платформу не ставим, клиенты не ставим, сервер ставим,

    Можно пояснить, что же всё-таки ставим, чем платформа от сервера отличается? И как выбрать что ставим, что не ставим, графики нет же, насколько я понял.

    Создадим на сервере папку через WinSCP, загрузим в неё дистрибутив и распакуем через WinSCP.

    Это тоже для чего? Можно просто скопировать scp?


    1. RealSaniok
      07.01.2023 16:19

      И как выбрать что ставим, что не ставим, графики нет же, насколько я понял

      там консольный визард, но можно флагами задать всё ответы


      1. Zzzz9
        07.01.2023 19:34

        Это второй вопрос, не написано какой он ставит сервер, если платформу не устанавливает?


    1. ElvenSailor
      09.01.2023 17:09

      .


  1. Cyber100
    07.01.2023 04:07

    вероятно, автор ошибся, удаляя платформу дважды(шаги 7 и 21). да и удалять ее для чего, не понятно.


  1. Borisskin
    07.01.2023 04:07
    +2

    Дополните свои знания из следующих статей и легче будет при переходе на новую платформу:

    Итого:

    1. Поставили новую платформу

    2. Удалили симлинк к старой платформе и создали симлинк к новой платформе с тем же именем

    3. Рестартовали службы 1c, ras, apache

    4. Удалили старую платформу


  1. FLU911
    07.01.2023 19:23

    Спасибо. Скоро придется на линукс переезжать. Как раз в тему.


  1. 13werwolf13
    09.01.2023 07:09

    тоесть мало того что разрабам 1С не хватило ума сделать репозиторий пакетов, они теперь совсем от пакетов отказались в пользу .run самораспаковывающихся скриптов? наркоманы!! слава бг я больше не пересекаюсь с OdinAss..


    1. hokum13
      09.01.2023 14:48

      Сегодня не пересекаетесь, а завтра? Я тоже с 2015-го 1С не касался, и вот я здесь...

      .run это конечно наркомания, но давайте честно, это очень популярный формат для проприетарного софта. Более того, не забывайте о том, на кого ориентирован софт. Это, в основном, не суровые devOps-ы, а "админы на все руки", которые и 1С поддерживают, и сайт (визитку), и AD, и почту... И им все эти холивары про "true linux-way" до лампочки. А нет спроса - не будет и предложения. Вы же не жалуетесь на то, что 1С-сервер не доступен в M$-store?

      Да и установка эта штучная. В лучшем случае речь идёт о нескольких серверах, даже не о десятках.


      1. 13werwolf13
        09.01.2023 15:04

        Сегодня не пересекаетесь, а завтра

        и завтра не буду, и это принципиально

        но давайте честно, это очень популярный формат для проприетарного софта

        популярный не значит правильный, удобный, хороший, безопасный, и так далее. винда тоже самая популярная ОС, но никто в здравом уме не назовёт её хоть сколько нибудь адекватной операционкой

        И им все эти холивары про "true linux-way" до лампочки.

        что является их личным недостатком и к делу отношения не имеет

        Вы же не жалуетесь на то, что 1С-сервер не доступен в M$-store

        не жалуюсь только потому что мне в общем-то плевать на M$ и всё что с ним связано

        В лучшем случае речь идёт о нескольких серверах, даже не о десятках.

        а я вот знаю конторы которые имеют по нескольку тысяч клиентских 1С серверов и регулярно делают новые под новых клиентов или тестирование чего либо, и если раньше они делали локальное репо с пакетами которое наполнялось руками то теперь уровень костылизма вырос до небес как я предполагаю