Назад | Перейти на главную страницу

Системный скрипт запуска 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

Есть идеи, как заставить это работать?

Если все настройки одинаковы на обоих серверах, посмотрите разрешение сокета

Демонизация собственного процесса с помощью системы - это антипаттерн. Рекомендуется удалить параметр демонизации.

Тогда, поскольку вы не демонизируете, вам не понадобится PidFile= вариант.

Кроме того, вам не нужно включать Type=simple, поскольку simple Тип по умолчанию.

Наконец, вам, скорее всего, не понадобится ExecStop= линия, как systemd остановит для вас услуги. Ищи ExecStop= в man systemd.service чтобы узнать подробности о том, как это ведет себя, или попробовать.

Относительно того, почему служба работает с вашей службой: между двумя серверами должна быть какая-то разница в среде. Если systemd unit файлы такие же, проблема должна быть в другом месте. Проверьте журналы, которые ваша служба создает при попытке запуска.