С выходом версии платформы 1С:Предприятие 8.3.18 системные администраторы столкнулись с существенными изменениями в процессе установки. Разработчики реализовали возможность параллельной установки нескольких версий сервера на одну машину Linux. Однако это привело к тому, что привычные скрипты автозапуска (srv1cv8) и файлы конфигурации переименовали или вовсе убрали из стандартных путей /etc/init.d/ и /etc/sysconfig/. В этой статье мы подробно разберем, как правильно настроить автоматический запуск сервера 1С "по фен-шую", учитывая особенности современных дистрибутивов и новые механизмы платформы.
Проанализируем архитектурные изменения. Ранее при установке rpm или deb пакетов инсталлятор автоматически создавал скрипт инициализации. Начиная с версии 8.3.18, файлы для запуска теперь "спрятаны" внутри директории конкретной версии платформы, например, в /opt/1cv8/x86_64/8.3.18.1128/. Это сделано для того, чтобы вы могли запускать одновременно кластер версии 8.3.18 и, например, 8.3.25, не создавая конфликтов имен сервисов. Мы выясним, как адаптировать систему под эти изменения для двух наиболее популярных семейств дистрибутивов: RedHat/CentOS и Debian/Ubuntu.
Если вы привыкли использовать старый стиль управления сервисами или ваша операционная система настроена на работу с init.d, рассмотрим пошагово процесс ручной регистрации службы. Посмотрим на примере CentOS и Ubuntu.
srv1cv83 (скрипт запуска) и srv1cv83.conf (параметры окружения). Обычно они лежат в /opt/1cv8/x86_64/<номер_версии>/.
sudo cp /opt/1cv8/x86_64/8.3.18.1128/srv1cv83 /etc/init.d/srv1cv83
sudo chmod +x /etc/init.d/srv1cv83
/etc/sysconfig/, убирая расширение .conf.
sudo cp /opt/1cv8/x86_64/8.3.18.1128/srv1cv83.conf /etc/sysconfig/srv1cv83
/etc/default/, также без расширения.
sudo cp /opt/1cv8/x86_64/8.3.18.1128/srv1cv83.conf /etc/default/srv1cv83
chkconfig --add srv1cv83 и chkconfig srv1cv83 on.update-rc.d srv1cv83 defaults.Рассмотрим более правильный и современный способ управления через systemd. В новых версиях 1С (особенно в 8.3.20+) часто поставляются готовые юниты или шаблоны юнитов с символом @ в названии. Это позволяет управлять конкретными экземплярами сервера.
Разберем пример настройки, если у вас есть файл srv1cv83@.service. Символ @ означает, что это шаблонный юнит. Выясним, как его активировать:
cp /opt/1cv8/x86_64/8.3.25.1257/srv1cv8-8.3.25.1257@.service /etc/systemd/system/.systemctl daemon-reload.systemctl enable srv1cv83@8.3.25.1257.systemctl start srv1cv83@8.3.25.1257.Важный момент: если вы используете обычный файл без шаблона (без символа @), просто переименуйте его в srv1cv83.service и управляйте им стандартными командами systemctl enable/start. Не забудьте проверить права доступа к исполняемым файлам в /opt/1cv8, они должны принадлежать пользователю usr1cv8.
Проанализируем ситуацию, когда программистам требуется отладка на сервере. В init.d скриптах это решается правкой файла конфигурации. Откроем файл /etc/default/srv1cv83 (для Ubuntu) или /etc/sysconfig/srv1cv83 (для CentOS) и раскомментируем строку:
SRV1CV8_DEBUG=1
Если же вы используете systemd, "фен-шуйный" метод — это использование override файла, чтобы ваши правки не затерлись при обновлении платформы:
systemctl edit srv1cv83@8.3.25.1257.
[Service]
Environment=SRV1CV8_DEBUG=1
systemctl restart srv1cv83@8.3.25.1257.Часто при ручном копировании скриптов из папки /opt возникает ошибка старта из-за неверных путей. Скрипт srv1cv83 внутри себя содержит логику поиска бинарных файлов. Проанализируем причину: если вы переименовали папку установки (например, вместо /opt/1cv8 использовали /opt/1C) или пытаетесь запустить скрипт от одной версии для папки другой версии — он не найдет ragent.
Решение: всегда проверяйте переменную G_BINDIR внутри скрипта или убедитесь, что структура каталогов соответствует стандартной /opt/1cv8/x86_64/.... Также убедитесь, что в системе установлены все необходимые библиотеки, такие как libicu и fontconfig, иначе ragent может аварийно завершаться сразу после старта, а система будет выдавать общую ошибку service failed to start.
Начиная с версии 8.3.18, 1С продвигает использование утилиты ring. Она позволяет регистрировать экземпляры сервера в системе программно. Рассмотрим логику её работы: при установке через новый .run инсталлятор, утилита сама прописывает нужные пути и создает юниты в systemd. Если автоматика не сработала, рекомендуется ознакомиться с командой /opt/1cv8/common/ring 1c-enterprise-instance create, которая позволяет создать настроенный экземпляр сервера с указанием портов и путей к данным. Это наиболее перспективный метод управления, который минимизирует ручное копирование файлов скриптов.
Подведем итог: для версий 8.3.18+ основным инструментом управления становится systemctl. Использование старых init.d скриптов возможно, но требует ручного копирования файлов из каталога установки в системные папки /etc/init.d и /etc/default (или /etc/sysconfig). Всегда проверяйте права пользователя usr1cv8 на домашнюю директорию и папку с данными, так как при обновлении платформы права иногда могут сбиваться.