Catégories
Blog Open-source Planet-libre Systeme Web

Installation pas à pas d’un serveur de blog WordPress sur Debian Squeeze

Je viens de passer le cap et de m’abonner à un serveur dédié chez Online.net. Mon choix s’est porté vers une Dedibox DC. J’ai longtemps hésité avec une OVH Kimsufi 16G mais le fait que la Dedibox propose en standard deux disques fonctionnant en RAID1 à fait la différence (avec l’âge ou privilégie la sécurité à la performance…).

Avant de migrer mon blog sur ce nouveau serveur (il est actuellement hébergé chez un VPS Gandi 4 parts), j’ai profité de disposer d’un serveur tout neuf pour valider une procédure complète d’installation et d’optimisation d’un blog WordPress sur un serveur Debian Squeeze en utilisant le « stack » Web suivant: Varnish + Nginx + MemCached.

L’objectif de ce billet est de partager cette procédure avec vous.

Introduction

Nous allons donc détaillé l’installation d’un blog WordPress sur une installation toute fraîche de Debian Squeeze (version stable) pré-installé dans mon cas par Online.net avec un minimum de logiciels (pas d’Apache ni d’autres serveurs Web). Vous l’avez compris, pour suivre la procédure suivante, il faut s’assurer qu’aucun serveur Web n’est installé sur votre machine.

Post installation du système

J’ai pris l’habitude de créer des scripts de post installation pour les OS (desktop et server) que j’utilise. Dans le cas qui nous intéresse je vais donc utiliser le script: squeezeserverpostinstall.sh.

Pour le télécharger puis le lancer, il suffit de saisir les commandes suivantes à partir d’un compte administrateur ou directement en root):

wget --no-check-certificate https://raw.github.com/nicolargo/debianpostinstall/master/squeezeserverpostinstall.sh
chmod a+x squeezeserverpostinstall.sh
./squeezeserverpostinstall.sh

Comme le serveur est directement connecté à Internet et à moins d’être très joueur, je vous conseille de configurer quelques règles de Firewall. J’ai mis à disposition un jeu de règles assez facile à modifier en éditant le fichier /etc/init.d/firewall.sh. Pour le télécharger et l’installer:

wget --no-check-certificate -O /etc/init.d/firewall.sh https://raw.github.com/nicolargo/debianpostinstall/master/firewall.sh
chmod a+x /etc/init.d/firewall.sh
update-rc.d firewall.sh defaults 20
service firewall start

Note: par défaut les ports SSH entrant et HTTP et DNS sortant sont autorisés.

Pour modifier ces listes, il suffit de configurer les variables suivantes dans le fichier /etc/init.d/firewall.sh:

# Services that the system will offer to the network
TCP_SERVICES="22" # SSH only
UDP_SERVICES=""

# Services the system will use from the network
REMOTE_TCP_SERVICES="80 443" # web browsing
REMOTE_UDP_SERVICES="53" # DNS

A ce stade, vous devriez avoir un serveur à jour et sécurisé. Passons donc à l’étape suivante.

Installation de Nginx + PHP-FPM + Memcached

C’est actuellement une des combos les plus performantes pour héberger des serveurs Web basées sur PHP (ce qui est le cas du CMS WordPress). Pour effectuer simplement et rapidement ces logiciels, j’utilise un script maisonnginxautoinstall.sh. Il faut donc saisir les commandes suivantes:

wget --no-check-certificate https://raw.github.com/nicolargo/debianpostinstall/master/nginxautoinstall.sh
chmod a+x nginxautoinstall.sh
./nginxautoinstall.sh

Le script va installer la dernière version stable de Nginx puis le daemon PHP-FPM qui permet de booster les performances des scripts PHP et enfin le gestionnaire de cache mémoire MemCached (note: le script fonctionne également sur Debian Lenny 5).

Pour adapter les performances de Nginx à votre CPU, il faut modifier la variable worker_processes le fichier /etc/nginx/nginx.conf. Pour obtenir la valeur optimale pour votre système, vous pouvez lancer la commande suivante:

cat /proc/cpuinfo | grep processor | wc -l

Qui donne la valeur 4 sur ma Dedibox (4 coeurs/CPU). On édite le fichier nginx.conf de la manière suivante:

user www-data;

# Set this value to 1 or N with N = N-Core
worker_processes  4;
worker_rlimit_nofile 8192;
events {
	# max_clients = worker_processes * worker_connections
	worker_connections  1024;
	# Only for Linux 2.6 or >
	use epoll;
	# Accept as many connections as possible
	multi_accept on;
}

http {
	# Mime types
	include       	mime.types;
	default_type  	application/octet-stream;

	# Log format
	set_real_ip_from 	127.0.0.1; 
	real_ip_header 		X-Forwarded-For; 
	log_format 	main '$remote_addr - $remote_user [$time_local]  $status '
		'"$request" $body_bytes_sent "$http_referer" '
    		'"$http_user_agent" "$http_x_forwarded_for"';

	# Hide the Nginx version number
	server_tokens off;

	# Some tweeks...
	sendfile        		on;
	tcp_nodelay			on;
	#tcp_nopush			on;

	# Timeouts
	#keepalive_timeout  		10 10;
	keepalive_timeout  		65;
	client_body_timeout   		30;
	client_header_timeout 		30;
	send_timeout          		30;
	client_max_body_size		8M;
	reset_timedout_connection 	on;

	# Gzip module configuration
	gzip  			on;
	gzip_disable 		"MSIE [1-6].(?!.*SV1)";
	gzip_vary 		on;
	gzip_comp_level 	3;
	gzip_proxied 		any;
	gzip_buffers 		16 8k;

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

On relance le serveur pour prendre en compte la configuration:

service nginx restart

Installation du langage PHP

WordPress use et abuse du langage PHP, une installation optimisé du moteur permettant d’exécuter le code est donc nécessaire. Personnellement j’utilise l’implémentation PHP5 FPM qui est réputé pour ses performances. Elle est installé par défaut avec mon script d’auto-install de Nginx.

La configuration est stocké dans le répertoire /etc/php5/fpm. Mon fichier php-fpm.conf ressemble à cela:

[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
emergency_restart_interval = 1m 
process_control_timeout = 10s 
include=/etc/php5/fpm/pool.d/*.conf

Avec WordPress comme CMS, je vous encourage à stocker les fichiers de sessions dans une base NoSQL de type Redis afin de ne pas se retrouver avec des milliers de petits fichiers dans le répertoire /tmp. Pour cela, il suffit d’ajouter les lignes suivantes dans le fichier /etc/php5/fpm/php.ini:

session.save_handler = "redis"
session.save_path = "tcp://127.0.0.1:6379?weight=1"

Dernière étape et non des moindres, la configuration du pool de processus PHP-FPM que vous allez dédier à votre blog WordPress (par exemple /etc/php5/fpm/pool.d/www.conf dans mon cas):

[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 65535
chdir = /

On peut relancer PHP

service php5-fpm restart

et passer à l’étape suivante, la base de donnée…

Installation de MySQL

A l’heure actuelle, WordPress utilise une base de donnée MySQL pour fonctionner (je préférerai PgSQL mais bon…). Il faut donc installer le serveur de base de donnée MySQL:

apt-get install mysql-server php5-mysql
service php5-fpm restart

Optimiser un peu celle-ci en modifiant quelques variables dans le fichier /etc/mysql/my.cnf:

query_cache_type = 1
query_cache_limit = 2M
query_cache_size = 32M

et relancer le daemon pour que la configuration soit prise en compte:

service mysql restart

On passe ensuite à la phase de création de la base de données nommée wordpress accessible par utilisateur/motdepasse:

# mysql -u root -p

mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "utilisateur"@"localhost" IDENTIFIED BY "motdepasse";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit

Installation du CMS WordPress

J’utilise la dernière version stable de WordPress disponible sur le site officiel:

cd /var/www
wget http://wordpress.org/latest.tar.gz
tar zxvf latest.tar.gz
cp wordpress/wp-config-sample.php wordpress/wp-config.php
chown -R www-data:www-data /var/www/wordpress

Ensuite on configure la base de donnée dans le fichier wordpress/wp-config.php:

...
define('DB_NAME', 'wordpress');
define('DB_USER', 'utilisateur');
define('DB_PASSWORD', 'motdepasse');
define('WP_CACHE', true);
...

Il suffit ensuite de finaliser l’installation de WordPress en pointant un navigateur Web vers http://votredomaine.com/wordpress/wp-admin/install.php.

Si vous avez changé la structure du permalink (par exemple chez moi c’est /%year%/%monthnum%/%postname%.html), il faut modifer la configuration Nginx, plus précisément la section « Location / » dans le fichier /etc/nginx/sites-enabled/default-site:

server{
        listen 80;

        server_name blog.nicolargo.com;
        root	/var/www/blog.nicolargo.com;
        index 	index.php index.html index.htm;

        access_log /var/log/nginx/blog.access_log;
        error_log /var/log/nginx/blog.error_log;

        # Security
        include global/security.conf;

        location / {
                # This is cool because no php is touched for static content. 
                # include the "?$args" part so non-default permalinks doesn't break 
when using query string
                try_files $uri $uri/ /index.php?$args;
        }

	# PHP-FPM
	include global/php-fpm.conf;

	# STATICS FILES
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

avec les fichiers inclus suivants:

Securité /etc/nginx/global/security.conf:

location = /favicon.ico {
	log_not_found off;
	access_log off;
}

location = /robots.txt {
	allow all;
	log_not_found off;
	access_log off;
}

location ~ /\. {
	deny all;
	access_log off;
	log_not_found off;
}

et PHP-FPM /etc/nginx/global/php-fpm.conf:

# PHP scripts -> PHP-FPM server listening on 127.0.0.1:9000
location ~ \.php$ {
	# The following line prevents malicious php code to be executed through some uploaded file (without php extension, like image)
	# This fix shoudn't work though, if nginx and php are not on the same server, other options exist (like unauthorizing php execution within upload folder)
	# More on this serious security concern in the "Pass Non-PHP Requests to PHP" section, there http://wiki.nginx.org/Pitfalls
	try_files $uri =404;

	# PHP	
	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
	fastcgi_pass   127.0.0.1:9000;
	fastcgi_index  index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
	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_intercept_errors        on;
	fastcgi_ignore_client_abort     off;
	fastcgi_connect_timeout 60;
	fastcgi_send_timeout 180;
	fastcgi_read_timeout 180;
	fastcgi_buffers 4 256k;
	fastcgi_buffer_size 128k;
	#fastcgi_buffers 256 16k;
	#fastcgi_buffer_size 16k;
	fastcgi_busy_buffers_size 256k;
	fastcgi_temp_file_write_size 256k;
}

Ne pas oublier de relancer NGinx pour prendre en compte cette modification:

service nginx restart

Installation du plugin WP Super Cache

Après quelques années sous d’utilisation de W3 Total Cache et la mise en place de mon proxy/cache Varnish, j’ai choisi d’utiliser le plugin WP Super Cache qui s’occupe de cacher les pages demandées par les utilisateurs non identifiées (donc pas 90% du trafic) afin que PHP et MySQL ne soit pas appelé lors de ces requêtes.

Il est également possible de précharger la mise en cache des pages les plus visitées et de les mettre automatiquement à jour de manière régulière.

Une fois installé et activé il faut se rendre dans le menu de configuration du plugin et de cliquer sur l’onglet « Easy » et « Mise en cache Activée (Recommandé) ».

A ce stade, on peut faire quelques tests de performances avec Apache Bench (disponible dans le paquet Debian apache2-utils):

[cce lang= »bash »]

Requests per second: 219.53 [#/sec] (mean) (options -t 30 -c 5)

[/cce]

ou avec le service en ligne Load Impact qui permet de simuler gratuitement jusqu’à 50 utilisateurs simultanés sur votre site:

On voit bien que les page du blog se chargent rapidement (environ 500ms) même avec 50 utilisateurs simultanés.

Puis arriva Varnish…

J’ai mis à jour ma configuration de Varnish+Nginx pour WordPress dans le billet suivant. Vous pouvez le suivre en lieu et place du chapitre qui suit…

Vous savez tout le bien que je pense de Varnish. Nous allons donc maintenant ajouter cet accélérateur de site Web dans notre configuration. Il est à noter que cette étape est optionnelle. Vous pouvez tout à fait rester avec la configuration du chapitre précédent qui offre déjà de belles performances.

On commence par installer la dernière version de Varnish en utilisant le dépôt officiel.

apt-get install curl
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
echo "deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-3.0" >> /etc/apt/sources.list.d/varnish.list
apt-get update
apt-get install varnish

La version 3 de Varnish apporte certaines modifications au niveau de la syntaxe des fichiers de configuration. Si vous avez donc une config fonctionnelle en version 2, je vous conseille de lire cette page pour l’adapter.

On commence par éditer le fichier de configuration /etc/varnish/default.vcl:


Puis la manière dont le daemon va se lancer dans le fichier /etc/default/varnish:


Enfin on reconfigure NGinx pour ne plus écouter sur le port 80 (c’est Varnish qui va prendre le relais) mais sur le port 8080. Il suffit de changer la deuxième ligne du fichier /etc/nginx/sites-enabled/wordpress:

...
listen 8080;
...

On n’oublie pas d’ouvrir les port au niveau du Firewall (fichier /etc/init.d/firewall.sh):

# Services that the system will offer to the network
TCP_SERVICES="22 80" # SSH, Web
UDP_SERVICES=""

# Services the system will use from the network
REMOTE_TCP_SERVICES="25 80 443" # Mail, Web browsing
REMOTE_UDP_SERVICES="53" # DNS

...

On relance les services:

service firewall.sh restart
service nginx restart
service varnish restart

Afin pour que Varnish soit prévenu quand un billet est modifié, il faut installer et activier le plugin Varnish HTTP purge.

Le site devrait fonctionner normalement mais avec des performances boostées. Par exemple, le même test Apache Bench donne les résultats suivants:

Requests per second: 9425.03 [#/sec] (mean) (options -t 30 -c 5)

A comparer avec 220 requêtes par secondes sans Varnish…

On voit même une amélioration du temps de chargement des pages (300ms vs 500ms) qui reste constant avec  Load Impact:

Conclusion

On arrive à la fin de ce (trop ?) long billet. Le sujet est vaste et il y a sûrement des améliorations à faire dans la configuration que je viens de vous présenter. Les commentaires ci-dessous sont fait pour partager vos expériences.

Je vous signale également que je regroupe tout les billets sur l’hébergement sur la page suivante.

Catégories
Blog Nagios Open-source Planet-libre

Participez à la prochaine interview de Jean Gabes

Jean Gabes, le « papa » de Shinken, a accepté d »accorder une interview au Blog de Nicolargo avant la prochaine sortie de la nouvelle version de son logiciel de supervision des systèmes d’informations.

J’aimerai que vous, lecteurs du blog, participiez activement à la préparation de cet interview en m’envoyant par mail des questions que vous souhaiteriez lui poser. Une sélection des questions les plus pertinentes sera proposée à Jean.

Pour participer (et gagner au passage un backlink), merci de m’envoyer par mail à l’adresse suivante: contact (a) nicolargo . com (sujet : Interview de Jean Gabes) en n’oubliant pas de donner votre nom/pseudo ainsi que l’adresse URL de votre site/blog (pour le backlink).

Catégories
Blog Open-source Planet-libre Web

Les plugins WordPress du blog

Depuis 4 ans, j’utilise le WordPress pour donner vie à ce blog. Bien que décrié pour ses performances, je trouve que ce CMS propose, par son système de plugins, une flexibilité fonctionnelle que je ne retrouve pas dans les autres logiciels.

Dans ce billet, nous allons voir ensemble la liste des plugins que j’utilise sur Le blog de Nicolargo.

AdRotate

Ce plugin me permet de gérer les espaces publicitaires notamment au niveau du contenu, des dates et des statistiques d’affichage et de click.

After the DeadLine

Ajoute des fonctions de corrections orthographiques et grammaticales à l’éditeur de billets de WordPress.

Align RSS Images

Permet d’avoir un alignement correct des images dans le flux RSS du blog

All In One SEO Pack

Il existe une ribambelle de plugins permettant de s’assurer que le référencement de votre site dans les moteurs de recherches est optimisé. All In One SEO Pack me convient parfaitement même si je dois avouer que j’ai pas mal travaillé le SEO en amont au niveau de mon thème.

Antispam Bee + Askimet

Ce couple me permet de rester relativement à l’abri des spams. Mon taux de faux positif est inférieur à 0.2%. Pour la petite histoire, Askimet a filtré pour moi plus de 24000 spams sur les 12 derniers mois…

Collapsive Archive Widget

Permet d’afficher les archives du blog d’une manière compacte dans la sidebar de droite.

Degradable HTML5 audio and video

Permet d’insérer facilement des tags audio et video (HTML5) dans vos billets. Plus d’informations sur ce plugin dans ce billet.

Feedburner Feed Replacement

Permet de rediriger automatiquement votre flux RSS vers FeedBurner (qui appartient maintenant à Google).

Google Analytics Dashboard

Je suis en train de migrer de Google Analytics vers Piwik. Mais pendant une période de test, je souhaite conserver les deux solutions. Ce plugins permet d’afficher directement les statistiques de consultation dans l’interface d’administration de WordPress.

Google XML Sitemap

Ce plugin permet de générer le fichier sitemap.xml qui est utilisé par Google pour cartographier votre site et ainsi améliorer votre SEO.

LightBox 2

Permet d’afficher les images dans une fenêtre qui vient en sur-impression sur votre site (avec un effet d’ombre) quand on clique dessus.

No Self Ping

Permet de s’assurer que votre site ne se ping pas lui même au niveau des commentaires.

Ranged Popular Posts Widget

Permet d’afficher le TOP des sites en haut de ma sidebar. Plusieurs choix sont disponibles pour l’algorithme qui calcule le classement.

Related Posts

Permet d’afficher une liste de billets en relation avec le billet courant. J’utilise ce plugin dans mon « post footer ». Il permet d’améliorer votre taux de rebond.

Secure WordPress

Permet d’automatiser certaines tâches de sécurisation de votre blog. Lire cet article pour plus d’informations.

SEO Smart Links

Permet de créer automatiquement des liens internes sur certain mots clés. Par exemple, « Nagios » sera redirigé vers ma page Nagios.

Subscribers Text Counter

Permet d’insérer facilement le nombre d’abonnés à vos flux RSS, compte Twitter et Facebook. Je l’utilise en haut à droite de mon blog.

Subscribe To Comments

Permet au lecteur laissant un commentaire de recevoir une alerte par mail si un autre lecteur lui répond.

SyntaxHighlighter Evolved

Affiche les codes (langage de programmation) en couleur et avec les numéros de lignes.

Twit Connect

Propose une authentification sur le blog via son compte Twitter.

W3 Total Cache

Optimise le temps d’affichage des pages. Pour plus d’informations, vous pouvez lire ce billet.

WordPress Download Monitor

Permet de tracker le nombre de téléchargements de fichiers sur votre site. C’est avec ce plugin que je sais que 5252 personnes ont téléchargés mon eBook sur Nagios.

WP-DBManager

Permet d’optimiser, réparer, sauvegarder votre base de données WordPress (MySQL).

WP Minify

Minimise automatiquement vos fichier .css et .js, encore une fois pour réduire le temps de chargement et donc améliorer votre SEO.

WP Security Scan

Vérifie que les fichiers systèmes ne sont pas changés sans une action de votre part (par exemple lors d’une mise à jour).

WP Smush.it

Quand vous uploadez une image sur votre blog, la taille de celle-ci sera automatiquement réduite.

WP Touch

Affiche votre blog de manière optimisée sur les smartphones. Pour les utilisateurs d’iPhone, je rappelle qu’il existe une application dédiée.

 

Vous utilisez d’autres plugins sur vos blogs ?

Catégories
Blog Open-source

Le panier du marché libre #11

Version estivale et bien chargé du panier du marché libre. On y trouve:

 

En bonus, la recette des tomates confites… un vrai régal…

Catégories
Blog Open-source Planet-libre Web

Configurer Piwik pour les sites à fort trafic

Nous avons vu dans un précédant billet comment installer et configurer Piwik comme une alternative libre à Google Analytics. Un des commentaire m’a conduit vers une page du Wiki officiel de Piwik ou il est expliqué que pour un site qui génère plus de quelques centaines de visites pas jour (drôle de définition d’un site à fort trafic :)), une configuration complémentaire est nécessaire.

De base, Piwik traite dynamiquement les données quand vous accédez à l’interface Web. L’idée est de forcer automatiquement cette génération toute les heures pour disposer d’un affichage plus rapide des rapports.

Mise en place du traitement automatique des données

Nous allons utiliser la crontab système pour lancer toutes les heures le traitement des informations stockés dans la base de donnée MySQL. Si vous avez suivi mon tutoriel sur l’installation de Piwik, le script permettant traiter les informations devrait se trouver dans le répertoire suivant: /var/www/piwik/misc/cron/archive.sh.

On commence par vérifier les droits de ce fichier et l’utilisateur a qui il appartient:

ls -alF  /var/www/piwik/misc/cron/archive.sh

-rwxr-xr-x 1 www-data www-data 3832 Mar 29 03:24 /var/www/piwik/misc/cron/archive.sh*

Il est bien en lecture et exécution (rx) pour l’utilisateur www-data.

On peut donc configurer la crontab de l’utilisateur www-data en ajoutant les deux lignes suivantes (je rappelle que pour éditer la crontab  il faut saisir la commande « sudo crontab -u www-data -e »):

MAILTO= »USER@DOMAINE.COM »

5 * * * * /var/www/piwik/misc/cron/archive.sh > /dev/null

Il faut bien sûr remplacer USER@DOMAINE.COM par une adresse mail valide qui sera utilisé en cas de problème pour vous prévenir.

Configurer l’interface Web

Une fois le crontab mis en place, il faut dire à l’interface Web de ne plus traiter automatiquement les données quand vous accédez à un rapport. Pour cela, il faut se rendre dans le menu Paramètres > Onglets Paramètres Généraux:

On demande à Piwik de ne pas traiter les données à partir de l’interface Web (1) puis on configure le délais de 3600 secondes (1 heure) entre deux générations de rapport (2).

Et voili, vous devriez avoir un Piwik qui boost même avec un trafic important !

Catégories
Blog Open-source Planet-libre Systeme Web

WordPress et le trop plein de fichiers sess_*

Hier, plusieurs lecteurs (merci à eux :)) m’ont signalés que le message suivant s’affichait en haut de mon blog (sous WordPress 3.1.3):

Warning: session_start() [function.session-start]: open(/var/lib/php5/sess_7cad11067bb359c89ee47b9e692e47bf, O_RDWR) failed: No space left on device (28) in/www/wp-content/plugins/twitconnect/twitconnect.php on line 95

Ce message n’apparaissait que pour les lecteurs non authentifiés et uniquement sur certaines pages. Dans une premier temps j’ai donc décidé de désactivé le plugin incriminé dans le message d’erreur (TwitConnect qui permet de s’authentifier sur le blog avec son compte Twitter). J’ai ensuite regarder l’espace disque de mon serveur sans voir de problème. C’est en allant regarder les fichiers dans le répertoire /var/lib/php5 que j’ai commencer à comprendre pourquoi le plugin en question n’arrivait plus à générer de fichiers de sessions PHP (les fameux fichier sess_*). Il y avait en effet plus de 200.000 fichiers de ce type dans ce répertoire. On arrivait donc en limite maximale du nombre de fichiers par sous répertoire sous GNU/Linux en ext3.

Le problème vient sûrement d’un des plugins que j’utilise qui doit créer ces fichiers de sessions sans jamais les purger. Je suspecte (sans avoi de confirmation) le plugin TwitConnect et j’ai donc ouvert un incident sur le forum officiel du plugin.

Pour ne plus avoir de mauvaises surprises dans le futur, j’ai donc mis en place dans la crontab root journalière une commande qui va effacer les fichiers de sessions de plus de deux jours:

find /var/lib/php5/ -type f -atime +2 -name ‘sess_*’ -exec rm -f {} \;

Si vous utilisez également le plugin WordPress TwitConnect, je vous conseille donc de jeter un oeil sur ce répertoire et le nombre de fichiers sess_*.

Pour obtenir le nombre de fichier dans ce répertoire il suffit de saisir la commande suivante:

sudo ls -l /var/lib/php5/ | wc -l

En journée (après la purge de la nuit) je tourne autour des 45.000 fichiers (environ 25 nouveaux fichiers par minutes, mais cela dépend du nombre de visites non authentifiées sur votre blog…).

Catégories
Blog Open-source

Le panier du marché libre #10

Dixième édition du panier de liens plus ou moins intéressant que j’ai glané sur la toile.

En bonus la recette des artichauts à la barigoule, perso j’y ajoute un citron confit pendant la cuisson…

Catégories
Blog Open-source Planet-libre Systeme

Script de post installation de Debian Desktop

Comme la plupart d’entre vous, j’ai migré mon poste de travail vers la version 11.04 d’Ubuntu et je dois dire que pour une utilisation professionnelle, je trouve l’interface Unity encore perfectible. J’ai donc dans un premier temps testé la toute fraiche version de Fedora 15 avec Gnome 3 et je suis arrivé plus ou moin à la même conclusion.

J’ai donc décidé de « switcher » vers une Debian 6 (le script doit fonctionner sous Squeeze et Sid en adaptant le sources.list). Je voulais obtenir, au niveau du desktop, un résultat se rapprochant de ce que j’avais dans la version 10.10 d’Ubuntu. C’est à dire:

  • Gnome 2 avec un thème GTK Equinox Evolution Dawn + icônes Faenza
  • Conky avec le thème LUA 2011
  • Mes outils pour le blog et de tous les jours: Chromium, Hotot, Terminator, Shutter, Spotify, Dropbox
  • Une liste de dépôts utile pour mon boulot dans le sources.list (attention, le script utilise des dépôts « Sid » officiels et certains autres pouvant proposer des logiciels ou librairies « non libre »)

Comme je l’avais fait pour Ubuntu, j’ai donc développé un script post install pour Debian 6 qui va automatiser une partie de ces actions.

Le script est disponible dans le GITHub suivant (pour les remarques éventuelles, bug…):

https://github.com/nicolargo/debianpostinstall

Avant / Après

Voici un aperçu du bureau avant l’exécution du script…

… puis après (avec ce fond d’écran):

Téléchargement du script

Il faut saisir les commandes suivantes dans un terminal:

cd ~

wget https://github.com/nicolargo/debianpostinstall/raw/master/debian6postinstall.sh

chmod a+x debian6postinstall.sh

Exécuter le script

Le script nécessite les droits d’administrations. Le plus simple est donc de lancer un terminal administrateur (menu Applications > Accessoires > Terminal Administrateur) puis de saisir la commande suivante:

./debian6postinstall.sh

Un certain nombre d’informations va s’afficher sur l’écran. Si une question vous est posée, il suffit de choisir la réponse par défaut.

Si vous avez des remarques sur ce scripts, je suis comme d’habitude preneur !

Catégories
Blog Open-source Planet-libre

SophiaConf 2011

Le groupe de travail open-source de la Telecom Valley (06) organise juste avant les grandes vacances un cycle de conférences sur 4 jours (du 4 au 7 juillet 2011) sur des sujets pointus comme l' »Open Data« , l’Open Source sur plateforme mobile et embarquée, Android 3.0 et les méthodologies de développement agiles.

Détails du programme SophiaConf 2011:

Lundi 04 juillet : OPEN SOURCE, MOBILE ET EMBARQUE

Mardi 05 juillet : OPEN DATA

Mercredi 06 juillet : ANDROID 3.0 ET TABLETTES

Jeudi 07 juillet : DEVELOPPEMENT AGILE

Les conférences seront données sur le site de l’INRIA entre 17h30 et 20h et permettront d’apprendre et d’échanger. L’inscription gratuite peut être faite en ligne à partir de cette page sur le site officiel.

Pour ma part, je serais présent les mardi, mercredi et jeudi.

Qui viendra ?

Catégories
Blog

[Publi-information] Les annonceurs du blog

Voici un petit billet pour remercier les annonceurs qui participent au développement de ce blog que vous êtes de plus en plus nombreux à suivre. Bien que je ne vive pas de mon site (loin de là :)), ces coups de pouces me permettent de ne pas compter les dépenses sur me moyens de tests (serveurs, accès Internet, VPN…).

Je souhaite également souligner la très bonne relation que j’ai avec ces personnes. N’hésitez donc pas à prendre un peu de temps pour visiter leurs sites.

Si de nouveaux annonceurs sont intéressés, toutes les informations sont sur cette page.

Web4all

Web4all est une association de type loi 1901 spécialisée dans l’hébergement de sites internet. Sa gestion est désintéressée et l’équipe se compose uniquement de bénévoles permettant ainsi de réduire au maximum les dépenses afin de les concentrer sur la partie technique et notamment sur des serveurs haut de gamme. Grâce à son statut, Web4all offre un service de qualité aux clients et adhérents, le tout à un prix compétitif.
La contraction des dépenses s’appuie également sur l’utilisation de systèmes libres dont la réputation n’est plus à faire. On notera ainsi l’utilisation d’applications comme Apache, MySQL, Zimbra, Alfresco et bien d’autres sans oublier les systèmes de supervision (Cacti, Nagios, Centreon, Smokeping).
Bien que juridiquement organisé en association, Web4all propose un service pour héberger vos sites internet équivalent à celui des sociétés commerciales. Les membres du conseil d’administration animés par la volonté de partager leurs compétences, le désir de parfaire leurs connaissances et le souhait d’expérimenter de nouvelles technologies veillent à répondre rapidement aux questions des clients.

LibrA-LinuX

LibrA-LinuX, spécialiste des formations Linux, vous propose des stages, afin de permettre à des utilisateurs de tous niveaux (débutants ou confirmés), d’aborder sereinement l’utilisation et l’administration de systèmes Linux (Debian, Ubuntu, RedHat, Fedora..). Ces formations techniquement enrichissantes, sont animées par des experts, qui mènent en parallèle depuis plusieurs années, la pratique du métier et l’animation de sessions de formation, et ce, dans le but d’accompagner vos équipes dans l’acquisition et le renforcement de leurs compétences sous Linux.

Liste des formations: http://www.libra-linux.com/index.php/Formation-Linux/

M-PLIFY

M-Plify est l’éditeur de la solution en ligne TeamTILT qui permet à partir d’un serveur Nagios, Centreon ou Zenoss d’envoyer des notifications de type  SMS, messages vocaux et notifications push (iPhone) vers vos administrateurs ou vos responsables informatiques. Il suffit juste d’installer le plugin sur votre serveur et de créer un compte sur le site.

A noter que vous pouvez tester gratuitement ce service avec 10 messages offerts à partir de cette adresse.