При обновлении платформы «1С:Предприятие» до версии 8.3.18 и выше на операционных системах Linux многие администраторы сталкиваются с неожиданным поведением: после успешной установки новых пакетов система продолжает работать на старой версии (например, 8.3.17). Давайте разберемся, в чем заключается причина такого поведения и как правильно настроить сервер для работы с новой версией.
Начиная с версии 8.3.18, разработчики изменили архитектуру установки платформы в Linux. Теперь инсталлятор не пытается перезаписать существующую версию, а устанавливает новую версию параллельно в каталог /opt/1C/v8.3.18.хххх/. Системный менеджер служб (systemd или init.d) при этом остается настроенным на запуск старого исполняемого файла. Именно поэтому обновление «не подхватывается» автоматически.
Чтобы перевести сервер на новую платформу корректно, необходимо вручную создать новый скрипт запуска. Рассмотрим процесс по этапам:
srv1cv83 в каталоге установленной версии 8.3.18. Скопируйте его в системный каталог /etc/init.d/. Важно дать ему уникальное имя, например, srv8-3-18-1128, чтобы избежать конфликтов со старой версией.srv1cv83.conf из папки с новой версией платформы в каталог /etc/default/ (для дистрибутивов Debian/Ubuntu). Переименуйте его так, чтобы имя файла в точности соответствовало имени вашего нового скрипта запуска (например, srv8-3-18-1128.conf).SRV1CV8_BINDIR и других параметрах указывают на корректную директорию /opt/1C/v8.3.18.хххх/.
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-й) является плохой практикой:
dpkg или rpm не знает об изменениях).Всегда проверяйте наличие прав суперпользователя (root) перед выполнением команд настройки. После внесения изменений в скрипты всегда выполняйте перезагрузку конфигурации демонов, чтобы убедиться, что сервер стартует корректно при следующей перезагрузке ОС.