Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Installare Nginx con PHP5 e MySQL Support su CentOS 5.5

Nginx (pronunciato “motore x”) è un libero, open source, ad alte prestazioni HTTP server. Nginx è noto per la sua stabilità, ricco set di funzionalità, semplice configurazione e basso consumo di risorse.Questo tutorial Mostra come è possibile installare Nginx su un server CentOS 5.5 con supporto per PHP5 (tramite FastCGI) e MySQL.

Io non rilasciano alcuna garanzia che questo funziona per voi!

 

1 Nota preliminare

In questo tutorial io uso il nome host Server1 con l’ indirizzo IP 192.168.0.100.Queste impostazioni potrebbero differire per te, quindi devi sostituirli ove opportuno.

 

2 l’installazione di MySQL 5

Prima installiamo MySQL 5 come questo:

yum install mysql mysql-server

Poi creiamo i collegamenti di avvio del sistema per MySQL (in modo che MySQL si avvia automaticamente ogni volta che il sistema si avvia) e avviare il server MySQL:

chkconfig --levels 235 mysqld on
 /etc/init.d/mysqld start

Ora verifica che la rete è abilitata. Correre

netstat -tap | grep mysql

Dovrebbe mostrare qualcosa come questo:

[root@server1 ~]# netstat -tap | grep mysql
 tcp        0      0 *:mysql                     *:*                         LISTEN      2388/mysqld
 [root@server1 ~]#

Se così non fosse, modificare /etc/my.cnf e commentare l’ opzione skip-networking:

vi /etc/my.cnf
[...]
#skip-networking
[...]

e riavviare il server MySQL:

/etc/init.d/mysqld restart

Correre

mysql_secure_installation

per impostare una password per l’utente root (altrimenti chiunque può accedere al database MySQL!):

[root@server1 ~] # mysql_secure_installation

Nota: In esecuzione di tutte le parti di questo SCRIPT è consigliato per tutti MySQL
SERVER IN USO IN PRODUZIONE! SI PREGA DI LEGGERE ATTENTAMENTE OGNI PASSO!

Al fine di accedere a MySQL per fissarlo, avremo bisogno della corrente
password per l’utente root. Se hai appena installato MySQL, e
non hai impostato la password di root, ancora, la password sarà vuota,
quindi basta premere Immettere qui.

Immettere la password corrente per radice (immettere per nessuno): <-immettere
OK, utilizzato con successo la password, lo spostamento…

Impostazione della password root garantisce che nessuno possa accedere a MySQL
utente root senza l’apposita autorizzazione.

Impostare la password di root? [Y/n] <-immettere
Nuova password: <-yourrootsqlpassword
Immettere nuovamente la nuova password: <-yourrootsqlpassword
Password aggiornata con successo!
Ricarico privilegio tabelle…
… Successo!

Per impostazione predefinita, un’installazione di MySQL è un utente anonimo, permettendo a chiunque
per accedere a MySQL senza dover disporre di un account utente creato per
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] <– ENTER
… Success!

Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] <– ENTER
… Success!

By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] <– ENTER
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] <– ENTER
… Success!

Cleaning up…

All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

[root@server1 ~]#

 

3 Installing Nginx

Nginx is not available in the official CentOS repositories, but there’s a package for CentOS 5.x in the centos.karan.org testing repository. We enable the repository as follows:

cd /etc/yum.repos.d/ 
 wget http://centos.karan.org/kbsingh-CentOS-Extras.repo

Next we open /etc/yum.repos.d/kbsingh-CentOS-Extras.repo …

vi /etc/yum.repos.d/kbsingh-CentOS-Extras.repo

… and set gpgcheck to 0 and enabled to 1 in the [kbs-CentOS-Testing] section:

[...]
# pkgs in the -Testing repo are not gpg signed
[kbs-CentOS-Testing]
name=CentOS.Karan.Org-EL$releasever - Testing
gpgcheck=0
gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
enabled=1
baseurl=http://centos.karan.org/el$releasever/extras/testing/$basearch/RPMS/

