Frontal Web Nginx et WordPress.

Juste un petit article sans prétention aucune sur comment servir un wordpress 3.x.x avec Nginx.
Pourquoi Nginx et pas Apache? Simple, j’ai déjà moultes wordpress et autres joyeusetés tournant sous Apache et faire la même chose sous Nginx me paraissait fun.
Certains dirons, que Nginx tient mieux la charge que Apache à capacité égale ainsi que nombres d’utilisateurs simultanés égal, d’autres non, pour ma part je ne sais pas, je n’ai pas encore fait de bench là-dessus et ce n’est clairement pas le but de ce ticket.

Ce qui sera traité ici:

  • Installation et configuration d’un vhost sous Nginx.
  • Installation de php5-fpm.
  • Installation et configuration de php5-apc.
  • Installation de Nginx et Configuration d’un vhost:

Installation:
vu que nous sommes sous Debian, rien de plus simple:

apt-get install nginx-full

Configuration du vhost:

server {
listen ADRESSE_IP:80;
server_name www.domain.tld;

access_log /path/to/access.log;
error_log /path/to/error.log;

root /path/to/wordpress;

location / {
index index.php;
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 360;
fastcgi_read_timeout 360;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}

Installation de php5-fpm:
apt-get install php5-fpm

Installation de php5-apc:

apt-get install php5-apc

Configuration de php5-apc:
Le fichier de configuration de trouvera sur une debian dans /etc/php5/conf.d/apc.ini

extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.num_files_hint=512
apc.user_entries_hint=4096
apc.use_request_time=1
apc.user_ttl=7200
apc.gc_ttl=3600
apc.cache_by_default=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.file_update_protection=2
apc.enable_cli=0
apc.max_file_size=2M
apc.stat=0
apc.stat_ctime=0
apc.canonicalize=1
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.include_once_override=0
apc.lazy_classes=0
apc.lazy_functions=0
apc.coredump_unmap=0
apc.file_md5=0
apc.preload_path
apc.filters =”-/path/to/apc.php”

Il n’y a volontairement aucune explication de à quoi sert tel ou tel valeur, tel ou tels paramètre, ce ticket étant là pour expliquer brièvement que c’est possible, que cela ne prends pas beaucoup de temps et pour ceux qui souhaite le faire, limite une solution clef en main en mode cliqua-cliqua (avec un minimum de réflexion bien entendu).

Cette configuration fait tourner 2 wordpress sur une machine virtuelle possédant: 1C/256MB.

Ces configurations sont surement très loin d’être parfaite, si vous avez des infos, des remarques, je suis preneur.