{{tag>fr fr:linux fr:serveur fr:web}} ====== Configuration d'Apache ====== Cette page décrit comment fonctionne la configuration d'un site web avec [[linux:serveur_web|Apache]]. ===== Structure ===== Un fichier de configuration apache est structuré, par exemple : Servername www.bouthors.fr ServerAdmin matthieu@bouthors.fr DocumentRoot /var/www Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all RedirectMatch ^/$ /wiki/ Dans cet exemple les balises de structure sont VirtualHost et Directory, et chaque section comporte de nombreuses options comme "Servername", "DocumentRoot", "Options", "allow", ... Les structures fréquemment utilisées sont : * utilisée dans le cadre du virtual hosting * décrit un ensemble de directive à appliquer à un répertoire par rapport au système de fichier. * décrit un ensemble de directive à appliquer sur les url correspondantes. ===== Publier un dossier ===== La première étape consiste à réaliser le lien entre l'arborescence du serveur web (les urls) et le système de fichier en utilisant au choix : * DocumentRoot qui permet de définir la racine du serveur web "/", par exemple : DocumentRoot /var/www * Alias qui est utilisée pour définir une sous partie du serveur web, par exemple "/wiki" : Alias /wiki /opt/dokuwiki Il faut ensuite autoriser apache à publier le dossier /opt/dokuwiki avec une balise en utilisant les options d'autorisation : * Allow définit les autorisations d'accès par IP, DNS ou variable * Deny définit les interdictions d'accès par IP, DNS ou variable * Order définit la priorité entre les règles d'accès et d'interdiction. Si une requête match à la fois Allow et Deny : * Order Allow,Deny interdit la requête * Order Deny,Allow autorise la requête Exemple d'accès total : Alias /wiki /opt/dokuwiki allow from all Order deny,allow Apache permet également l'utilisation de fonctionnalités spécifiques avec la commande "option" qui peut avoir une ou plusieurs des valeurs suivantes : * None : Aucune * All : Tout sauf MultiViews * ExecCGI : Autorise l'exécution de CGI * FollowSymLinks : Suit les liens symbolique\\ La directive directory ne s'applique qu'au répertoire initial.\\ La cible doit être également lisible par Apache, attention cependant à la confidentialité des données du serveur.\\ cette directive ne s'applique pas aux * Includes : Autorise les Includes * IncludesNOEXEC : Autorise les Includes mais désactive les fonctions #exec cmd et #exec cgi * Indexes : Génère un listing des répertoires * MultiViews : Autorise l'utilisation de mod_negociation * SymLinksIfOwnerMatch : Identique à FollowSymlinks mais ne suit que les liens ayant le même propriétaire que la cible Par exemple avec l'autorisation de suivre les liens symboliques : Alias /wiki /opt/dokuwiki Options FollowSymLinks allow from all Order deny,allow Il est possible d'utiliser les opérateurs + et - pour définir des modifications par rapport aux droits hérités. Par exemple pour ajouter le listage des fichiers dans un sous répertoire : Options +Indexes Enfin, il est possible de redéfinir des options directement dans les répertoires avec le fichier ".htaccess". Les options autorisées dans ce fichier sont définies avec la commande "AllowOverride". Par exemple : Alias /wiki /opt/dokuwiki Options +FollowSymLinks AllowOverride All order allow,deny allow from all Exemple de fichier .htaccess qui interdit l'accès à son répertoire : order allow,deny deny from all Remarque : il est également possible de modifier les options sur l'arborescence des urls plutôt que l'arborescence du système de fichier avec la balise à la place de . ===== Personnalisation ===== Il est possible de personnaliser le serveur avec les options suivantes : * ServerAdmin définit l'adresse email indiquée dans les messages d'erreur * ServerSignature définit la signature ajoutée aux documents générés par le serveur Exemple : ServerAdmin matthieu@bouthors.fr ===== Virtual hosting, redirections et reverse proxy ===== Le virtual hosting est utilisé pour héberger plusieurs site webs sur une seule IP publique. Apache permet plusieurs mécanismes : * l'hébergement de plusieurs sites webs virtuels * la redirection de l'utilisateur sur une autre url, également utilisé pour rediriger la racine vers une sous partie du site web * la réécriture pour faire office de reverse proxy et transmettre à un autre serveur web ==== Virtual hosting ==== L'hébergement local de plusieurs site se fait grâce aux options suivantes : * NameVirtualHost décrit quelles IP hébergent des virtual host * définit un virtual host * ServerName définit le nom d'hôte du * ServerAlias permet d'ajouter d'autres noms en plus de ServerName Par exemple pour héberger www.bouthors.fr et web3.bouthors.fr sur le même apache avec deux configurations différentes : ServerName www.bouthors.fr ServerAlias ipv6.bouthors.fr DocumentRoot /var/www ... ServerName web3.bouthors.fr DocumentRoot /var/www ... ==== Redirections ==== Les redirections sont très utilisées, elles permettent d'indiquer à l'utilisateur de faire sa requête auprès d'une autre url. Les commandes utilisées sont : * Redirect redirige un client d'une URL vers une autre. Cette directive map un chemin vers un autre, la cible doit être un chemin absolu. * RedirectMatch redirige les URL correspondant à une expression régulière Exemple de redirection de la racine d'un serveur web : Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all RedirectMatch ^/$ /wiki/ Exemple de redirection inconditionnelle par défaut : RedirectMatch 301 ^/(.*) http://www.bouthors.fr/$1 ==== Reverse Proxy ==== Apache peut également agir en tant que reverse proxy et transmettre la requête à un autre serveur web. Le module mod-proxy est alors utilisé. Il faut dans un premier temps activer mod-proxy : # a2enmod proxy_http Considering dependency proxy for proxy_http: Enabling module proxy. Enabling module proxy_http. Run '/etc/init.d/apache2 restart' to activate new configuration! # /etc/init.d/apache2 restart Puis utiliser la directive ProxyPass. Par exemple rediriger le répertoire /wiki vers le serveur web4 : ProxyPass /wiki/ http://web4.bouthors.fr/wiki/ ===== Paramètres supplémentaires ===== ==== Include ==== Include est utilisé pour insérer un autre fichier. Exemple (à la fin de apache2.conf) : # Include generic snippets of statements Include conf.d/ # Include the virtual host configurations: Include sites-enabled/ ==== Configuration de PHP ==== Dans ///etc/php5/apache2/php.ini// configurer la taille maximum d'upload autorisé, par exemple : upload_max_filesize = 15M Il est également nécessaire de modifier la taille des posts : post_max_size = 8M Dans les cas ou il faut beaucoup de mémoire, modifier memory_limit : memory_limit = 128M ==== Log ==== Les logs peuvent être contrôlées de différentes façons, voici quelques paramètres fréquents : * CustomLog : Définit le nom du fichier de log et son format * ErrorLog : Définit où les logs d'erreur sont envoyées * LogLevel : Définit le niveau de verbosité Exemple : ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined ==== Encodage des caractères spéciaux ==== Le fichier ///etc/apache2/conf.d/charset// définit le Content-Type renvoyé par Apache. Par défaut, il est en UTF8 : AddDefaultCharset UTF-8 Pour configurer le serveur en ISO, il faut indiquer : AddDefaultCharset ISO-8859-15 ===== Links ===== * [[linux:serveur_web]]