Jak najłatwiej włączyć PHP na nginx?

130

Jak najłatwiej włączyć PHP na nginx na Ubuntu 12.04?

Najlepsze rozwiązanie to takie, które wymaga minimalnej pracy, najlepiej po prostu instalacji pakietu :)

sorin
źródło

Odpowiedzi:

141

Poniższa metoda sprawi, że szybko zaczniesz na Ubuntu 12.04:

Zainstaluj zależności:

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

Zainstaluj nginx:

sudo apt-get install nginx

Uruchom nginx:

sudo service nginx start

Sprawdź, czy działa (powinien zobaczyć „Witamy w nginx!”)

sudo service nginx stop

W konfiguracji witryny nginx (/ etc / nginx / sites-available / default) zmodyfikuj wiersz w sekcji serwer {}

index index.html index.htmdo index index.php index.html index.htm.

Odkomentuj wiersze w sekcji serwer {} zaczynając od

listen zarówno dla ipv4 / ipv6.

Przewiń w dół do miejsca, w którym jest napisane „lokalizacja ~ .php {” i odkomentuj linie, aby wyglądało to tak:

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

Domyślny katalog główny znajduje się w katalogu / usr / share / nginx / www (zgodnie z plikiem konfiguracyjnym). (Widziećroot /usr/share/nginx/www;

(Uwaga: w systemie Ubuntu 12.10 lub nowszym konieczne będzie zastąpienie fastcgi_pass 127.0.0.1:9000;wiersza tym, aby działało fastcgi_pass unix:/var/run/php5-fpm.sock;:)

papashou
źródło
1
Na koniec możesz sprawić, że 12.04 używa gniazda UNIX, takiego jak 12.10+, edytując /etc/php5/fpm/pool.d/www.confi zmieniając linię nasłuchu na listen = /var/run/php5-fpm.sock, a następnie używając linii @ThomasW. wzmiankowany.
Władca
@ Władza domyślna konfiguracja NGINX ma obie linie i wyjaśnia różnicę między nimi, zamiast konieczności zmiany sposobu działania PHP, możesz po prostu zmienić linię konfiguracji w NGINX szybciej i wszystko działa.
Thomas Ward
@ThomasW. Domyślny opis obu linii w ustawieniu domyślnym NGINX jest również nieprawidłowy w 12.04. php5-fpm wymaga pierwszej metody ze względu na konfigurację php5-fpm w 12.04. Nie zmieniło się to na drugą metodę aż do 12.10. Aby php5-fpm działał z nginx zgodnie z dokumentacją, musisz zmodyfikować stronę www.conf fpm, jak wspomniano w mojej poprzedniej wiadomości.
Władca
@Powerlord Masz rację, to problem, który można rozwiązać, zmieniając dokumentację w domyślnym pliku konfiguracyjnym. Zobacz ten błąd, który stworzyłem w tej sprawie . Nie miałem jeszcze okazji zaproponować poprawki.
Thomas Ward
1
To nie działa dla mnie na Ubuntu 14.04. nginx mówi „Wystąpił błąd, strona, której szukasz, nie została znaleziona”, co zrobić?
user3459110,
46

EDYCJA: Jak zauważył Matt Browne , może zainteresować Cię ten najnowszy post:
Jak zainstalować Linux, Nginx, MySQL, PHP (stos LEMP) w Ubuntu 16.04


Odpowiedź papashou jest poprawna na starym Ubuntu 12.04. Od wersji Ubuntu 12.10 konfiguracja jest nieco inna. Oto co zrobiłem:

zainstalować

sudo apt-get install nginx php5-fpm

Włącz PHP

Odkomentuj następujące wiersze w pliku konfiguracyjnym /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;
}

Uruchom (lub uruchom ponownie)

sudo service php5-fpm restart
sudo service nginx restart

Test nginx

Otwarcie tego linku http://localhostpowinno wyświetlić „Witamy w nginx!”

Test php

Utwórz plik php:

  • Ścieżka docelowa jest wynikiem działania

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

    na przykład /usr/share/nginx/www

  • Napisz info.phpplik z:

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

    lub jako jedna linijka

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

Otwarcie http://localhost/info.phppowinno wyświetlić stronę informacyjną PHP.

olibre
źródło
3
Dzięki za to. Oto kolejny pomocny link: digitalocean.com/community/tutorials/… . I pamiętaj, że jeśli chcesz zainstalować MySQL, musisz także uruchomić apt-get install php5-mysql(oprócz instalacji samego MySQL).
Matt Browne
1
Jest nowa wersja powyższego artykułu dla Ubuntu 16: digitalocean.com/community/tutorials/...
Matt Browne