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 simple
tipo é o padrão.
Finalmente, você provavelmente não precisará da ExecStop=
linha, pois systemd
interromperá os serviços para você. Pesquise ExecStop=
in man systemd.service
para 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 systemd
arquivos da unidade forem iguais, o problema deve estar em outro lugar. Verifique os logs que seu serviço está gerando quando tenta iniciar.