Почему после обновления 1С на Linux запускается старая версия платформы и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При обновлении платформы «1С:Предприятие» до версии 8.3.18 и выше на операционных системах Linux многие администраторы сталкиваются с неожиданным поведением: после успешной установки новых пакетов система продолжает работать на старой версии (например, 8.3.17). Давайте разберемся, в чем заключается причина такого поведения и как правильно настроить сервер для работы с новой версией.

Выясняем причину проблемы

Начиная с версии 8.3.18, разработчики изменили архитектуру установки платформы в Linux. Теперь инсталлятор не пытается перезаписать существующую версию, а устанавливает новую версию параллельно в каталог /opt/1C/v8.3.18.хххх/. Системный менеджер служб (systemd или init.d) при этом остается настроенным на запуск старого исполняемого файла. Именно поэтому обновление «не подхватывается» автоматически.

Пошаговое руководство по настройке запуска новой версии

Чтобы перевести сервер на новую платформу корректно, необходимо вручную создать новый скрипт запуска. Рассмотрим процесс по этапам:

  1. Копирование скрипта запуска: Найдите файл srv1cv83 в каталоге установленной версии 8.3.18. Скопируйте его в системный каталог /etc/init.d/. Важно дать ему уникальное имя, например, srv8-3-18-1128, чтобы избежать конфликтов со старой версией.
  2. Настройка конфигурационного файла: Скопируйте конфигурационный файл srv1cv83.conf из папки с новой версией платформы в каталог /etc/default/ (для дистрибутивов Debian/Ubuntu). Переименуйте его так, чтобы имя файла в точности соответствовало имени вашего нового скрипта запуска (например, srv8-3-18-1128.conf).
  3. Редактирование параметров: Откройте созданный конфигурационный файл. Убедитесь, что пути в переменных SRV1CV8_BINDIR и других параметрах указывают на корректную директорию /opt/1C/v8.3.18.хххх/.
  4. Регистрация службы: Чтобы система увидела новую службу, выполните команду регистрации в автозагрузке:
    
    update-rc.d srv8-3-18-1128 defaults
    service srv8-3-18-1128 start
    

Тонкости настройки и решение ошибок

При настройке параллельных служб или при использовании нестандартных имен пользователей могут возникнуть специфические проблемы. Рассмотрим их подробнее.

Корректировка скрипта запуска: Если вы используете имя пользователя для сервера 1С, которое длиннее 8 символов, стандартная функция getRagentPid() в скрипте может не найти процесс сервера. Это происходит из-за особенностей работы утилиты ps, которая обрезает имена пользователей. Исправьте это в скрипте запуска, изменив параметр поиска:


# Вместо user= используйте расширенный формат
ps -eo user:15,pid,args | grep ...

Особенности systemd: Если ваш дистрибутив использует systemd, создание файлов в /etc/init.d/ может быть недостаточно. В этом случае необходимо создать юнит-файл в /lib/systemd/system/, описывающий запуск процесса ragent с нужными ключами. Это позволит гибко управлять экземплярами сервера, назначая им разные порты (например, 1540 и 1640), если требуется временная работа обеих версий параллельно.

Рекомендации по безопасности процесса

Разберем, почему «метод прямой перезаписи» (копирование файлов 18-й версии поверх 17-й) является плохой практикой:

Всегда проверяйте наличие прав суперпользователя (root) перед выполнением команд настройки. После внесения изменений в скрипты всегда выполняйте перезагрузку конфигурации демонов, чтобы убедиться, что сервер стартует корректно при следующей перезагрузке ОС.

← На главную