Configuration modèle

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche

Présentation

Cette page a pou objet de donner des exemples de configuration Apache à mettre en œuvre.

Introduction

Les modèles de configuration Apache présentés ici s'appuyent sur des variables de configuration (grâce à Define et UnDefine) dont il est possible de s'inspirer pour chaque nouveau vhost.

Exemple Hors Prod

Define app_name myapp.jordan-lenuff.com
Define doc_root_parent "/data/www/MyApp"
Define doc_root_child "public"
# Instance de développement
<VirtualHost *:80>
	Define url_app dev-${app_name}
	ServerName ${url_app}
	DocumentRoot "${doc_root_parent}/DEV"
	ErrorLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
	CustomLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
	LogLevel debug
	
	php_flag log_errors on
	php_flag display_errors off
	# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
	# More information on https://www.php.net/manual/fr/errorfunc.constants.php
	php_value error_reporting "8"
	php_value error_log /data/logs/${app_name}/${url_app}_php_error.log

	# Les deux lignes ci-dessous permettent d'appeler l'application pour chaque dossier des développeurs contenant l'application
	# exemple : http://dev-www.myapp.com/TOTO pointera automatiquement vers le dossier ${doc_root_parent}/DEV/TOTO/${doc_root_child}
	AliasMatch "^/([[:alpha:]]+)(/.*)?" "${doc_root_parent}/DEV/$1/${doc_root_child}$2"	
	<Directory "${doc_root_parent}/DEV/*/${doc_root_child}">
		DirectoryIndex index.html index.php
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>

# Instance de intégration
<VirtualHost *:80>
	Define url_app int-${app_name}
	ServerName ${url_app}
	DocumentRoot "${doc_root_parent}/INTEGRATION/${doc_root_child}"
	ErrorLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
	CustomLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
	LogLevel debug	
	
    php_flag log_errors on
    php_flag display_errors off
	# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
	# More information on https://www.php.net/manual/fr/errorfunc.constants.php
	php_value error_reporting "32767"
	php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
	
	<Directory "${doc_root_parent}/INTEGRATION/${doc_root_child}">
		DirectoryIndex index.html index.php
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>

# Instance de recette
<VirtualHost *:80>
	Define url_app rec-${app_name}
	ServerName ${url_app}
	DocumentRoot "${doc_root_parent}/REC/${doc_root_child}"
	ErrorLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
	CustomLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
	LogLevel debug	
	
    php_flag log_errors on
    php_flag display_errors off
	# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
	# More information on https://www.php.net/manual/fr/errorfunc.constants.php
	php_value error_reporting "32767"
	php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
	
	<Directory "${doc_root_parent}/REC/${doc_root_child}">
		DirectoryIndex index.html index.php
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>

# Instance de préproduction
<VirtualHost *:80>
	Define url_app pprd-${app_name}
	ServerName ${url_app}
	DocumentRoot "${doc_root_parent}/PREPROD/${doc_root_child}"
	ErrorLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
	CustomLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
	LogLevel debug	

	php_flag log_errors on
	php_flag display_errors off
	# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
	# More information on https://www.php.net/manual/fr/errorfunc.constants.php
	php_value error_reporting "32767"
	php_value error_log /data/logs/${app_name}/${url_app}_php_error.log

	<Directory "${doc_root_parent}/PREPROD/${doc_root_child}">
		DirectoryIndex index.html index.php
		AllowOverride All
		Require all granted
		SetEnv APP_ENV "pprd"
	</Directory>
	UnDefine url_app
</VirtualHost>
UnDefine doc_root_child
UnDefine doc_root_parent
UnDefine app_name

Penser à créer les dossiers /data/logs/${app_name} et fichiers de logs associés /data/logs/${app_name}/${url_app}_* :

Exemple pour l'application myapp.jordan-lenuff.com sur le serveur hors production :

mkdir -p /data/logs/myapp.jordan-lenuff.com
touch /data/logs/myapp.jordan-lenuff.com/{dev,rec,int,pprd}-myapp.jordan-lenuff.com_{http_{error,access},php_error}.log
chown -R www:www /data/logs/myapp.jordan-lenuff.com

Exemple Production

Define app_name myapp.jordan-lenuff.com
# Instance de production
<VirtualHost *:80>
	Define url_app ${app_name}
	ServerName ${url_app}
	DocumentRoot "/data/www/MyApp/public"
	ErrorLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
	CustomLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
	LogLevel debug	
	
	php_flag log_errors on
	php_flag display_errors off
	# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
	# More information on https://www.php.net/manual/fr/errorfunc.constants.php
	php_value error_reporting "8"
	php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
	
	<Directory "/data/www/MyApp/public">
		DirectoryIndex index.html index.php
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>
UnDefine app_name

Penser à créer les dossier /data/logs/${app_name} et fichiers de logs associés /data/logs/${app_name}/${url_app}_* :

Exemple pour l'application myapp.jordan-lenuff.com sur le serveur de production :

mkdir -p /data/logs/myapp.jordan-lenuff.com
touch /data/logs/myapp.jordan-lenuff.com/myapp.jordan-lenuff.com_{http_{error,access},php_error}.log
chown -R www:www /data/logs/myapp.jordan-lenuff.com

Mise en oeuvre

Par exemple, pour le site de développement de myapp.jordan-lenuff.com, il va falloir :

  • créer le dossier /data/www/DEV/myapp.jordan-lenuff.com
  • créer le dossier de log /data/logs/myapp.jordan-lenuff.com
  • créer les fichiers de logs http_access.log, http_error.log et php_error.log
  • créer le fichier de configuration /local/www/current/conf/vhosts/myapp.jordan-lenuff.com.conf

Dans la pratique, cela donnera les commandes suivantes :

Putty icon.png Console SSH

dont le contenu du fichier /local/www/current/conf/vhosts/myapp.jordan-lenuff.com.conf sera le suivant :

Define app_name myapp.jordan-lenuff.com
# Instance de développement
<VirtualHost *:80>
	Define url_app dev-${app_name}
	ServerName ${url_app}
	DocumentRoot "/data/www/DEV/myapp.jordan-lenuff.com"
	ErrorLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_error.log 10M"
	CustomLog "|/local/www/current/bin/rotatelogs -t -l -n 15 /data/logs/${app_name}/${url_app}_http_access.log 10M" combined
	LogLevel debug	
	
	php_flag log_errors on
	php_flag display_errors off
	# 32767 for E_ALL, 8 for E_NOTICE, 2 for E_WARNING, 1 for E_ERROR
	# More information on https://www.php.net/manual/fr/errorfunc.constants.php
	php_value error_reporting "8"
	php_value error_log /data/logs/${app_name}/${url_app}_php_error.log
	
	<Directory "/data/www/DEV/myapp.jordan-lenuff.com">
		DirectoryIndex index.html index.php
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
	UnDefine url_app
</VirtualHost>
UnDefine app_name