Afterwards we can install nginx as follows:

yum install nginx

Then we create the system startup links for nginx and start it:

chkconfig --levels 235 nginx on
 /etc/init.d/nginx start

Type in your web server’s IP address or hostname into a browser (e.g. http://192.168.0.100), and you should see a blank page (it is blank because /usr/share/nginx/html/index.html is empty; nevertheless nginx is working because otherwise it would not have delivered this blank page):

4 installare PHP5

Possiamo fare PHP5 lavorare in nginx attraverso FastCGI. Non c’è nessun pacchetto di standalone FastCGI daemon per CentOS, quindi utilizzare il pacchetto di FastCGI di lighttpd (fastcgi di lighttpd) e installarlo insieme a php-cli e alcuni moduli PHP5 come php-mysql che è necessario se si desidera per utilizzare MySQL dagli script PHP:

yum install lighttpd-fastcgi php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy

Quindi aprire /etc/php.ini e aggiungere la riga fix_pathinfo = 1 proprio alla fine del file:

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

Il pacchetto di fastcgi di lighttpd viene fornito con l’ eseguibile /usr/bin/spawn-fcgi che possiamo usare per avviare processi di FastCGI. Da un’occhiata

spawn-fcgi --help

per saperne di più.

Per avviare un demone di PHP FastCGI in ascolto sulla porta 9000 su localhost e in esecuzione come utente e gruppo nginx, abbiamo eseguito il seguente comando:

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

Naturalmente, non volete digitare in quel comando manualmente ogni volta che avvio del sistema, in modo da avere il sistema di eseguire il comando automaticamente al momento dell’avvio, aprire /etc/rc.local

vi /etc/rc.local

… e aggiungere il comando alla fine del file:

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

 

5 configurare nginx

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

vi /etc/nginx/nginx.conf

La configurazione è facile da capire (si può saperne di più qui: http://wiki.codemongers.com/NginxFullExample e qui: http://wiki.codemongers.com/NginxFullExample2)

Prima (questo è facoltativo) è possibile aumentare il numero di processi di lavoro e impostare il keepalive_timeout su un valore ragionevole:

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

Gli host virtuali sono definiti in contenitori server {} . Modifichiamo il vhost di default come segue:

[...]
    server {
        listen       80;
        server_name  _;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /usr/share/nginx/html;
            index  index.php index.html index.htm;
        }

        error_page  404              /404.html;
        location = /404.html {
            root   /usr/share/nginx/html;
        }

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

        # 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$ {
            root           /usr/share/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$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_server _; Questo rende un vhost catchall predefinito (naturalmente, è possibile anche specificare un nome host qui come www.example.com).

Nella posizione / parte, ho aggiunto index. php per la riga di Indice . /usr/share/nginx/html radice; significa che la radice del documento è la directory /usr/share/nginx/html.

La parte importante per PHP è la posizione ~ {} \.php$ strofa. Decommentarla per attivarla. Modificare la riga di radice di radice di dosument del sito web (es. radice /usr/share/nginx/html;). Si prega di assicurarsi che modifichi la linea di fastcgi_param a fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$ fastcgi_script_name; perché altrimenti l’interprete PHP non troverà lo script PHP che si chiama nel tuo browser.

Now save the file and restart nginx:

/etc/init.d/nginx restart

Now create the following PHP file in the document root /usr/share/nginx/html

vi /usr/share/nginx/html/info.php
<?php
phpinfo();
?>

Now we call that file in a browser (e.g. http://192.168.0.100/info.php):

As you see, PHP5 is working, and it’s working through FastCGI, as shown in the Server API line. If you scroll further down, you will see all modules that are already enabled in PHP5, including the MySQL module:

 

Piaciuto l'articolo? Condividilo sui social!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp