Dotclear avec Nginx
Par Dju » 01 juillet 2010 (23:00) - Site
Après une re-migration de la dedibox v2 à v3 (enfin !), j'ai choisi de me passer d'Apache pour faire tourner ce blog en Dotclear. Ca sera désormais le couple Nginx / PHP qui mènera la danse.
Il y a tout de même quelques petits changements à effectuer au niveau de la configuration.
Une fois bien configuré, on obtient un blog dont le serveur consomme moins de ressources, et répond plus rapidement qu'apache
On commence d'abord par PHP.
Une fois apache désinstallé (dont le module libapache2-mod-php5), on va installer php en mode CGI. Voire ce billet pour les explications.
Et maintenant, attaquons la configuration de Nginx.
Voici un exemple de host a mettre dans votre fichier /etc/nginx/sites-enabled/votre_site
server { listen 80; server_name blog.monsite.com; access_log /var/log/nginx/blog.monsite.com_access.log; error_log /var/log/nginx/blog.monsite.com_errors.log; root /var/www/monsite; index index.html index.htm index.php; location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|txt|htm|html|xsl|zip)$ { expires 30d; } # php location ~\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /var/www/monsite$fastcgi_script_name; include /etc/nginx/fastcgi_params; } # rewrite query if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?$1 last; } # redirection pour la page d'erreur error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } # interdit les htaccess location ~ /\.ht { deny all; } }
WARNING: afin d'adapter l'utl rewriting d'apache, veuillez noter les 3 lignes en dessous de #rewrite query
C'est grâce à elles que les requetes n'étant pas des fichiers/dossiers/liens pourront être ré-écrits
/!\ Ceci est valable pour un dotclear en mode QUERY_STRING et non PATH_INFO /!\
Avec Apache, on avait d'habitude un fichier .htaccess comme ceci :
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php?$1
une fois tout ça bien enregistré, on vérifie qu'on n'a pas fait de faute de frappe dans le config. de nginx :p
nginx -t
puis on démarre le tout
/etc/init.d/php-php-fastcgi start
/etc/init.d/nginx start
Après, pour optimiser un peu, et suivant votre traffic, on pourra jouer sur le nombre de process php lancés.
On edite donc le fichier /etc/default/php-fastcgi et on change la ligne suivante :
PHP_FCGI_CHILDREN=5
Par défaut, il est à 2, on peut le mettre à 5, et aviser par la suite
Hello! How i may contact the administrator of a site? I have a question.
Salut,
Tu dis que "une fois bien configuré, on obtient un blog dont le serveur consomme moins de ressources, et répond plus rapidement qu'apache". C'est une impression, ou tu as des chiffres pour ça (même approximatifs)?
J'hésite à me lancer.
@pj il est vrai que je n'ai pas publié directement de bench la dessus, mais on en trouve facilement sur le net (ici par exemple : http://www.joeandmotorboat.com/2008... )
Et pour ma part, meme en pleine charge, nginx consomme clairement moins de ram que Apache. Et en faisant un test avec un grand nombre de requêtes, nginx s'en tire mieux. et beaucoup beaucoup mieux quand il s'agit de délivrer du contenu statique
Merci pour le rewrite, c'est ce qu'il me manquait
content que ça puisse aider
Bonjour,
Juste une petite remarque, il manque un point important selon moi qui est que vous ne sécurisez pas les répertoires "sensibles" tels que /inc/ (pour ne citer que lui)
Normalement ces répertoires sont protégés par le .htaccess, mais dans le cas de nginx, cette protection est inefficace.
Malheureusement je ne peux vous indiquer de liste complète des répertoires à protéger.
PS : Je n'ai pas réussi à utiliser le formulaire de contact qui me considérait comme spam
@v445: tu fait bien de le préciser, et je me rends compte que j'aurais du le rajouter dans l'exemple de configuration ci dessus, qui se voulait basique et juste le minimum pour faire fonctionner dotclear
Typiquement, pour interdire l'acces au repertoire inc, on peut rajouter cela dans la configuration du host:
location ~ /inc/ {
deny all;
}
Fil des commentaires de ce billet
URL de rétrolien : https://blog.crifo.org/trackback/62