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.