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

Обновляем платформу 1С на сервере под управлением Linux

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров56K

Вступление

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

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

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

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

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

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

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

Окружение

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

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

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

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

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

[upd: добавлены картинки для установки платформы на Linux]
[upd: добавлена информация о необходимости обновления кода в коннекторах]

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

  2. Скачаем нужный дистрибутив с официального сайта. Когда перейдёте на страницу для выбора варианта своего дистрибутива вас неприветливо встретят 34 ссылки с вариантами клиентов и прочей информацией. Сейчас их хотя бы распределили по разделам. Я прочитал и разобрался в них за вас: находим раздел Linux (64-bit), выбираем "Технологическая платформа 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, я надеюсь, все осилят без подсказок. В любом случае есть достаточно статей на эту тему). Единственное, что хочется тут сказать: если вы используете подключения через V83.COMConnector (dll), установите режим "Устанавливать" напротив пункта COM connection (остальные настройки на этой картинке установите как вам надо, эта картинка взята случайно, из интернета, и не является примером для следования):

  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

    Upd 31.07.24: обратите внимание, что начиная с 2024 года (думаю после первого квартала), новые версии платформы требуют немного другую нотацию и теперь для работы сервера отладки у вас должно быть написано (обязательно с кавычками):
    Environment=SRV1CV8_DEBUG="-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

  28. Если вы где-то в коде используете коннекторы к другим ИБ, отличные от тех имен, которые вы регистрировали в системе, возможно у вас есть такие конструкции:
    Соединение = Новый COMОбъект("V83.COMConnector_8.3.22.1709");

    Если есть, то найдите и поменяйте на свежую версию коннектора. Либо используйте универсальный вариант для такого случая:
    СистемнаяИнформация = Новый СистемнаяИнформация;
    Соединение = Новый COMОбъект("V83.COMConnector_" + СистемнаяИнформация.ВерсияПриложения);

    Так же обращу внимание на две вещи:

    — Если вы забыли установить новый COM connector с платформой, его надо будет зарегистрировать строкой (от имени администратора):
    regsvr32 "C:\Program Files\1cv8\8.3.22.1709\bin\comcntr.dll"

    — Если у вас версия платформы до 8.3.22, то можно не создавать объект СистемнаяИнформация, он по умолчанию доступен из методов глобального контекста.

    Еще момент по коннекторам: если по регистрации свежего коннектора вы получаете ошибку «Недопустимая строка с указанием класса», то можете воспользоваться вот этой инструкцией.

    От себя добавлю, что после регистрации свежего коннектора через командную строку, после перехода Пуск - (печатаем в поиске) Службы компонентов -> Компьютеры -> Мой компьютер -> Приложения COM+ -> 1cv8 -> Компоненты

    нажимаем на компонент предыдущей версии ПКМ, Псевдоним... и меняем псевдоним как на картинке:

    Если создалась копия компонента, заходим снова в ее псевдоним, удаляем все кроме значимого V83.COM... создастся еще одна копия с уже нормальным названием, теперь удаляем копию, которая создалась в первый раз, удаляем старый компонент, оставляем только тот что с номером новой платформы. Совершенно очевидно поведение любой системы.


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

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

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

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/

https://spb.koderline.ru/expert/instruktsii/article-nedopustimaya-stroka-s-ukazaniem-klassa-v-1s/

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

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

Теги:
Хабы:
Всего голосов 17: ↑17 и ↓0+17
Комментарии19

Публикации

Истории

Работа

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

25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область