GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Installation de Nginx avec prise en charge de PHP5 et MySQL sur Ubuntu 8.10

Nginx (prononcez "engine x") est un serveur HTTP gratuit, open-source et hautes performances. Nginx est connu pour sa stabilité, son riche ensemble de fonctionnalités, sa configuration simple et sa faible consommation de ressources. Ce tutoriel montre comment vous pouvez installer Nginx sur un serveur Ubuntu 8.10 avec prise en charge PHP5 (via FastCGI) et MySQL.

1 Remarque préliminaire

Dans ce tutoriel, j'utilise le nom d'hôte server1.example.com avec l'adresse IP 192.168.0.100. Ces paramètres peuvent différer pour vous, vous devez donc les remplacer le cas échéant.

2 Installer MySQL 5.0

Pour installer MySQL, nous exécutons

apt-get install mysql-server mysql-client

Il vous sera demandé de fournir un mot de passe pour l'utilisateur root MySQL - ce mot de passe est valide pour l'utilisateur [email protected] ainsi que [email protected], nous n'avons donc pas besoin de spécifier manuellement un mot de passe root MySQL ultérieurement :

Nouveau mot de passe pour l'utilisateur "root" MySQL :<-- yourrootsqlpassword
Répétez le mot de passe pour l'utilisateur "root" MySQL :<-- yourrootsqlpassword

3 Installer Nginx

Nginx est disponible sous forme de package pour Ubuntu 8.10 que nous pouvons installer comme suit :

apt-get install nginx

Démarrez ensuite nginx :

/etc/init.d/nginx start

Tapez l'adresse IP ou le nom d'hôte de votre serveur Web dans un navigateur (par exemple, http://192.168.0.100), et vous devriez voir la page d'accueil de nginx :

Pour que nginx démarre au démarrage, exécutez

update-rc.d nginx defaults

4 Installer PHP5

Nous pouvons faire fonctionner PHP5 dans nginx via FastCGI. Heureusement, Ubuntu fournit un package PHP5 compatible FastCGI que nous installons comme ceci (avec certains modules PHP5 comme php5-mysql dont vous avez besoin si vous souhaitez utiliser MySQL à partir de vos scripts 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

Ouvrez ensuite /etc/php5/cgi/php.ini et ajoutez la ligne cgi.fix_pathinfo =1 juste à la fin du fichier :

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

Il n'y a pas de package de démon FastCGI autonome pour Ubuntu, nous utilisons donc le programme spawn-fcgi de lighttpd. Nous installons lighttpd comme suit :

apt-get install lighttpd

Vous verrez un message d'erreur indiquant que lighttpd n'a pas pu démarrer car le port 80 est déjà utilisé. C'est comme ça que c'est censé être parce que nginx écoute déjà sur le port 80. Exécutez

update-rc.d -f lighttpd remove

afin que lighttpd ne démarre pas au démarrage.

Nous avons installé lighttpd car nous n'avons besoin que d'un seul programme fourni avec le package, /usr/bin/spawn-fcgi, que nous pouvons utiliser pour démarrer les processus FastCGI. Jetez un oeil à

spawn-fcgi --help

pour en savoir plus.

Pour démarrer un démon PHP FastCGI écoutant sur le port 9000 sur localhost et s'exécutant en tant qu'utilisateur et groupe www-data, nous exécutons la commande suivante :

/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

Bien sûr, vous ne voulez pas taper cette commande manuellement chaque fois que vous démarrez le système, donc pour que le système exécute la commande automatiquement au démarrage, ouvrez /etc/rc.local...

vi /etc/rc.local

... et ajoutez la commande à la fin du fichier (avant la ligne de sortie) :

[...]
/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 Configuration de nginx

La configuration nginx se trouve dans /etc/nginx/nginx.conf que nous ouvrons maintenant :

vi /etc/nginx/nginx.conf

La configuration est facile à comprendre (vous pouvez en savoir plus ici :http://wiki.codemongers.com/NginxFullExample et ici :http://wiki.codemongers.com/NginxFullExample2)

Tout d'abord (ceci est facultatif), augmentez le nombre de processus de travail et définissez keepalive_timeout sur une valeur raisonnable :

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

Les hôtes virtuels sont définis dans les conteneurs du serveur {}. Le vhost par défaut est défini dans le fichier /etc/nginx/sites-available/default - modifions-le comme suit :

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

nom du serveur _; en fait un vhost fourre-tout par défaut (bien sûr, vous pouvez également spécifier un nom d'hôte ici comme www.example.com).

Dans l'emplacement/partie, j'ai ajouté index.php à la ligne d'index. racine /var/www/nginx-default ; signifie que la racine du document est le répertoire /var/www/nginx-default.

La partie importante pour PHP est la strophe location ~ \.php$ {}. Décommentez-le pour l'activer. Assurez-vous de changer la ligne fastcgi_param en fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name ; (remplacez /var/www/nginx-default par la racine du document de votre vhost) car sinon l'interpréteur PHP ne trouvera pas le script PHP que vous appelez dans votre navigateur.

Assurez-vous qu'il y a des espaces entre include et fastcgi_params ; - dans le fichier par défaut, ceci est écrit en un seul mot, ce qui est un bogue.

Enregistrez maintenant le fichier et redémarrez nginx :

/etc/init.d/nginx restart

Créez maintenant le fichier PHP suivant dans la racine du document /var/www/nginx-default :

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

Maintenant, nous appelons ce fichier dans un navigateur (par exemple http://192.168.0.100/info.php) :

Comme vous le voyez, PHP5 fonctionne, et il fonctionne via FastCGI, comme indiqué dans la ligne API du serveur. Si vous faites défiler plus bas, vous verrez tous les modules déjà activés dans PHP5, y compris le module MySQL :

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

Ubuntu
  1. Installation de Nginx avec PHP5 (et PHP-FPM) et le support MySQL (LEMP) sur Ubuntu 14.04 LTS

  2. Installation d'Apache2 avec prise en charge de PHP5 et MySQL sur Ubuntu 14.04LTS (LAMP)

  3. Installation de Lighttpd avec PHP5 (PHP-FPM) et prise en charge de MySQL sur Ubuntu 14.04LTS

  4. Installation d'Apache2 avec prise en charge de PHP5 et MySQL sur OpenSUSE 13.1 (LAMP)

  5. Comment installer Nginx avec PHP5 et MySQL sur Ubuntu 11.10

Installation d'Apache2 avec prise en charge de PHP5 et MySQL sur CentOS 6.2 (LAMP)

Installation d'Apache2 avec prise en charge de PHP5 et MySQL sur CentOS 6.3 (LAMP)

Installation de Nginx avec PHP5 (et PHP-FPM) et prise en charge de MySQL sur CentOS 6.4

Installation d'Apache2 avec prise en charge de PHP5 et MySQL sur CentOS 6.4 (LAMP)

Installation de Nginx avec PHP5 (et PHP-FPM) et prise en charge de MySQL sur Fedora 19

Installation d'Apache2 avec prise en charge de PHP5 et MySQL sur Fedora 20 (LAMP)