GNU/Linux >> Znalost Linux >  >> Ubuntu

Instalace Nginx s podporou PHP5 a MySQL na Ubuntu 8.10

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 Ubuntu 8.10 s podporou PHP5 (prostřednictvím FastCGI) a podporou MySQL.

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 5.0

Abychom mohli nainstalovat MySQL, spustíme

apt-get install mysql-server mysql-client

Budete požádáni o zadání hesla pro uživatele root MySQL – toto heslo je platné pro uživatele [chráněno e-mailem] i [chráněno e-mailem], takže později nemusíme heslo root MySQL zadávat ručně:

Nové heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword
Opakujte heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword

3 Instalace Nginx

Nginx je k dispozici jako balíček pro Ubuntu 8.10, který můžeme nainstalovat následovně:

apt-get install nginx

Poté spusťte nginx:

/etc/init.d/nginx start

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:

Chcete-li, aby se nginx spustil při spouštění, spusťte

update-rc.d nginx defaults

4 Instalace PHP5

Můžeme zajistit fungování PHP5 v nginx prostřednictvím FastCGI. Naštěstí Ubuntu poskytuje balíček PHP5 s podporou FastCGI, který nainstalujeme takto (spolu s některými moduly PHP5, jako je php5-mysql, které potřebujete, pokud chcete používat MySQL z vašich skriptů PHP):

apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Poté otevřete /etc/php5/cgi/php.ini a přidejte řádek cgi.fix_pathinfo =1 přímo na konec souboru:

vi /etc/php5/cgi/php.ini
[...]
cgi.fix_pathinfo = 1

Pro Ubuntu neexistuje žádný samostatný balíček démonů FastCGI, proto používáme program spawn-fcgi z lighttpd. Lighttpd nainstalujeme následovně:

apt-get install lighttpd

Zobrazí se chybová zpráva, že lighttpd nelze spustit, protože port 80 je již používán. Tak to má být, protože nginx již naslouchá na portu 80. Spustit

update-rc.d -f lighttpd remove

takže lighttpd se nespustí při spouštění.

Nainstalovali jsme lighttpd, protože potřebujeme pouze jeden program, který je součástí balíčku, /usr/bin/spawn-fcgi, který můžeme použít ke spuštění procesů FastCGI. Podívejte se na

spawn-fcgi --help

se o tom dozvíte více.

Chcete-li spustit démona PHP FastCGI, který naslouchá na portu 9000 na localhost a běží jako uživatel a skupina www-data, spustíme následující příkaz:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

Samozřejmě nechcete tento příkaz zadávat ručně, kdykoli spouštíte systém, takže chcete, aby systém provedl příkaz automaticky při spouštění, otevřete /etc/rc.local...

vi /etc/rc.local

... a přidejte příkaz na konec souboru (před výstupní řádek):

[...]
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
[...]

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é) zvyšte počet pracovních procesů a nastavte keepalive_timeout na rozumnou hodnotu:

[...]
worker_processes  5;
[...]
    keepalive_timeout  2;
[...]

Virtuální hostitelé jsou definováni v kontejnerech serveru {}. Výchozí vhost je definován v souboru /etc/nginx/sites-available/default – upravme jej následovně:

vi /etc/nginx/sites-available/default
[...]
server {
        listen   80;
        server_name  _;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.php index.html index.htm;
        }

        location /doc {
                root   /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root   /usr/share;
                autoindex on;
        }

        #error_page  404  /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
                #proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny  all;
        }
}
[...]

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 /var/www/nginx-default; znamená, že kořen dokumentu je adresář /var/www/nginx-default.

Důležitou součástí pro PHP je umístění ~ \.php$ {} stanza. Chcete-li ji aktivovat, odkomentujte ji. Ujistěte se prosím, že jste změnili řádek fastcgi_param na fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; (nahraďte /var/www/nginx-default kořenovým adresářem dokumentu vašeho vhost), protože jinak PHP interpret nenajde PHP skript, který voláte ve vašem prohlížeči.

Ujistěte se, že mezi include a fastcgi_params jsou nějaké mezery; - ve výchozím souboru je to zapsáno jako jedno slovo, což je chyba.

Nyní uložte soubor a restartujte nginx:

/etc/init.d/nginx restart

Nyní vytvořte následující soubor PHP v kořenovém adresáři dokumentu /var/www/nginx-default:

vi /var/www/nginx-default/info.php
<?php
phpinfo();
?>

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 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.net/
  • nginx Wiki:http://wiki.codemongers.com/Main
  • PHP:http://www.php.net
  • MySQL:http://www.mysql.com
  • Ubuntu:http://www.ubuntu.com/

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

  2. Instalace Apache2 s podporou PHP5 a MySQL na Ubuntu 14.04LTS (LAMP)

  3. Jak nainstalovat Nginx s PHP5 a MySQL na Ubuntu 11.10

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

  2. Instalace Apache2 s podporou PHP5 a MySQL na OpenSUSE 13.1 (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