У меня есть PHP-скрипт, для которого я пытаюсь создать службу. Я создал службу, но не могу ее запустить. Странно, что точно такой же UNIT-сервис работает на моем другом сервере с такой же настройкой. PHP-скрипт настроен на запуск в демонизированном режиме с помощью ключа -d. Сама команда работает нормально, но не через systemd.
Вот что я получаю
● serverio.service - Socket Server Service
Loaded: loaded (/etc/systemd/system/multi-user.target.wants/serverio.service)
Active: inactive (dead) since Wed 2017-01-18 23:41:49 UTC; 2s ago
Process: 22921 ExecStop=/usr/bin/php /opt/sockets/server.php stop (code=exited, status=0/SUCCESS)
Process: 22917 ExecStart=/usr/bin/php /opt/sockets/server.php start -d (code=exited, status=0/SUCCESS)
Main PID: 22917 (code=exited, status=0/SUCCESS)
Jan 18 23:41:49 hostname systemd[1]: Started SocketIO Server Service.
Jan 18 23:41:49 hostname systemd[1]: Starting SocketIO Server Service...
Вот мой файл обслуживания.
[Unit]
Description=SocketIO Server Service
[Service]
Type=simple
PIDFile=/opt/sockets/phpio.pid
ExecStart=/usr/bin/php /opt/sockets/server.php start -d
ExecStop=/usr/bin/php /opt/sockets/server.php stop
[Install]
WantedBy=multi-user.target
Есть идеи, как заставить это работать?
решение1
Если все настройки одинаковы на обоих серверах, то проверьте разрешение сокета.
решение2
Демонизация собственного процесса с помощью системы — это антишаблон. Рекомендуется удалить опцию демонизации.
Тогда, поскольку вы не демонизируете, эта PidFile=
опция вам не нужна.
Кроме того, вам не нужно включать Type=simple
, так как simple
это тип по умолчанию.
Наконец, вам, вероятно, не нужна линия ExecStop=
, так как systemd
она остановит обслуживание для вас. Найдите ExecStop=
в , man systemd.service
чтобы проверить подробности о том, как это ведет себя, или попробуйте.
Относительно того, почему служба работает на вашем сервисе: Должно быть, есть некоторая разница в среде между двумя серверами. Если systemd
файлы юнитов одинаковы, проблема должна быть в другом месте. Проверьте журналы, которые ваша служба генерирует при попытке запуска.