¿Cuál es la forma más fácil de habilitar PHP en nginx?

131

¿Cuál es la forma más fácil de habilitar PHP en nginx en Ubuntu 12.04?

La mejor solución es la que requiere un trabajo mínimo, idealmente solo la instalación de un paquete :)

Sorin
fuente

Respuestas:

141

El siguiente método lo ayudará a comenzar rápidamente en Ubuntu 12.04:

Instalar las dependencias:

sudo apt-get install php5-common php5-cli php5-fpm

Instalar nginx:

sudo apt-get install nginx

Inicie nginx:

sudo service nginx start

Pruebe que funciona (debería ver "¡Bienvenido a nginx!")

sudo service nginx stop

En la configuración de su sitio nginx (/ etc / nginx / sites-available / default), modifique la línea en la sección del servidor {}

index index.html index.htma index index.php index.html index.htm.

Descomente las líneas en la sección del servidor {} comenzando con

listen para ipv4 / ipv6 ambos.

Desplázate hacia abajo hasta donde dice "ubicación ~ .php {" y descomenta las líneas para que se vea así:

location ~ \.php$ {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi_params;
}

sudo service php5-fpm restart sudo service nginx restart

Su raíz web predeterminada se encuentra en / usr / share / nginx / www (según el archivo de configuración). (Verroot /usr/share/nginx/www;

(Nota: Para Ubuntu 12.10 o más reciente, tendrá que reemplazar la fastcgi_pass 127.0.0.1:9000;línea con esto para que funcione: fastcgi_pass unix:/var/run/php5-fpm.sock;)

papashou
fuente
1
Como nota al margen, puede hacer que 12.04 use un socket UNIX como 12.10+ lo hace editando /etc/php5/fpm/pool.d/www.confy cambiando la línea de escucha listen = /var/run/php5-fpm.sock, y luego usando la línea @ThomasW. mencionado.
Powerlord
@Powerlord, la configuración predeterminada de NGINX tiene ambas líneas y explica la diferencia entre las dos, en lugar de tener que cambiar la forma en que se ejecuta PHP, solo puede cambiar la línea de configuración en NGINX más rápido, y todo funciona.
Thomas Ward
@ThomasW. La descripción de configuración predeterminada de NGINX de ambas líneas también es incorrecta en 12.04. php5-fpm requiere el primer método debido a cómo se configura php5-fpm en 12.04. No cambió al segundo método hasta las 12.10. Para hacer que php5-fpm funcione con nginx como se documenta, debe modificar la página www.conf de fpm como se menciona en mi mensaje anterior.
Powerlord
@Powerlord Tienes razón, es un problema, uno que se puede solucionar cambiando la documentación en el archivo de configuración predeterminado. Vea este error que creé sobre este tema . Todavía no he tenido la oportunidad de proponer una corrección de errores.
Thomas Ward
1
Esto no me funciona en ubuntu 14.04. nginx dice "Se produjo un error, no se encuentra la página que está buscando", ¿qué hacer?
user3459110
46

EDITAR: Como señaló Matt Browne , puede interesarle esta publicación más reciente:
Cómo instalar Linux, Nginx, MySQL, PHP (pila LEMP) en Ubuntu 16.04


La respuesta de papashou es correcta en el antiguo Ubuntu 12.04. Desde Ubuntu 12.10, la configuración es un poco diferente. Aquí esta lo que hice:

Instalar en pc

sudo apt-get install nginx php5-fpm

Habilitar PHP

Descomente las siguientes líneas en el archivo de configuración /etc/nginx/sites-available/default

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

Iniciar (o reiniciar)

sudo service php5-fpm restart
sudo service nginx restart

Prueba nginx

Al abrir este enlace http://localhostdebería aparecer "¡Bienvenido a nginx!"

Prueba php

Crea un archivo php:

  • La ruta de destino es la salida de

    awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default
    

    p.ej /usr/share/nginx/www

  • Escribe un info.phparchivo con:

    echo '<?php phpinfo(); ?>' | \
        sudo tee /usr/share/nginx/www/info.php
    

    o como una sola línea

    echo '<?php phpinfo(); ?>' | \
        sudo tee "$(awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default)/info.php"
    

La apertura http://localhost/info.phpdebería mostrar la página de información de PHP.

olibre
fuente
3
Gracias por esto. Aquí hay otro enlace útil: digitalocean.com/community/tutorials/… . Y tenga en cuenta que si desea instalar MySQL, también deberá ejecutarlo apt-get install php5-mysql(además de instalar MySQL).
Matt Browne el
1
Hay una nueva versión del artículo anterior para Ubuntu 16: digitalocean.com/community/tutorials/…
Matt Browne