Qu’est-ce que Nginx?
Nginx est un logiciel qui allie serveur web et reverse-proxy écrit par Igor Sysoev, dont le développement a débuté en 2002 pour les besoins d’un site à très fort trafic.
Le point fort d’Nginx est d’être un serveur asynchrone par opposition aux serveurs synchrones où chaque requête est traitée par un processus dédié. Chaque requête est découpé en plusieurs tâches et permet de réaliser un multiplexage très efficace. Cette architecture permet des performances très élevées, ainsi qu’une empreinte mémoire particulièrement faible comparativement aux serveurs HTTP classiques, tels qu’Apache.
Installation et configuration d’Nginx
Nous partons du principe qu’une installation Drupal fonctionnelle a déjà été réalisé. Si ce n’est pas le cas, reportez-vous à l’article d’installation de Drupal. Installation facile de Drupal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# Tout d'abord le téléchargement des paquets nécessaires apt-get install nginx php5 php5-fpm php5-apc # Ensuite ouvrez le fichier de configuration FastCGI Process Manager PHP nano /etc/php5/fpm/pool .d /www .conf # Commentez l'écoute sur le port 9000 et créez une socket à la place ;listen = 127.0.0.1:9000 listen = /var/run/php5-fpm .sock # Configurez la socket du manager nano /etc/nginx/conf .d /php5-fpm .conf upstream php5-fpm-sock { server unix: /var/run/php5-fpm .sock; } # Ensuite modifiez la configuration d'APC pour PHP afin d'allouer 100Mo nano /etc/php5/fpm/conf .d /apc .ini extension=apc.so apc.shm_size=100 # Redémarrez le manager /etc/init .d /php5-fpm restart |
Maintenant il reste à éditer le fichier de configuration de votre site. Malheureusement, Apache étant complètement différent, c’est un tout nouveau type de configuration qu’il vous faudra créer. Cependant, un utilitaire permet de convertir une configuration Apache vers Nginx. Conversion Apache vers Nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
nano /etc/nginx/sites-available/monsite server { # Nom de domaine server_name .monsite.fr; # Racine du site root /var/www/drupal ; # Logs access_log /var/log/nginx/monsite .fr.access.log; error_log /var/log/nginx/monsite .fr.error.log; # Desactive le log sur le favicon location = /favicon .ico { log_not_found off; access_log off; } # Desactive le log sur le robots.txt location = /robots .txt { allow all; log_not_found off; access_log off; } # Desactive le log sur le sitemap.xml location = /sitemap .xml { allow all; log_not_found off; access_log off; } # Page d'index du site index index.html index.htm index.php; # Pas de PHP pour le contenu static location / { try_files $uri $uri/ @rewrites; } # Clean URLs location @rewrites { rewrite ^ /index .php last; } # Cache d'Image location ~ ^ /sites/ .* /files/imagecache/ { try_files $uri @rewrite; } # Cache d'ImageStyle location ~ ^ /sites/ .* /files/styles/ { try_files $uri @rewrite; } # Contenu static comme les images location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate" ; } # Protège les fichiers privées location ~ ^ /sites/ .* /private/ { return 403; } # Evite les pages PHP location ~ \..*/.*\.php$ { return 403; } # Bloque l'acces aux fichiers cachées location ~ /\. { access_log off; log_not_found off; deny all; } # Scripts PHP location ~ \.php { fastcgi_split_path_info ^(.+\.php)(/.+)$; try_files $uri =404; fastcgi_index index.php; fastcgi_pass php5-fpm-sock; fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params ; } } |
Activez votre configuration, puis redémarrez votre nouveau serveur Nginx.
1
2
|
ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/monsite /etc/init .d /nginx restart |
Voilà, votre migration est terminée.