Qual è il modo più semplice per abilitare PHP su nginx?


130

Qual è il modo più semplice per abilitare PHP su nginx su Ubuntu 12.04?

La migliore soluzione è quella che richiede un lavoro minimo, idealmente solo l'installazione di un pacchetto :)

Risposte:


141

Il seguente metodo ti farà iniziare velocemente su Ubuntu 12.04:

Installa le dipendenze:

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

Installa nginx:

sudo apt-get install nginx

Inizia nginx:

sudo service nginx start

Prova che funziona (dovrebbe vedere "Benvenuto in nginx!")

sudo service nginx stop

Nella configurazione del tuo sito nginx (/ etc / nginx / sites-available / default), modifica la riga nella sezione {} del server

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

Rimuovi il commento dalle righe nella sezione del server {} a partire da

listen per ipv4 / ipv6 entrambi.

Scorri verso il basso fino a dove dice "location ~ .php {" e le righe di commento in modo che assomiglino a questo:

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

La radice Web predefinita si trova in / usr / share / nginx / www (per il file di configurazione). (Vedereroot /usr/share/nginx/www;

(Nota: per Ubuntu 12.10 o versioni successive, è necessario sostituire la fastcgi_pass 127.0.0.1:9000;linea con questa per farla funzionare fastcgi_pass unix:/var/run/php5-fpm.sock;:)


1
Come nota a margine, puoi fare in modo che 12.04 usi un socket UNIX come fa 12.10+ modificando /etc/php5/fpm/pool.d/www.confe cambiando la linea di ascolto listen = /var/run/php5-fpm.sock, quindi usando la linea @ThomasW. menzionato.
Powerlord,

@Powerlord, l'impostazione predefinita di NGINX ha entrambe le linee e spiega la differenza tra le due, invece di dover cambiare il modo in cui PHP funziona, puoi semplicemente cambiare la linea di configurazione in NGINX più velocemente e tutto funziona.
Thomas Ward

@ThomasW. Anche la descrizione del setup di default di NGINX di entrambe le linee è errata in 12.04. php5-fpm richiede il primo metodo a causa della configurazione di php5-fpm in 12.04. Non è cambiato al secondo metodo fino al 12.10. Per far funzionare php5-fpm con nginx come documentato, è necessario modificare www.conf di fpm come menzionato nel mio messaggio precedente.
Powerlord

@Powerlord Hai ragione, è un problema, che può essere risolto modificando la documentazione nel file di configurazione predefinito. Vedi questo bug che ho creato su questo problema . Non ho ancora avuto la possibilità di proporre una correzione.
Thomas Ward

1
Questo non funziona per me su Ubuntu 14.04. nginx dice "Si è verificato un errore, la pagina che stai cercando non è stata trovata", cosa fare?
user3459110

46

EDIT: Come sottolineato da Matt Browne potresti essere interessato a questo post più recente:
Come installare Linux, Nginx, MySQL, PHP (stack LEMP) in Ubuntu 16.04


La risposta del papashou è corretta sul vecchio Ubuntu 12.04. Da Ubuntu 12.10, la configurazione è leggermente diversa. Ecco cosa ho fatto:

Installare

sudo apt-get install nginx php5-fpm

Abilita PHP

Rimuovi il commento dalle seguenti righe nel file di configurazione /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;
}

Avvia (o riavvia)

sudo service php5-fpm restart
sudo service nginx restart

Test nginx

L'apertura di questo collegamento http://localhostdovrebbe visualizzare "Benvenuti in nginx!"

Test php

Crea un file php:

  • Il percorso target è l'output di

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

    per esempio /usr/share/nginx/www

  • Scrivi un info.phpfile con:

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

    o come one-liner

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

L'apertura http://localhost/info.phpdovrebbe visualizzare la pagina delle informazioni PHP.


3
Grazie per questo. Ecco un altro link utile: digitalocean.com/community/tutorials/… . E nota che se vuoi installare MySQL, dovrai anche eseguire apt-get install php5-mysql(oltre a installare MySQL stesso).
Matt Browne,

1
C'è una nuova versione dell'articolo sopra per Ubuntu 16: digitalocean.com/community/tutorials/…
Matt Browne,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.