GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Installazione di Nginx con supporto PHP5 e MySQL su Ubuntu 8.10

Nginx (pronunciato "engine x") è un server HTTP gratuito, open source e ad alte prestazioni. Nginx è noto per la sua stabilità, il ricco set di funzionalità, la configurazione semplice e il basso consumo di risorse. Questo tutorial mostra come installare Nginx su un server Ubuntu 8.10 con supporto PHP5 (tramite FastCGI) e supporto MySQL.

1 Nota preliminare

In questo tutorial utilizzo l'hostname server1.example.com con l'indirizzo IP 192.168.0.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato.

2 Installazione di MySQL 5.0

Per installare MySQL, eseguiamo

apt-get install mysql-server mysql-client

Ti verrà chiesto di fornire una password per l'utente root di MySQL:questa password è valida per l'utente [protetto tramite posta elettronica] e [protetto tramite posta elettronica], quindi non è necessario specificare manualmente una password di root MySQL in seguito:

Nuova password per l'utente "root" di MySQL:<-- yourrootsqlpassword
Ripeti la password per l'utente "root" di MySQL:<-- yourrootsqlpassword

3 Installazione di Nginx

Nginx è disponibile come pacchetto per Ubuntu 8.10 che possiamo installare come segue:

apt-get install nginx

Avvia nginx in seguito:

/etc/init.d/nginx start

Digita l'indirizzo IP o il nome host del tuo server web in un browser (ad es. http://192.168.0.100) e dovresti vedere la pagina di benvenuto di nginx:

Per avviare nginx all'avvio, esegui

update-rc.d nginx defaults

4 Installazione di PHP5

Possiamo far funzionare PHP5 in nginx tramite FastCGI. Fortunatamente, Ubuntu fornisce un pacchetto PHP5 abilitato per FastCGI che installiamo in questo modo (insieme ad alcuni moduli PHP5 come php5-mysql di cui hai bisogno se vuoi usare MySQL dai tuoi script 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

Quindi apri /etc/php5/cgi/php.ini e aggiungi la riga cgi.fix_pathinfo =1 proprio alla fine del file:

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

Non esiste un pacchetto demone FastCGI autonomo per Ubuntu, quindi utilizziamo il programma spawn-fcgi di lighttpd. Installiamo lighttpd come segue:

apt-get install lighttpd

Verrà visualizzato un messaggio di errore che dice che non è stato possibile avviare lighttpd perché la porta 80 è già in uso. È così che dovrebbe essere perché nginx è già in ascolto sulla porta 80. Esegui

update-rc.d -f lighttpd remove

in modo che lighttpd non si avvii all'avvio.

Abbiamo installato lighttpd perché abbiamo bisogno di un solo programma fornito con il pacchetto, /usr/bin/spawn-fcgi, che possiamo usare per avviare i processi FastCGI. Dai un'occhiata a

spawn-fcgi --help

per saperne di più.

Per avviare un demone PHP FastCGI in ascolto sulla porta 9000 su localhost e in esecuzione come utente e gruppo www-data, eseguiamo il seguente comando:

/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

Ovviamente, non vuoi digitare quel comando manualmente ogni volta che avvii il sistema, quindi per fare in modo che il sistema esegua il comando automaticamente all'avvio, apri /etc/rc.local...

vi /etc/rc.local

... e aggiungi il comando alla fine del file (prima della riga di uscita):

[...]
/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 Configurazione di nginx

La configurazione di nginx è in /etc/nginx/nginx.conf che apriamo ora:

vi /etc/nginx/nginx.conf

La configurazione è di facile comprensione (puoi saperne di più qui:http://wiki.codemongers.com/NginxFullExample e qui:http://wiki.codemongers.com/NginxFullExample2)

Innanzitutto (questo è facoltativo) aumenta il numero di processi di lavoro e imposta keepalive_timeout su un valore ragionevole:

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

Gli host virtuali sono definiti nei contenitori del server {}. Il vhost predefinito è definito nel file /etc/nginx/sites-available/default - modifichiamolo come segue:

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;
        }
}
[...]

nome del server _; lo rende un vhost catchall predefinito (ovviamente puoi anche specificare un nome host qui come www.example.com).

Nella posizione / parte, ho aggiunto index.php alla riga dell'indice. root /var/www/nginx-default; significa che la radice del documento è la directory /var/www/nginx-default.

La parte importante per PHP è la stanza posizione ~ \.php$ {}. Decommentalo per abilitarlo. Assicurati di cambiare la riga fastcgi_param in fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; (sostituisci /var/www/nginx-default con la root del tuo vhost) perché altrimenti l'interprete PHP non troverà lo script PHP che chiami nel tuo browser.

Assicurati che ci siano degli spazi tra include e fastcgi_params; - nel file di default questa è scritta come una parola che è un bug.

Ora salva il file e riavvia nginx:

/etc/init.d/nginx restart

Ora crea il seguente file PHP nella radice del documento /var/www/nginx-default:

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

Ora chiamiamo quel file in un browser (es. http://192.168.0.100/info.php):

Come vedi, PHP5 funziona e funziona tramite FastCGI, come mostrato nella riga dell'API del server. Se scorri più in basso, vedrai tutti i moduli che sono già abilitati in PHP5, incluso il modulo MySQL:

  • nginx:http://nginx.net/
  • Wiki di nginx:http://wiki.codemongers.com/Main
  • PHP:http://www.php.net
  • MySQL:http://www.mysql.com
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Installazione di Nginx con PHP5 (e PHP-FPM) e supporto MySQL (LEMP) su Ubuntu 14.04 LTS

  2. Installazione di Apache2 con supporto PHP5 e MySQL su Ubuntu 14.04LTS (LAMP)

  3. Installazione di Lighttpd con PHP5 (PHP-FPM) e supporto MySQL su Ubuntu 14.04LTS

  4. Installazione di Apache2 con PHP5 e supporto MySQL su OpenSUSE 13.1 (LAMP)

  5. Come installare Nginx con PHP5 e MySQL su Ubuntu 11.10

Installazione di Apache2 con PHP5 e supporto MySQL su CentOS 6.2 (LAMP)

Installazione di Apache2 con PHP5 e supporto MySQL su CentOS 6.3 (LAMP)

Installazione di Nginx con PHP5 (e PHP-FPM) e supporto MySQL su CentOS 6.4

Installazione di Apache2 con PHP5 e supporto MySQL su CentOS 6.4 (LAMP)

Installazione di Nginx con PHP5 (e PHP-FPM) e supporto MySQL su Fedora 19

Installazione di Apache2 con PHP5 e supporto MySQL su Fedora 20 (LAMP)