LINUX.ORG.RU
ФорумAdmin

Ubuntu 18.04, systemd, php как служба. При рестарте системы службы не созданы

 ,


1

2

Приветствую. Имеется Ubuntu 18.04.4 LTS, systemd 237. Требуется создать 2 php сервиса. Они идентичны, приведу .service одного:

[Unit]
Description=MQTT Reader Service
Requires=mosquitto.service rabbitmq-server.service

[Service]
User=demonmqtt
Type=simple
TimeoutSec=5
ExecStart=/usr/bin/php7.2 -f /var/www/demonmqtt/data/www/site.com/mqtt_reader_daemon.php
KillMode=process
StandardOutput=file:/var/www/demonmqtt/data/www/site.com/logs/mqtt-reader.log
StandardError=file:/var/www/demonmqtt/data/www/site.com/logs/mqtt-reader-error.log
Restart=on-failure
RestartSec=30s

[Install]
WantedBy=default.target

Устанавливаю скриптом, для простоты:

#!/usr/bin/env bash
DIR=`dirname "$(readlink -f "$0")"`

sudo ln -s $DIR/mqtt-reader.service -t /etc/systemd/system

sudo systemctl enable mqtt-reader
sudo systemctl daemon-reload
sudo systemctl start mqtt-reader
systemctl status mqtt-reader

Тут всё хорошо, выдаёт:

May 15 11:10:07 111.66.15 systemd[1]: Started MQTT Performer Service.
● mqtt-reader.service - MQTT Reader Service
   Loaded: loaded (/var/www/demonmqtt/data/www/site.com/service/mqtt-reader.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-05-15 11:10:07 EEST; 6s ago
 Main PID: 3841 (php7.2)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/mqtt-reader.service
           └─3841 /usr/bin/php7.2 -f /var/www/demonmqtt/data/www/site.com/mqtt_reader_daemon.php

May 15 11:10:07 111.66.15 systemd[1]: Started MQTT Reader Service.

Но если перезагрузить сервер, то службы не стартуют. Если попытаться стартануть вручную, выдаёт что служба не найдена:

root@111 ~ # systemctl start mqtt-reader
Unit mqtt-reader.service could not be found.

При этом линки на службы уже созданы:

root@111 ~ # ls /etc/systemd/system -l
...
lrwxrwxrwx 1 root root   72 Sep 23  2019 mqtt-reader.service -> /var/www/demonmqtt/data/www/site.com/service/mqtt-reader.service

Видно, что служба зависит от двух других - mqtt и rabbit-а. В syslog видно, что обе успешно стартуют. Но нет ни намёка на попытку старта mqtt-reader.service. Подскажите, куда копать, что делать?

DIR=`dirname "$(readlink -f "$0")"`

sudo ln -s $DIR/mqtt-reader.service -t /etc/systemd/system
systemctl enable /path/to/mqtt-reader.service

Если что-то из «/var/www/demonmqtt/data/www/site.com/service/» лежит на отдельном разделе, то лучше скопируй файл в /etc и пропиши дополнительно зависимость от «local-fs.target» или «remote-fs.target», если монтируется из сети.

У меня был похожий глюк с gitea и service-файлом на другом разделе. После ребута сервис не стартовал. Скопировал файл и всё заработало.

Radjah ★★★★★
()
Ответ на: комментарий от Infra_HDC

Дописал в секцию [Service]

PIDFile=/var/run/mqtt-reader-daemon.pid

далее systemctl daemon-reload и рестарт процесса. Служба запустилась, PID не появился. Ребутнулся, опять Unit mqtt-reader.service could not be found. Происталировался, PID так и не появился.

ubuntoid1
() автор топика
Ответ на: комментарий от ubuntoid1

systemd не любит симлинки в нестандартные места. Положи свои сервисы в /etc/systemd/system и тестируй работу.
Если так хочется симлинки по нестандартным путям, используй systemctl link

bass ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.