Script de inicio PHP Systemd Centos 7

Script de inicio PHP Systemd Centos 7

Tengo un script PHP para el que estoy intentando crear un servicio. Creé el servicio pero no puedo iniciarlo. Lo extraño es que exactamente la misma UNIDAD de servicio funciona en mi otro servidor con la misma configuración. El script PHP está configurado para ejecutarse demonizadamente con el modificador -d. El comando en sí funciona bien pero no a través de systemd.

esto es lo que obtengo

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

Aquí está mi archivo de servicio.

[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

¿Alguna idea de cómo hacer que esto funcione?

Respuesta1

Si todas las configuraciones son iguales en ambos servidores, mire el permiso del socket

Respuesta2

Demonizar su propio proceso con el sistema es un antipatrón. Se recomienda eliminar la opción de demonización.

Entonces, como no estás demonizando, no deberías necesitar la PidFile=opción.

Además, no es necesario incluirlo Type=simple, ya que el simpletipo es el predeterminado.

Finalmente, es probable que no necesites la ExecStop=línea, ya que systemdlos servicios se detendrán por ti. Busque ExecStop=in man systemd.servicepara comprobar los detalles sobre cómo se comporta o pruébelo.

En cuanto a por qué el servicio funciona en su servicio: debe haber alguna diferencia ambiental entre los dos servidores. Si los systemdarchivos de la unidad son los mismos, el problema debe estar en otra parte. Verifique los registros que genera su servicio cuando intenta iniciarse.

información relacionada