GNU/Linux >> Znalost Linux >  >> Fedora

Instalace Nginx s podporou PHP5 (a PHP-FPM) a MySQL na Fedora 19

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/  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.service

Spustit

mysql_secure_installation

pro 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 nginx

Poté vytvoříme spouštěcí odkazy systému pro nginx a spustíme jej:

systemctl povolit nginx.service
systemctl spustit nginx.service

Zadejte 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-tidy

Zend 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-opcache

Aby 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.service

PHP-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.conf

Konfigurace 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.service

Nyní vytvořte následující soubor PHP v kořenovém adresáři dokumentu /usr/share/nginx/html...

vi /usr/share/nginx/html/info.php

Nyní 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:

  • 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/

Fedora
  1. Instalace Nginx s PHP5 (a PHP-FPM) a podporou MySQL (LEMP) na Ubuntu 14.04 LTS

  2. Instalace Lighttpd s podporou PHP5 (PHP-FPM) a MySQL na Ubuntu 14.04LTS

  3. Jak nainstalovat Nginx s PHP-FPM a MySQL na Fedora 16 „Verne“

  1. Instalace Apache2 s podporou PHP5 a MySQL na OpenSUSE 13.1 (LAMP)

  2. Instalace Apache 2 s podporou PHP5 a MySQL na Fedora 21 (LAMP)

  3. Instalace Lighttpd s podporou PHP5 a MySQL na Ubuntu 10.04

  1. Instalace Lighttpd s podporou PHP5 (PHP-FPM) a MySQL na Ubuntu 12.04

  2. Instalace Nginx s PHP5 (a PHP-FPM) a podporou MySQL (LEMP) na Ubuntu 12.04 LTS

  3. Instalace Nginx s PHP5 (a PHP-FPM) a podporou MySQL (LEMP) na Ubuntu 13.04