Was ist der einfachste Weg, um PHP auf Nginx zu aktivieren?

130

Was ist der einfachste Weg, um PHP auf Nginx unter Ubuntu 12.04 zu aktivieren?

Die beste Lösung ist die, die nur minimale Arbeit erfordert, idealerweise nur eine Paketinstallation :)

Sorin
quelle

Antworten:

141

Mit der folgenden Methode können Sie unter Ubuntu 12.04 schnell loslegen:

Installieren Sie die Abhängigkeiten:

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

Installieren Sie nginx:

sudo apt-get install nginx

Nginx starten:

sudo service nginx start

Testen Sie, ob es funktioniert (siehe "Willkommen bei Nginx!")

sudo service nginx stop

Ändern Sie in Ihrer Nginx-Site-Konfiguration (/ etc / nginx / sites-available / default) die Zeile im Abschnitt server {}

index index.html index.htmzu index index.php index.html index.htm.

Kommentieren Sie die Zeilen im Abschnitt server {} aus, die mit beginnen

listen für ipv4 / ipv6 beide.

Scrolle nach unten zu "location ~ .php {" und entkommentiere die Zeilen, so dass es so aussieht:

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

Ihr Standardwebstamm befindet sich unter / usr / share / nginx / www (in der Konfigurationsdatei). (Sehenroot /usr/share/nginx/www;

(Hinweis: Für Ubuntu 12.10 oder neue, müssen Sie den ersetzen fastcgi_pass 127.0.0.1:9000;Einklang damit , damit es funktioniert: fastcgi_pass unix:/var/run/php5-fpm.sock;)

papashou
quelle
1
Spätestens ab Version 12.04 können Sie einen UNIX-Socket wie 12.10+ verwenden, indem Sie /etc/php5/fpm/pool.d/www.confdie Listen-Zeile bearbeiten und in ändern listen = /var/run/php5-fpm.sockund dann die Zeile @ThomasW verwenden. erwähnt.
Powerlord
@Powerlord das NGINX Standard-Setup hat beide Zeilen und erklärt den Unterschied zwischen den beiden, anstatt zu ändern, wie PHP läuft, können Sie einfach die Konfigurationszeile in NGINX schneller ändern und alles funktioniert.
Thomas Ward
@ThomasW. Die Beschreibung beider Zeilen im NGINX-Standard-Setup ist in 12.04 ebenfalls falsch. php5-fpm erfordert die erste Methode, da php5-fpm in 12.04 konfiguriert ist. Erst am 12.10. Wurde zur zweiten Methode gewechselt. Damit php5-fpm mit nginx wie dokumentiert funktioniert, müssen Sie die www.conf von fpm wie in meiner vorherigen Nachricht erwähnt ändern.
Powerlord
@Powerlord Sie haben Recht, es ist ein Problem, das durch Ändern der Dokumentation in der Standardkonfigurationsdatei behoben werden kann. Siehe diesen Fehler, den ich zu diesem Problem erstellt habe . Ich hatte noch keine Gelegenheit, einen Bugfix vorzuschlagen.
Thomas Ward
1
Dies funktioniert bei mir unter Ubuntu 14.04 nicht. nginx sagt "Ein Fehler ist aufgetreten, die gesuchte Seite wurde nicht gefunden", was tun?
user3459110
46

EDIT: Wie von Matt Browne herausgestellt , könnte Sie dieser neuere Beitrag interessieren:
Wie man Linux, Nginx, MySQL, PHP (LEMP-Stack) in Ubuntu 16.04 installiert


Die Antwort des Papashou ist auf dem alten Ubuntu 12.04 korrekt. Seit Ubuntu 12.10 ist die Konfiguration etwas anders. Folgendes habe ich getan:

Installieren

sudo apt-get install nginx php5-fpm

Aktivieren Sie PHP

Kommentieren Sie die folgenden Zeilen in der Konfigurationsdatei aus /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;
}

Start (oder Neustart)

sudo service php5-fpm restart
sudo service nginx restart

Prüfung nginx

Wenn Sie diesen Link öffnen,http://localhost sollte "Willkommen bei Nginx!"

Prüfung php

Erstellen Sie eine PHP-Datei:

  • Der Zielpfad ist die Ausgabe von

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

    z.B /usr/share/nginx/www

  • Schreiben Sie eine info.phpDatei mit:

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

    oder als Einzeiler

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

Das Öffnen http://localhost/info.phpsollte die PHP-Informationsseite anzeigen.

olibre
quelle
3
Danke dafür. Hier ist ein weiterer hilfreicher Link: digitalocean.com/community/tutorials/… . Und beachten Sie, dass Sie, wenn Sie MySQL installieren möchten, auch ausführen müssen apt-get install php5-mysql(zusätzlich zur Installation von MySQL selbst).
Matt Browne
1
Es gibt eine neue Version des obigen Artikels für Ubuntu 16: digitalocean.com/community/tutorials/…
Matt Browne