Script de inicialização do Systemd PHP Centos 7

Script de inicialização do Systemd PHP Centos 7

Eu tenho um script PHP para o qual estou tentando criar um serviço. Criei o serviço, mas não consigo iniciá-lo. O estranho é que exatamente o mesmo serviço UNIT funciona no meu outro servidor com a mesma configuração. O script PHP está configurado para ser executado daemonizado com a opção -d. O comando em si funciona bem, mas não através do systemd.

Isto é o que eu recebo

● 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...

Aqui está meu arquivo de serviço.

[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

Alguma idéia de como fazer isso funcionar?

Responder1

Se todas as configurações forem iguais em ambos os servidores, observe a permissão do soquete

Responder2

Daemonizar seu próprio processo com o sistema é um antipadrão. É recomendado remover a opção de daemonização.

Então, como você não está daemonizando, não deverá precisar da PidFile=opção.

Além disso, você não precisa incluir Type=simple, pois o simpletipo é o padrão.

Finalmente, você provavelmente não precisará da ExecStop=linha, pois systemdinterromperá os serviços para você. Pesquise ExecStop=in man systemd.servicepara verificar os detalhes de como isso se comporta ou experimente.

Em relação ao motivo pelo qual o serviço funciona no seu serviço: Deve haver alguma diferença ambiental entre os dois servidores. Se os systemdarquivos da unidade forem iguais, o problema deve estar em outro lugar. Verifique os logs que seu serviço está gerando quando tenta iniciar.

informação relacionada