GNU/Linux >> Tutoriales Linux >  >> Linux

Inicie PHP-FPM con la opción raíz automáticamente

En los sistemas systemd, es posible que deba configurar esto a través de systemd en lugar de scripts de inicio V del sistema

Los pasos a continuación están probados y funcionan en Ubuntu 16.04 LTS. Y este es el culpable de los scripts de inicio redirigidos:

/lib/lsb/init-functions.d/40-systemd

1. Editar la configuración de su grupo de php-fpm, p. /etc/php/7.0/fpm/pool.d/www.conf y configure root como usuario/grupo como root

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = root
group = root

2. Editar /lib/systemd/system/php7.0-fpm.service y agregue -R al ExecStart variable para permitir que el servicio se ejecute como root

ExecStart=/usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf -R

3. Recargar la configuración

$ systemctl daemon-reload

4. Iniciar el servicio

$ systemctl start php7.0-fpm

5. Compruébalo

$ ps auwx | grep php
root     32061  0.0  0.0 221680 26084 ?        Ss   16:59   0:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
root     32063  0.0  0.0 221680  4992 ?        S    16:59   0:00 php-fpm: pool www
root     32064  0.0  0.0 221680  4992 ?        S    16:59   0:00 php-fpm: pool www

Finalmente encontré una solución. Resultó que Ubuntu estaba usando systemd para iniciar y reiniciar PHP-FPM y por lo tanto ignoraba el init.d archivos.

Si experimenta problemas con los ajustes a init.d los archivos se ignoran y está en Ubuntu 15.04 o posterior, es muy probable que el servicio tenga un systemd archivo de servicio también.

Entonces, la solución para mi problema:mi sistema tiene un archivo llamado /lib/systemd/system/php7.0-fpm.service , que es utilizado por systemd . Con el comando cat /lib/systemd/system/php7.0-fpm.service puede ver el contenido del archivo de servicio. Reemplazas php7.0-fpm.service con el nombre de su archivo de servicio. El archivo de servicio de PHP7.0-FPM se ve así:

[Unit]
Description=The PHP 7.0 FastCGI Process Manager
Documentation=man:php-fpm7.0(8)
After=network.target

[Service]
Type=notify
PIDFile=/run/php/php7.0-fpm.pid
ExecStart=/usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

En mi caso necesitaba ajustar el ExecStart regla. No tenemos que editar este archivo, porque systemd ofrece una forma de anular reglas específicas. El comando sudo systemctl edit php7.0-fpm.service abrirá un editor donde puede ingresar esas reglas. Simplemente ingrese la(s) sección(es) de la(s) regla(s) que desea ajustar y guarde el archivo. En mi caso se ve así:

[Service]
ExecStart=
ExecStart=/usr/sbin/php-fpm7.0 --allow-to-run-as-root --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf

Asegúrese de restablecer primero la regla que desea editar; de lo contrario, se ejecutarán ambas reglas. También asegúrese de ejecutar sudo systemctl daemon-reload después de guardar este archivo. En mi caso, ahora se permite ejecutar grupos como root en Ubuntu 16.04.


Linux
  1. Administre múltiples instancias de servicio con systemctl

  2. ¿Iniciar Tomcat al inicio con privilegios administrativos?

  3. ¿El servicio Systemd no iniciará Nodejs?

  4. Cómo iniciar el servicio NTP con Slewing habilitado en Linux

  5. PHP-FPM no se inicia automáticamente después de reiniciar

Cómo iniciar, detener o reiniciar Apache

Cómo iniciar, detener o reiniciar Nginx

Usando PHP-FPM con Apache en Ubuntu 16.04

Administrar cgroups con systemd

Primeros pasos con systemctl

Cómo configurar PHP-FPM con NGINX