Apache

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche
(Contenu remplacé par « ==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 :… »)
Balise : Contenu remplacé
 
(11 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
−
== Présentation ==
+
==Présentation==
 
Cette page a pour objet de lister les gestes techniques liées au serveur web Apache.
 
Cette page a pour objet de lister les gestes techniques liées au serveur web Apache.
  
Ligne 6 : Ligne 6 :
 
*Apache 2.4 : http://httpd.apache.org/docs/2.4/fr/
 
*Apache 2.4 : http://httpd.apache.org/docs/2.4/fr/
  
−
== Rotation des logs ==
+
== Liste des sous-pages==
−
Il est possible d'intégrer une rotation des logs directement dans la configuration Apache.
+
{{#subpages:default=''}}
−
 
 
−
Pour ce faire, il faut avant tout localiser la commande '''rotatelogs''' sur le serveur avec la commande suivante :
 
−
which rotatelogs
 
−
 
 
−
<u>Exemple de retour :</u>
 
−
/usr/sbin/rotatelogs
 
−
 
 
−
Une fois la commande localisée, adapter la déclaration des fichiers de logs dans la configuration Apache.
 
−
 
 
−
<u>Exemple de configuration de rotation de logs :</u>
 
−
<syntaxhighlight lang="apache">
 
−
<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>
 
−
</syntaxhighlight>
 
−
 
 
−
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 à [http://httpd.apache.org/docs/2.4/mod/core.html#define Define et UnDefine]) dont il est possible de s'inspirer pour chaque nouveau ''vhost'' :
 
−
 
 
−
<syntaxhighlight lang="apache">
 
−
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
 
−
# 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/${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
 
−
# 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/${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
 
−
# 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/${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
 
−
# 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/${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
 
−
</syntaxhighlight>
 
−
 
 
−
== 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 [https://httpd.apache.org/docs/2.4/fr/mod/core.html#directory la documentation à propos de la directive Directory]). Voici un exemple :
 
−
 
 
−
<syntaxhighlight lang="apache">
 
−
# 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
 
−
# 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/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>
 
−
</syntaxhighlight>
 
−
 
 
−
Dans cet exemple, seuls les dossiers commençant par <code>/data/www/REC/appli</code> seront publiés.
 
−
 
 
−
==Erreurs connues==
 
−
===Forbidden You don't have permission to access===
 
−
Derrière l'erreur "Forbidden You don't have permission to access [...]" peuvent se cacher de nombreuses causes.
 
−
====Vérifier les droits====
 
−
Il faut vérifier que l'utilisateur du processus ''Apache'' possède bien les droits d'accès au dossier/fichier concerné par l'erreur. Il faut également vérifier que l'existence dudit fichier/dossier.
 
−
====Cohérence du contrôle d'accès====
 
−
Avec Apache 2.2, [https://httpd.apache.org/docs/2.4/fr/howto/access.html la gestion du contrôle d'accès] se faisait avec les directives <code>Order Allow, Deny</code>.
 
−
 
 
−
Avec Apache 2.4, bien que les directives <code>Order Allow, Deny</code> soient encore supportées, la gestion du contrôle d'accès se fait désormais avec la directive <code>Require</code>.
 
−
 
 
−
En 2.4, si, dans la configuration d'un vhost, il est utilisé une gestion d'accès différente de celle utilisé dans la configuration principale d'Apache, l'erreur ''Forbidden You don't have permission to access'' apparaîtra.
 
−
 
 
−
Il faut donc vérifier que la gestion d'accès utilisée est la même pour la configuration principale d'Apache et de ses vhosts.
 
−
 
 
−
===AH00037: Symbolic link not allowed or link target not accessible===
 
−
====Vérifier les droits====
 
−
Il faut vérifier que l'utilisateur du processus ''Apache'' possède bien les droits d'accès au lien concerné par l'erreur. Il faut également vérifier que l'existence dudit lien.
 
−
 
 
−
====Type de contrôle d'accès====
 
−
Sur Apache 2.4, cette erreur survient lorsqu'[https://httpd.apache.org/docs/2.4/fr/howto/access.html un contrôle d'accès] basé sur <code>Order Allow, Deny</code> est défini sur un dossier dont le chemin comporte un lien symbolique.
 
−
 
 
−
En remplaçant le contrôle d'accès par la directive <code>Require</code>, l'erreur disparaît. Cela sous-entend donc de passer sur chaque fichier de configuration Apache pour remplacer TOUTES les contrôle d'accès.
 

Version actuelle datée du 14 mai 2020 à 09:37

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 :

Liste des sous-pages