Quel est le moyen le plus simple d'activer PHP sur nginx?

131

Quel est le moyen le plus simple d'activer PHP sur nginx sous Ubuntu 12.04?

La meilleure solution est celle qui demande un travail minimal, idéalement une installation de paquet :)

sorin
la source

Réponses:

141

La méthode suivante vous permettra de démarrer rapidement sur Ubuntu 12.04:

Installez les dépendances:

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

Installez nginx:

sudo apt-get install nginx

Démarrer nginx:

sudo service nginx start

Vérifiez que cela fonctionne (devrait voir "Bienvenue sur nginx!")

sudo service nginx stop

Dans la configuration de votre site nginx (/ etc / nginx / sites-available / default), modifiez la ligne dans la section {} du serveur.

index index.html index.htmà index index.php index.html index.htm.

Décommentez les lignes de la section {} du serveur commençant par

listen pour ipv4 / ipv6 à la fois.

Faites défiler jusqu'à l'endroit où il est écrit "location ~ .php {" et décommentez les lignes afin qu'il ressemble à ceci:

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

Votre racine Web par défaut se trouve dans / usr / share / nginx / www (selon le fichier de configuration). (Voirroot /usr/share/nginx/www;

(Remarque: Pour Ubuntu 12.10 ou plus récent, vous devrez remplacer la fastcgi_pass 127.0.0.1:9000;ligne avec ce pour le faire fonctionner: fastcgi_pass unix:/var/run/php5-fpm.sock;)

papashou
la source
1
Comme note latérale tardive, vous pouvez faire en sorte que 12.04 utilise un socket UNIX, comme le fait 12.10+ en modifiant /etc/php5/fpm/pool.d/www.confet en modifiant la ligne d'écoute listen = /var/run/php5-fpm.sock, puis en utilisant la ligne @ThomasW. mentionné.
Powerlord
@Powerlord la configuration par défaut de NGINX a deux lignes et explique la différence entre les deux. Plutôt que de devoir changer la façon dont PHP s'exécute, vous pouvez simplement changer la ligne de configuration dans NGINX plus rapidement et tout fonctionne.
Thomas Ward
@ThomasW. La description de la configuration par défaut de NGINX des deux lignes est également incorrecte dans 12.04. php5-fpm nécessite la première méthode en raison de la configuration de php5-fpm dans 12.04. La deuxième méthode n'a pas été changée avant 12h10. Pour que php5-fpm fonctionne avec nginx comme documenté, vous devez modifier le fichier www.conf de fpm comme mentionné dans mon message précédent.
Powerlord
@ Powerlord Vous avez raison, c'est un problème qui peut être résolu en modifiant la documentation dans le fichier de configuration par défaut. Voir ce bug que j'ai créé sur cette question . Je n'ai pas encore eu l'occasion de proposer un correctif.
Thomas Ward
1
Cela ne fonctionne pas pour moi sur Ubuntu 14.04. nginx dit "Une erreur est survenue, la page que vous recherchez n'est pas trouvée", que faire?
user3459110
46

EDIT: Comme le souligne Matt Browne, cet article plus récent pourrait vous intéresser:
Comment installer Linux, Nginx, MySQL, PHP (pile LEMP) dans Ubuntu 16.04


La réponse de papashou est correcte sur l'ancienne Ubuntu 12.04. Depuis Ubuntu 12.10, la configuration est un peu différente. Voici ce que j'ai fait:

Installer

sudo apt-get install nginx php5-fpm

Activer PHP

Décommentez les lignes suivantes dans le fichier de configuration /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;
}

Démarrer (ou redémarrer)

sudo service php5-fpm restart
sudo service nginx restart

Tester nginx

Ouvrir ce lien http://localhostdevrait afficher "Welcome to nginx!"

Tester php

Créer un fichier php:

  • Le chemin cible est la sortie de

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

    par exemple /usr/share/nginx/www

  • Ecrire un info.phpfichier avec:

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

    ou comme une ligne

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

L'ouverture http://localhost/info.phpdevrait afficher la page d'informations PHP.

olibre
la source
3
Merci pour cela. Voici un autre lien utile: digitalocean.com/community/tutorials/… . Et notez que si vous souhaitez installer MySQL, vous devez également exécuter apt-get install php5-mysql(en plus d'installer MySQL lui-même).
Matt Browne
1
Il existe une nouvelle version de l'article ci-dessus pour Ubuntu 16: digitalocean.com/community/tutorials/…
Matt Browne le