Создание сервис процесса в Ubuntu(запуск в фоновом режиме)
В качестве примера выступает сервис для open-webui. 1. Подключаемся к нужному серверу по ssh и вписываем: sudo nano /etc/systemd/system/название сервиса. В нашем случае open-webui.service(/etc/systemd/system/open-webui.service) 2. Вписываем следующие: [Unit] Description=Open WebUI Service After=network.target
[Service] ExecStart=/bin/bash -c "source /home/srv/miniconda3/bin/activate open-webui-env && open-webui serve" Restart=always User=srv Environment="PATH=/home/srv/miniconda3/envs/open-webui/bin/open-webui serve:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" Environment="WEBUI_SECRET_KEY_FILE=/home/srv/.webui_secret_key" WorkingDirectory=/home/srv
[Install] WantedBy=multi-user.target
Расшифровка: Description: Описание сервиса для администратора. After=network.target: Говорит systemd запускать этот сервис после того, как будет готова сеть.
ExecStart: /bin/bash -c "...": Запускает команду в bash. source /home/srv/miniconda3/bin/activate open-webui-env: Активирует виртуальное окружение Conda с именем open-webui-env. && open-webui serve: После активации окружения запускает команду open-webui serve.
Restart=always: Сервис будет автоматически перезапущен User=srv: Указывает, от имени какого пользователя будет работать сервис Environment: Путь где искать исполняемый файл
Environment="WEBUI_SECRET_KEY_FILE=/home/srv/.webui_secret_key" - переменная с указанием закрытого ключа
WorkingDirectory=/home/srv - рабочая директория из которой происходит запуск приложения
WantedBy=multi-user.target — означает, что сервис будет запускаться на многопользовательском уровне.
Далее сохраняем: 1. sudo systemctl daemon-reload 2. systemctl enable open-webui 3. systemctl start open-webui