Vraag Wat is de gemakkelijkste manier om PHP op nginx in te schakelen?


Wat is de gemakkelijkste manier om PHP op nginx op Ubuntu 12.04 in te schakelen?

De beste oplossing is degene die om minimaal werk vraagt, idealiter slechts een pakketinstallatie :)


126
2018-05-09 22:39


oorsprong




antwoorden:


Met de volgende methode kun je snel aan de slag op Ubuntu 12.04:

Installeer de afhankelijkheden:

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

Installeer nginx:

sudo apt-get install nginx

Start nginx:

sudo service nginx start

Test dat het werkt (moet "Welcome to nginx!" Zien)

sudo service nginx stop

In uw nginx-siteconfiguratie (/ etc / nginx / sites-available / default), wijzigt u de regel in het gedeelte server {}

index index.html index.htm naar index index.php index.html index.htm.

Onthoud de regels in de server {} sectie die begint met

listen voor ipv4 / ipv6 allebei.

Blader naar beneden naar de locatie "location ~ .php {" en uncomment-regels zodat het er zo uitziet:

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

Uw standaard webroot bevindt zich op / usr / share / nginx / www (per het configuratiebestand). (Zien root /usr/share/nginx/www;

(Opmerking: voor Ubuntu 12.10 of nieuwer moet u de fastcgi_pass 127.0.0.1:9000; regel hiermee om het te laten werken: fastcgi_pass unix:/var/run/php5-fpm.sock;)


135
2018-05-09 23:07



Als een late kanttekening, kun je 12.04 een UNIX-socket zoals 12.10+ gebruiken door te bewerken /etc/php5/fpm/pool.d/www.conf en de luisterlijn wijzigen naar listen = /var/run/php5-fpm.socken gebruikt vervolgens de regel @ThomasW. genoemd. - Powerlord
@Powerlord de standaardinstelling van NGINX heeft beide regels en verklaart het verschil tussen beide, in plaats van te hoeven veranderen hoe PHP loopt, kunt u de configuratie-regel in NGINX sneller wijzigen en alles werkt. - Thomas Ward♦
@ThomasW. De NGINX-standaardinstellingen van beide lijnen is ook verkeerd in 12.04. php5-fpm vereist de eerste methode als gevolg van hoe php5-fpm is geconfigureerd in 12.04. Het veranderde pas in 12.10 in de tweede methode. Om php5-fpm te laten werken met nginx zoals gedocumenteerd, moet je fpm's www.conf wijzigen zoals vermeld in mijn vorige bericht. - Powerlord
@Powerlord U hebt gelijk, het is een probleem, een probleem dat kan worden verholpen door de documentatie in het standaardconfiguratiebestand te wijzigen. Zien deze fout die ik over dit probleem heb gemaakt. Ik heb nog geen kans gehad om een ​​bugfix voor te stellen. - Thomas Ward♦
Dit werkt niet voor mij op ubuntu 14.04. nginx zegt "Er is een fout opgetreden, de pagina die u zoekt, wordt niet gevonden", wat te doen? - Awal Garg


BEWERK: Zoals aangegeven door Matt Browne je bent mogelijk geïnteresseerd in dit meer recente bericht:
Hoe Linux, Nginx, MySQL, PHP (LEMP-stack) te installeren in Ubuntu 16.04


De antwoord van papashou is correct op oude Ubuntu 12.04. Sinds Ubuntu 12.10 is de configuratie een beetje anders. Dit is wat ik deed:

Installeren

sudo apt-get install nginx php5-fpm

Schakel PHP in

Onthoud de volgende regels in het configuratiebestand /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;
}

Begin (of herstart)

sudo service php5-fpm restart
sudo service nginx restart

Test nginx

Deze link openen http://localhost zou moeten weergeven "Welkom bij nginx!"

Test php

Maak een php-bestand aan:

  • Het doelpad is de uitvoer van

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

    bijv. /usr/share/nginx/www

  • Schrijf een info.php bestand met:

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

    of als one-liner

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

Opening http://localhost/info.php zou de PHP-informatiepagina moeten weergeven.


46
2018-03-07 04:39



Bedankt hiervoor. Hier is nog een handige link: digitalocean.com/community/tutorials/.... En merk op dat als u MySQL wilt installeren, u ook moet uitvoeren apt-get install php5-mysql (naast het installeren van MySQL zelf). - Matt Browne
Er is een nieuwe versie van het bovenstaande artikel voor Ubuntu 16: digitalocean.com/community/tutorials/... - Matt Browne