Configuración de Nginx con PHP y PHP-FPM en CentOS 7

La configuración básica de Nginx en CentOS 7 es sencilla. Modifique el archivo de configuración para definir rutas de error personalizadas. Por ejemplo, establezca páginas específicas para errores 404 y 403 en un archivo 40x.html, y para errores 500 en 50x.html, permitiendo una presentación personalizada de errores.

Al instalar Nginx mediante compilación, el inicio con el sistema puede requerir un script de servicio. A continuación, se muestra un script de init.d modificado para este propósito:

#!/bin/sh
# Script de servicio para Nginx compilado
# chkconfig: - 85 15
# description: Servidor web Nginx
# processname: nginx_custom
# config: /opt/nginx/conf/nginx.conf
# pidfile: /var/run/nginx_custom.pid

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

[ "$NETWORKING" = "no" ] && exit 0

nginxBin="/opt/nginx/sbin/nginx"
servicio=$(basename $nginxBin)
configFile="/opt/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx_custom

iniciar() {
    [ -x $nginxBin ] || exit 5
    [ -f $configFile ] || exit 6
    echo -n $"Iniciando $servicio: "
    daemon $nginxBin -c $configFile
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

detener() {
    echo -n $"Deteniendo $servicio: "
    killproc $servicio -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

reiniciar() {
    probar_config || return $?
    detener
    sleep 1
    iniciar
}

recargar() {
    probar_config || return $?
    echo -n $"Recargando $servicio: "
    killproc $nginxBin -HUP
    retval=$?
    echo
}

forzar_recarga() {
    reiniciar
}

probar_config() {
    $nginxBin -t -c $configFile
}

estado() {
    status $servicio
}

estado_quieto() {
    estado >/dev/null 2>&1
}

case "$1" in
    start)
        estado_quieto && exit 0
        iniciar
        ;;
    stop)
        estado_quieto || exit 0
        detener
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        estado_quieto || exit 7
        recargar
        ;;
    force-reload)
        forzar_recarga
        ;;
    status)
        estado
        ;;
    *)
        echo $"Uso: $0 {start|stop|status|restart|reload|force-reload|configtest}"
        exit 2
esac

Guarde este script como /etc/init.d/nginx_custom, asigne permisos ejecutables y regístrelo con chkconfig:

sudo chmod 755 /etc/init.d/nginx_custom
sudo chkconfig --add nginx_custom

Posteriormente, gestione el servicio con comandos como sudo service nginx_custom start o sudo service nginx_custom stop. En algunos casos, puede ser necesario detener procesos directaemnte con sudo kill -QUIT $(cat /var/run/nginx_custom.pid).

Para el soporte de PHP, instale PHP-FPM mediante el gestor de paquetes:

sudo yum install php-fpm

Ajuste la configuración de PHP en /etc/php.ini; por ejemplo, active la directiva cgi.fix_pathinfo eliminando el punto y coma inicial si está presente. Es recomendable crear una copia de seguridad antes de modificar:

sudo cp /etc/php.ini /etc/php.ini.original
sudo sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=1/' /etc/php.ini

Edite el archivo de configuración del pool de PHP-FPM, comúnmente /etc/php-fpm.d/www.conf, para establecer el usuario y grupo adecuados. Modifique las líneas user = y group = según los permisos requeridos:

sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.original
sudo sed -i 's/^user = apache/user = mi_usuario/' /etc/php-fpm.d/www.conf
sudo sed -i 's/^group = apache/group = mi_grupo/' /etc/php-fpm.d/www.conf

Inicie el servicio PHP-FPM y configure su arranque automático:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Finalmente, reinicie Nginx para aplicar los cambios. Si utiliza el script de servicio personalizado, ejecute sudo service nginx_custom restart; de lo contrario, use sudo systemctl restart nginx si Nginx está integrado con systemd.

Verifique el funcionamianto creando un archivo de prueba PHP en el directorio raíz web y accediendo mediante el navegador.

Etiquetas: Nginx PHP PHP-FPM centos7 configuracion

Publicado el 7-5 21:37