Rotation des logs des virtuals hosts

Quand je monte un serveur Web avec de multiples virtuals hosts, j’utilise une arborescence qui m’est spécifique.

Je place les fichiers d’un site dans un dossier /var/www/domain.tld/sub.domain.tld/http et les logs dans un dossier /var/www/domain.tld/sub.domain.tld/logs

Chaque site à donc ses propres fichiers de logs Apache, Nginx ou PHP, ce qui permet de consulter facilement et rapidement les logs d’un site Web, mais ce qui empêche aussi la rotation des logs configurées par défaut lors de l’installation de ces mêmes programmes.

Il faut donc créer des configurations de rotation spécifiques afin que logrotate, le programme en charge de la rotation des logs, soit en mesure d’effectuer correctement la rotation de tout ces fichiers de logs.

Voici ma configuration pour Apache (à placer dans un fichier /etc/logrotate.d/apache2vhost, par exemple)

/var/www/*/*/logs/*_log {
	weekly
	missingok
	rotate 52
	compress
	delaycompress
	notifempty
	create 640 root adm
	sharedscripts
	postrotate
		if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
			/etc/init.d/apache2 reload > /dev/null
		fi
	endscript
}

Voici ma configuration pour Nginx (à placer dans un fichier /etc/logrotate.d/nginxvhost, par exemple)

/var/www/*/*/logs/nginx_*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
 		[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}

Voici ma configuration pour PHP-FPM (à placer dans un fichier /etc/logrotate.d/phpvhost, par exemple)

/var/www/*/*/logs/php5-fpm*.log {
	daily
	missingok
	rotate 15
	compress
	delaycompress
	notifempty
	create 640 root adm
	sharedscripts
	postrotate
		[ ! -f /var/run/php5-fpm.pid ] || kill -USR1 `cat /var/run/php5-fpm.pid`
	endscript
}

Ces configurations sont bien entendu à ajuster en fonction de vos propres configurations : par exemple, PHP-FPM génère par défaut un fichier php5-fpm.log.slow qui ne se termine pas par « .log » …