Installation du serveur web NGINX

Nginx est un serveur web léger et ultra rapide ! Voici un petit guide d'installation.

Attention, le depot dotdeb.org doit être ajouté !

Installation de NginX + PHP5 + APC Cache

Installation de nginx :

sudo aptitude install nginx

Installation de PHP + cache APC

sudo aptitude install php5-fpm
sudo aptitude install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
sudo aptitude install php-apc php-cache-lite

On modifie maintenant la configuration de php5-fpm pour qu'il écoute sur le 127.0.0.1:9000

sudo nano /etc/php5/fpm/pool.d/www.conf

Il faut ensuite éditer la ligne listen=/var/run/php5-fpm.sock et la remplacer par

listen = 127.0.0.1:9000

Redémarrage des services

sudo /etc/init.d/php5-fpm restart
sudo /etc/init.d/nginx start

Ouverture des ports du Firewall

Si vous utilisez un firewall, pensez à ouvrir les ports HTTP (80 en TCP) et HTTPS (443 et 8443 en TCP). Voici un exemple si vous utilisez le firewall par défaut :

sudo nano /etc/init.d/firewall

Ajouter cela au fichier :

# HTTP + HTTPS In
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT

Maintenant, il faut redémarrer le firewall

sudo /etc/init.d/firewall

Finalisation de l'installation

On désactive Apache2 et l'on démarre nginx

sudo /etc/init.d/apache2 stop
sudo insserv -r apache2
sudo /etc/init.d/nginx start

Installation de phpMyAdmin

Installation de Phpmyadmin

sudo aptitude install phpmyadmin

Lors de la configuration du paquet :

  • Au moment de choisir le serveur web à reconfigurer, ne rien cocher (ni apache2, ni lighttpd)
  • Lors de la configuration de la base de données pour phpmyadmin, répondre Oui
  • Entrez ensuite votre mot de passe root MySQL
  • Laisser le mot de passe Mysql vide pour qu'il soit généré aléatoirement et ensuite managé par l'outil Debian

Installation en tant qu'Alias

Pour rendre phpymadmin accessible en tant que www.votresite.com/monadmin Ajouter le code suivant à celui d'un site existant :

  # access to monadmin
  location /monadmin {
    alias  /usr/share/phpmyadmin/;
    try_files $uri $uri/ /index.php;
  }

  location ~ ^/monadmin(.+\.php)$ {
    alias /usr/share/phpmyadmin$1;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$1;
    include fastcgi_params;
  }

Installation dans un sous domaine

Nous allons maintenant créer le fichier de configuration pour Nginx

sudo nano /etc/nginx/sites-available/phpmyadmin

Copier maintenant le texte suivant en remplaçant mondomaine.net par votre nom de domaine

## SQL Admin file

server {
    listen   80;
    server_name  phpmyadmin.mondomaine.net;
    access_log  /var/log/nginx/phpmyadmin.mondomaine.net.access.log;

## Default location
    location / {
        root   /usr/share/phpmyadmin;
        index  index.php index.html index.htm;
                try_files $uri $uri/ /index.html;
    }

## Images and static content is treated different
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
      access_log        off;
      expires           30d;
      root /usr/share/phpmyadmin;
    }

## Prise en charge PHP
    location ~ .php$ {
        try_files $uri =404;
        root /usr/share/phpmyadmin;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 4k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_intercept_errors on;
    }

## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
   }
}

Il faut maintenant créer un lien symbolique entre le répertoire sites-available et sites-enabled

sudo ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/phpmyadmin

Puis l'on redémarre Nginx

sudo /etc/init.d/nginx restart 

Création d'un site par défaut

Nous allons maintenant créer un site par défaut. Il faut commencer par créer les répertoires et configurer les permissions

sudo mkdir /var/www/default
sudo chown www-data /var/www/
sudo chgrp www-data /var/www/
sudo chown www-data /var/www/default
sudo chgrp www-data /var/www/default
sudo chmod g+s /var/www
sudo chmod g+s /var/www/default

Les fichiers de configuration dans nginx sont répartis dans le répertoires /etc/nginx/sites-available Ensuite un lien symbolique relie les fichiers de configuration /etc/nginx/sites-enabled.

Il faut donc éditer le fichier /etc/nginx/sites-available/default

sudo nano /etc/nginx/sites-available/default

On copie ensuite le fichier de configuration suivant

#Catchall default configuration site

server {
    listen   80;
    server_name   .mondomain.tld _; #_ is catchall value
    access_log  /var/log/nginx/default.access.log;

## Default location
    location / {
        root   /var/www/default;
        index  index.php index.html index.htm;
                try_files $uri $uri/ /index.html;
    }

## Images and static content is treated different
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
      access_log        off;
      expires           30d;
      root /var/www/default;
    }

## Prise en charge PHP
    location ~ .php$ {
        try_files $uri =404;
        root /var/www/default;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 4k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_intercept_errors on;
    }

## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
   }
}

Il faut maintenant créer un lien symbolique entre le répertoire sites-available et sites-enabled

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

Puis l'on redémarre Nginx

sudo /etc/init.d/nginx restart 

Génération d'un certificat SSL

mkdir /etc/nginx/certs
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/certs/server.crt -keyout /etc/nginx/certs/server.key

Astuces

mysql_connect(): Headers and client library minor version mismatch

Pour corriger ce problème, supprimer le paquet php5-mysql et le remplacer par php5-mysqld avec la commande suivante :

sudo aptitude install php5-mysqlnd 
Warning : It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.

Identifier le fuseau horaire de votre serveur

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`

Cela retourne

Files /etc/localtime and /usr/share/zoneinfo/Europe/Paris are identical

Cela signifie donc dans notre cas que l'horloge est réglée pour la zone Europe/Paris

Maintenant on rajoute notre zone dans le php.ini

 sudo nano /etc/php5/conf.d/timezone.ini

et ajouter :

date.timezone = Europe/Paris

Redémarrer PHP

sudo /etc/init.d/php5-fpm restart
  • Partager le signet (social bookmarking)
  • Partager "Installation du serveur web NGINX" sur del.icio.us
  • Partager "Installation du serveur web NGINX" sur Digg
  • Partager "Installation du serveur web NGINX" sur blogmarks
  • Partager "Installation du serveur web NGINX" sur Google
  • Partager "Installation du serveur web NGINX" sur Facebook
  • Partager "Installation du serveur web NGINX" sur Twitter