Nginx (vyslovováno jako „engine x“) je bezplatný, open-source, vysoce výkonný HTTP server. Nginx je známý svou stabilitou, bohatou sadou funkcí, jednoduchou konfigurací a nízkou spotřebou zdrojů. Tento tutoriál ukazuje, jak můžete nainstalovat Nginx na server Fedora 19 s podporou PHP5 (prostřednictvím PHP-FPM) a podporou MySQL.
Neposkytuji žádnou záruku, že to pro vás bude fungovat!
1 předběžná poznámka
V tomto tutoriálu používám název hostitele server1.example.com s IP adresou 192.168.0.100. Tato nastavení se pro vás mohou lišit, takže je v případě potřeby musíte nahradit.
2 Instalace MySQL/MariaDB 5
Nejprve nainstalujeme MySQL 5 takto:
yum install mysql mysql-server
Poté vytvoříme spouštěcí odkazy systému pro MySQL (takže se MySQL spustí automaticky při každém spuštění systému) a spustíme server MySQL:
systemctl povolit mysqld.service
systemctl spustit mysqld.service
Nyní zkontrolujte, zda je síť povolena. Spustit
netstat -tap | grep mysql
Mělo by to ukazovat něco takového:
[[e-mail chráněn] ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* POSLECHNUTÍ [ e/ d před 11]Pokud ne, upravte /etc/my.cnf a zakomentujte možnost skip-networking:
vi /etc/my.cnf[...]#skip-networking[...]a restartujte server MySQL:
systemctl restart mysqld.serviceSpustit
mysql_secure_installationpro nastavení hesla pro uživatele root (jinak má kdokoli přístup k vaší databázi MySQL!):
[[email protected] ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation: řádek 379: find_mysql_client: příkaz nenalezen
POZNÁMKA: PROVOZ VŠECHNY SOUČÁSTI VŠECHNY SOUČÁSTI Marie br /> POUŽÍVEJTE SERVERY VE VÝROBĚ! PROSÍM POČTĚTE KAŽDÝ KROK POČETNĚ!
Aby se přihlásili do MariaDB a zabezpečili je, budeme potřebovat aktuální
heslo pro uživatele root. Pokud jste právě nainstalovali MariaDB a
ještě nenastavili heslo kořenu , heslo bude prázdné,
tak měli stačí stisknout sem enter.
Enter aktuální heslo pro root (zadejte pro žádné): <-- ENTER
OK, úspěšně použité heslo, pokračujeme ...
Nastavení hesla root zajistí , že se nikdo nemůže přihlásit do MariaDB
root uživatel bez správného oprávnění.
Nastavit heslo uživatele root? [A/N] <-- ZADEJTE
Nové heslo: <-- heslo yourrootsql
Zadejte znovu nové heslo: <-- heslo yourrootsql
Heslo úspěšně aktualizováno!
Opětovné načítání tabulek privilegií. .
... Úspěch!
Ve výchozím nastavení má instalace MariaDB anonymního uživatele, který umožňuje
přihlásit se do MariaDB bez musí mít uživatelský účet vytvořené pro ně
. Toto je určeno pouze pro testování a aby instalace
byla o něco plynulejší. Měli byste je odstranit [A/N] <-- ENTER
... Úspěch!
Za normálních okolností by měl uživatel kořen povolit pouze připojení z 'localhost'. To
zajišťuje , že někdo nemůže odhadnout heslo root ze sítě.
Zakázat vzdálené přihlášení rootu? [A/N] <-- ENTER
... Úspěch!
Ve výchozím nastavení MariaDB přichází s databází nazvanou 'test', ke které má kdo
přístup. Toto je také je určeno pouze pro testování a mělo by se odstranit
před přemístěním do produkčního prostředí.
Odstranit testovací databázi a přistupovat k ní? [A/N] <-- ENTER
- Odstranění testovací databáze...
... Úspěch!
- Odebrání privilegií na testovací databázi...
... Úspěch !
Opětovné načtení tabulek privilegií zajistí , že všechny dosud provedené změny
se okamžitě projeví.
Načíst tabulky privilegií teď teď? [A/N] <-- ENTER
... Úspěch!
Úklid ...
Vše hotovo! Pokud ste dokončili všechny výše uvedené kroky, vaše instalace MariaDB
by měla nyní být zabezpečena.
Děkujeme za používání MariaDB!
[[email protected] ~]#
3 Instalace Nginx
Nginx je dostupný jako balíček pro Fedoru 19, který můžeme nainstalovat následovně:
yum nainstalovat nginxPoté vytvoříme spouštěcí odkazy systému pro nginx a spustíme jej:
systemctl povolit nginx.service
systemctl spustit nginx.serviceZadejte do prohlížeče IP adresu nebo název hostitele svého webového serveru (např. http://192.168.0.100) a měla by se zobrazit uvítací stránka nginx:
4 Instalace PHP5
Můžeme zajistit, aby PHP5 fungovalo v nginx prostřednictvím PHP-FPM (PHP-FPM (FastCGI Process Manager) je alternativní implementace PHP FastCGI s některými dalšími funkcemi užitečnými pro weby jakékoli velikosti, zejména rušnější weby). V oficiálních repozitářích Fedory 19 je balíček php-fpm, proto můžeme nainstalovat php-fpm společně s php-cli a některými moduly PHP5, jako je php-mysqlnd, které potřebujete, pokud chcete používat MySQL z vašich PHP skriptů:
yum install php-fpm php-cli php-mysqlnd php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidyZend OPcache je bezplatný a otevřený PHP mezipaměť operačních kódů pro ukládání do mezipaměti a optimalizaci přechodného kódu PHP. Je to podobné jako u jiných PHP cacherů operačních kódů, jako jsou APC a Xcache. Důrazně se doporučuje mít jeden z nich nainstalovaný, aby se urychlila vaše stránka PHP. Vzhledem k tomu, že Zend OPcache je nyní oficiálně součástí PHP 5.5, používáme jej namísto jiných cacherů operačních kódů.
Zend OPcache lze nainstalovat následovně:
yum install php-opcacheAby se předešlo chybám jako
[13-Nov-2011 22:13:16] Upozornění PHP:phpinfo():Není bezpečné spoléhat se na nastavení časového pásma systému. Jste *povinni* použít nastavení date.timezone nebo funkci date_default_timezone_set(). V případě, že jste použili některou z těchto metod a stále se vám zobrazuje toto varování, pravděpodobně jste chybně napsali identifikátor časového pásma. Místo toho jsme v /usr/share/nginx/html/info.php na řádku 2 vybrali „Evropa/Berlín“ pro „CET/1.0/no DST“... v /var/log/php-fpm/www-error.log, když zavoláte PHP skript ve vašem prohlížeči, měli byste otevřít /etc/php.ini a nastavit date.timezone:
vi /etc/php.ini[...][Datum]; Definuje výchozí časové pásmo používané funkcemi data; http://php.net/date.timezonedate.timezone ="Evropa/Berlín"[...]Dále vytvořte spouštěcí odkazy systému pro php-fpm a spusťte jej:
systemctl povolit php-fpm.service
systemctl spustit php-fpm.servicePHP-FPM je proces démona, který spouští FastCGI server na portu 9000.
5 Konfigurace nginx
Konfigurace nginx je v /etc/nginx/nginx.conf, který nyní otevíráme:
vi /etc/nginx/nginx.confKonfigurace je snadno pochopitelná (více se o ní můžete dozvědět zde:http://wiki.codemongers.com/NginxFullExample a zde:http://wiki.codemongers.com/NginxFullExample2)
Nejprve (toto je volitelné) můžete zvýšit počet pracovních procesů a nastavit keepalive_timeout na rozumnou hodnotu:
[...]worker_processes 4;[...] keepalive_timeout 2;[...]Virtuální hostitelé jsou definováni v kontejnerech serveru {}. Výchozí vhost je definován níže v souboru /etc/nginx/nginx.conf – upravme jej následovně:
vi /etc/nginx/nginx.conf[...] server { poslouchat 80; název_serveru _; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; umístění / { root /usr/share/nginx/html; index index.php index.html index.htm; } # přesměrovat chybové stránky serveru na statickou stránku /40x.html # error_page 404 /404.html; umístění =/40x.html { root /usr/share/nginx/html; } # přesměrovat chybové stránky serveru na statickou stránku /50x.html # error_page 500 502 503 504 /50x.html; umístění =/50x.html { root /usr/share/nginx/html; } # proxy skripty PHP pro Apache naslouchající na 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # předat skripty PHP na server FastCGI naslouchající na 127.0.0.1:9000 # umístění ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; zahrnout fastcgi_params; } # odepřít přístup k souborům .htaccess, pokud kořen dokumentu Apache # souhlasí s jedním umístěním # nginx ~ /\.ht { zakázat vše; } [...]název_serveru _; dělá z tohoto výchozího catchall vhost (samozřejmě zde můžete také zadat název hostitele jako www.example.com).
V umístění / části jsem do řádku indexu přidal index.php. root /usr/share/nginx/html; znamená, že kořen dokumentu je adresář /usr/share/nginx/html.
Důležitou součástí pro PHP je umístění ~ \.php$ {} stanza. Chcete-li ji aktivovat, odkomentujte ji. Změňte kořenový řádek na kořen dokumentu webové stránky (např. root /usr/share/nginx/html;). Ujistěte se prosím, že jste změnili řádek fastcgi_param na fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; protože jinak PHP interpret nenajde PHP skript, který voláte ve vašem prohlížeči.
Vezměte prosím na vědomí, že jsem přidal řádek try_files $uri =404; abyste zabránili zneužití zero-day (viz http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP a http://forum.nginx.org/read.php?2,88845,page=3). Případně, pokud nechcete použít try_files $uri =404; řádek, můžete nastavit cgi.fix_pathinfo =0; v /etc/php5/fpm/php.ini (nezapomeňte poté znovu načíst PHP-FPM).
Nyní uložte soubor a znovu načtěte nginx:
systemctl znovu načtěte nginx.serviceNyní vytvořte následující soubor PHP v kořenovém adresáři dokumentu /usr/share/nginx/html...
vi /usr/share/nginx/html/info.phpNyní tento soubor nazýváme v prohlížeči (např. http://192.168.0.100/info.php):
Jak vidíte, PHP5 funguje a funguje přes FPM/FastCGI, jak je znázorněno na řádku Server API. Pokud se posunete dále dolů, uvidíte všechny moduly, které jsou již povoleny v PHP5, včetně modulu MySQL:
6 odkazů
- nginx:http://nginx.org/
- nginx Wiki:http://wiki.nginx.org/
- PHP:http://www.php.net/
- PHP-FPM:http://php-fpm.org/
- MySQL:http://www.mysql.com/
- Fedora:http://fedoraproject.org/