Системный PHP-скрипт запуска Centos 7

Системный PHP-скрипт запуска Centos 7

У меня есть 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файлы юнитов одинаковы, проблема должна быть в другом месте. Проверьте журналы, которые ваша служба генерирует при попытке запуска.

Связанный контент