Apache

De Wiki de Jordan LE NUFF
< Technique
Révision datée du 13 août 2019 à 12:26 par Jordan (discussion | contributions) (Page créée avec « == Présentation == Cette page a pour objet de lister les gestes techniques liées au serveur web Apache. Plus d'informations sur le site de l'éditeur : *Apache 2.2 : ht... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Présentation

Cette page a pour objet de lister les gestes techniques liées au serveur web Apache.

Plus d'informations sur le site de l'éditeur :

Rotation des logs

Il est possible d'intégrer une rotation des logs directement dans la configuration Apache.

Pour ce faire, il faut avant tout localiser la commande rotatelogs sur le serveur avec la commande suivante :

which rotatelogs

Exemple de retour :

/usr/sbin/rotatelogs

Une fois la commande localisée, adapter la déclaration des fichiers de logs dans la configuration Apache.

Exemple de configuration de rotation de logs :

<VirtualHost *:80>
	ServerName pprd-appli.mydomain.com
	DocumentRoot "/data/www/PREPROD/appli/"
	ErrorLog "|/usr/sbin/rotatelogs -n 5 /data/logs/pprd-appli.mydomain.com_http_error.log 50M"
	CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/pprd-appli.mydomain.com_http_access.log 50M" combined
	LogLevel debug
	<Directory "/data/www/PREPROD/appli/">
		DirectoryIndex index.php
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
</VirtualHost>

Les logs sont paramétrés pour ne tourner que sur 5 fichiers d'une taille maximale de 50M.

Plus d'informations sur la documentation officielle d'Apache : https://httpd.apache.org/docs/2.4/fr/programs/rotatelogs.html.

Configuration modèle

Voici un modèle de configuration Apache s'appuyant sur des variables de configuration (grâce à Define et UnDefine) dont il est possible de s'inspirer pour chaque nouveau vhost :

Define app_name appli.mydomain.com
# Appli de développement
<VirtualHost *:80>
	Define url_app dev-${app_name}
	ServerName ${url_app}
	DocumentRoot "/data/www/DEV/appli/public"
	ErrorLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}_http_error.log 10M"
	CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}_http_access.log 10M" combined
	LogLevel debug
	
	php_flag log_errors on
	php_flag display_errors off
	php_value error_reporting "E_NOTICE"	
	php_value error_log /data/logs/${url_app}_php_error.log

	<Directory "/data/www/DEV/appli/public">
		DirectoryIndex index.html index.php
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>

# Appli d'intégration
<VirtualHost *:80>
	Define url_app int-${app_name}
	ServerName ${url_app}
	DocumentRoot "/data/www/INT/appli/public"
	ErrorLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}_http_error.log 10M"
	CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}_http_access.log 10M" combined
	LogLevel debug	
	
	php_flag log_errors on
	php_flag display_errors off
	php_value error_reporting "E_ALL"	
	php_value error_log /data/logs/${url_app}_php_error.log
	
	<Directory "/data/www/INT/appli/public">
		DirectoryIndex index.html index.php
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>

# Appli de recette
<VirtualHost *:80>
	Define url_app rec-${app_name}
	ServerName ${url_app}
	DocumentRoot "/data/www/REC/appli/public"
	ErrorLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}_http_error.log 10M"
	CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}_http_access.log 10M" combined
	LogLevel debug	
	
	php_flag log_errors on
	php_flag display_errors off
	php_value error_reporting "E_NOTICE"	
	php_value error_log /data/logs/${url_app}_php_error.log
	
	<Directory "/data/www/REC/appli/public">
		DirectoryIndex index.html index.php
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>

# Appli de préproduction
<VirtualHost *:80>
	Define url_app pprd-${app_name}
	ServerName ${url_app}
	DocumentRoot "/data/www/PREPROD/current/public"
	ErrorLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}_http_error.log 10M"
	CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/${url_app}_http_access.log 10M" combined
	LogLevel debug	
	
	php_flag log_errors on
	php_flag display_errors off
	php_value error_reporting "E_NOTICE"	
	php_value error_log /data/logs/${url_app}_php_error.log
	
	<Directory "/data/www/PREPROD/current/public">
		DirectoryIndex index.html index.php
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>
UnDefine app_name

Autoriser plusieurs dossiers

Dans le cas où il n'est pas envisageable de modifier la configuration Apache à chaque création d'un nouveau dossier, il est possible de donner accès à des dossiers correspondant à une expression régulière (voir la documentation à propos de la directive Directory). Voici un exemple :

# Appli de recette
<VirtualHost *:80>
	ServerAdmin mymail@mydomain.com
	DocumentRoot "/data/www/REC"
	ServerName rec-appli.mydomain.com
	RewriteEngine On
	ErrorLog "|/usr/sbin/rotatelogs -n 5 /data/logs/rec-appli.mydomain.com_http_error.log 10M"
	CustomLog "|/usr/sbin/rotatelogs -n 5 /data/logs/rec-appli.mydomain.com_http_access.log 10M" combined
	php_flag log_errors on
	php_flag display_errors off
	php_value error_reporting "E_NOTICE"	
	php_value error_log /data/logs/rec-appli.mydomain.com_php_error.log
	LogLevel debug
	
	<Directory ~ "/data/www/REC/appli.*">
		Options FollowSymLinks
		AllowOverride All
		Order allow,deny
		Allow from All
	</Directory>
</VirtualHost>

Dans cet exemple, seuls les dossiers commençant par /data/www/REC/appli seront publiés.