Nginx rychle předbíhá Apache jako oblíbený webový server. Pro webové aplikace postavené v jazycích jako Rails a Python je to prakticky všudypřítomné, ale ve světě PHP je o něco pomalejší, než se uchytí. Částečně je to způsobeno tím, jak snadno jdou dohromady PHP a Apache. Nicméně PHP a Nginx mohou spolupracovat téměř stejně snadno a s vydáním PHP 7 může být kombinace těchto dvou poměrně rychlá volba.
Balíčky
Pěkně popořádku. Aktualizujte Ubuntu a získejte balíčky Nginx a PHP.
# sudo apt-get update && sudo apt-get -y upgrade # sudo apt-get -y install nginx php7.0 php7.0-fpm
Po dokončení instalace by měly být všechny balíčky na svém místě a skutečně spuštěny. Abyste se ujistili, že tomu tak je, můžete zkontrolovat, že v Systemd běží jak Nginx, tak služby PHP-FPM.
# sudo systemctl status nginx # sudo systemctl status php7.0-fpm
Pokud Systemd potvrdí, že obě služby běží, server by měl být skutečně spuštěn a měli byste být schopni vidět výchozí uvítací stránku Nginx přechodem na localhost
v prohlížeči.
Konfigurace
Samozřejmě to není ani zdaleka připraveno skutečně něco hostit. K nasměrování Nginxu na nějaký skutečný obsah a zlepšení zabezpečení je potřeba určitá konfigurace. Kořenový adresář pro konfigurační soubory Nginx se nachází na adrese /etc/nginx
. Naštěstí tam již jsou výchozí hodnoty z Ubuntu, které značně usnadňují proces konfigurace.
Nginx.conf
Hlavním konfiguračním souborem pro Nginx je nginx.conf
. Otevřete jej v textovém editoru dle vašeho výběru. Bude vyžadovat oprávnění root, takže textový editor, jako je Vim, bude pravděpodobně nejlepší. Výchozí konfigurace je většinou v pořádku. Samozřejmě existují věci, které lze udělat pro zlepšení rychlosti a zabezpečení systému, ale většina z nich je nad rámec tohoto základního tutoriálu. Pokud chcete zlepšit výkon, komentované možnosti Gzip pomohou s kompresí a mohou věci urychlit. Pokud jde o zabezpečení, přidání následujících tří řádků pomůže zabránit škodlivé činnosti.
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
Konfigurace webu
Po přidání řádků uložte a ukončete. V kořenovém adresáři Nginx jsou dvě složky, sites-available
a sites-enabled
. sites-available
ukládá konfigurace webu. sites-enabled
obsahuje symbolické odkazy na konfigurační soubory v sites-available
. Tímto způsobem je povolení a zakázání webů stejně jednoduché jako vytváření a odstraňování symbolických odkazů.
Pomocí textového editoru vytvořte soubor na adrese /etc/nginx/sites-available/yoursite
. Tento soubor bude obsahovat libovolnou konfiguraci specifickou pro váš nový web PHP 7. Následující příklad obsahuje rozpis v komentářích toho, co každý řádek dělá. Je to docela základní konfigurace, ale svou práci zvládne.
server { #Nginx should listen on port 80 for requests to yoursite.com listen 80; server_name yoursite.com; #Create access and error logs in /var/log/nginx access_log /var/log/nginx/yoursite.access_log main; error_log /var/log/nginx/yoursite.error_log info; #Nginx should look in /var/www/yoursite for your website root /var/www/yoursite/; #The homepage of your website is a file called index.php index index.php; #Specifies that Nginx is looking for .php files location ~ \.php$ { #If a file isn’t found, 404 try_files $uri =404; #Include Nginx’s fastcgi configuration include /etc/nginx/fastcgi.conf; #Look for the FastCGI Process Manager at this location fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
Až budete mít tento soubor vytvořen, uložte jej a přesuňte se do sites-enabled
adresář. Odtud vytvořte symbolický odkaz zpět na soubor, který jste právě vytvořili.
# cd /etc/nginx/sites-enabled # sudo ln -s /etc/nginx/sites-available/yoursite
Zabezpečení PHP.ini
Zabezpečení je pohyblivý cíl a je nemožné udržet si náskok před každou možnou hrozbou, ale vždy je dobré každou novou instalaci serveru co nejvíce uzamknout. Existuje několik jednoduchých úprav, které lze provést v php.ini
konfigurační soubor, který pomůže zabezpečit PHP. Pomocí textového editoru otevřete /etc/php/7.0/fpm/php.ini
. Toto je obrovský soubor. Opět je asi nejlepší Vim nebo něco s funkcí vyhledávání.
Nejprve najděte disable_functions
a přidejte phpinfo,system,mail,exec
na konec řetězce funkcí, které tam již jsou. Poté vyhledejte file_uploads
a nastavte jej na Off
. Dále najděte sql.safe_mode
a přepněte jej na On
. Nakonec najděte allow_url_fopen
a nastavte jej na Off
. Před uzavřením souboru přidejte na konec ještě jeden řádek.
register_globals = Off
Až bude vše hotovo, uložte a zavřete. Restartujte server a měl by být připraven k použití.
# sudo systemctl restart php7.0-fpm # sudo systemctl restart nginx
Kam jít dál
Jak to sedí, server Ubuntu by měl být schopen provozovat většinu webových stránek PHP. Jakékoli soubory PHP umístěné v /var/www/yoursite
bude provozován serverem. Bude hledat index.php
nejprve soubor a web se tam může rozvětvit. Samozřejmě je toho mnohem víc, co lze udělat pro konfiguraci PHP a Nginx pro rychlost, bezpečnost a téměř všechny speciální případy, ale nyní máte pevný výchozí bod.