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é
 
(13 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
 
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
 
</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
 
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>
 
</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