Paramétrage Apache

 

Installation Apache

Tout d'abord installer les paquets Apache. Je vous renvois donc sur cette page où j'en parle...

 

Un site en développement (et un seul environnement)

Si vous voulez gérer un seul site, le plus simple est de mettre votre site sous /var/www ou /var/www/html (suivant les versions)

ou de faire un lien symbolique depuis /var/www /var/www/html vers votre site:

Par exemple pour /var/www/html, lancer une console et passer en super utilisateur root (su et tapez le mot de passe root).

Puis cd /var/www

Enfin ln /home/moncompte/monsite html -s

moncompte est votre nom utilisateur Unix et monsite est le répertoire de dev de votre site.

 

Multi-sites

Explications

Si vous avez plusieurs sites en dev (voire plusieurs environnements dev, test, ..., production), cela se complique un peu...

L'idée est de créer autant de hosts (serveurs) virtuels que nécessaire (en principe un par site en cours de dev !)

 

Pour Apache sous Mandriva/Mageia

Tout se passe sous /etc/httpd/ (donc, /etc oblige, il faudra là aussi être en root pour apporter des modifications !)

Les fichiers de configuration se trouvant sous conf

Vous trouverez httpd.conf qui permet de configurer votre serveur apache.

Par exemple pour inclure php, vous trouverez:

  • Une entrée, avec AddModule mod_php4.c
  • Ainsi qu'une entrée "DirectoryIndex" précisant l'ordre de recherche des fichiers index par exemple index.html , index.htm et index.php
  • La définition des mimes comme une entrée "AddType application/x-httpd-php .php" toujours pour php...

A la fin de ce fichier, vous trouverez sûrement une ligne comme celle-ci:

Include conf/vhosts.d/*.conf

cette commande va permettre d'inclure des fichiers .conf contenus dans le répertoire vhosts.d. Vous placerez en effet les fichiers .conf ici, c'est eux qui permettront de configurer vos serveurs virtuels...

 

Pour Apache pour Debian, Ubuntu, Raspbian

Tous les fichiers de configuration Apache sont stockés dans /etc/apache2/ :

  • apache2.conf Configuration générale

Puis Apache va rechercher les fichiers *.conf présents dans les répertoires suivant (et dans cet ordre, voir les includes correspondants dans apache2.conf)

  • mods-available/ pour indiquer les modules disponibles
  • mods-enabled/ pour indiquer les modules activés parmi ceux qui sont disponible (a2enmod, a2dismod)
  • sites-available/ Précise les sites disponibles (C'est ici que vous allez créer les fichiers de configuration de vos sites)
  • sites-enabled/ Précise les sites activés parmis ceux qui sont disponibles (a2ensite, a2dissite)

Suivant la version de votre Apache, vous interviendrez dans le répertoire et le fichier correspondant ! Si httpd.conf est vide ou inexistant, alors il est probable qu'il s'agisse de apache2.conf qui doive être utilisé, et vice versa ...

 

/etc/hosts

Mais avant de travailler sur ces fichiers, vous allez créer des adresses ip qui seront utilisées par vos serveurs virtuels (en les nommant en passant, ce sera plus simple !).

Image non trouvée !Cette solution permet de se créer un serveur local donc non visible depuis l'extérieur !

Pour cela, il suffit d'ajouter ces serveurs dans le fichier /etc/hosts (Connexion root toujours nécessaire via su !)

Par exemple

127.0.0.2 monsite

127.0.0.3 monsecondsite

Image non trouvée !N'utilisez pas le 127.0.0.1 qui est normalement réservé à localhost ! De même, si des adresses sont déjà indiquées dans ce fichier, ne les reprennez pas pour votre nouveau serveur ! De plus, votre addresse IP devrait toujours commencer par 127.

 

vHosts

Il reste maintenant à définir votre serveur virtuel dans apache:

  • soit sous /etc/httpd/conf/vhosts.d dans un fichier monsite.conf (Mandriva/Mageia)
  • soit sous /etc/apache2/sites-available dans un fichier monsite.conf (Debian, ubuntu, Raspbian)

 

ou monsite est le nom de votre site (cela permet de s'y retrouver plus tard plus facilement !)

Voici un exemple:

  • /etc/httpd/conf/vhosts.d

  • /etc/apache2/sites-available

Sans entrée dans le détail des commandes, il est indiqué le la racine du site (DocumentRoot), le nom du serveur, ...

Le plus important étant d'avoir l'adresse IP de VirtualHosts identique à celui mise dans le fichier /etc/hosts !

Pour finir, il est indiqué dans DocumentRoot et dans Directory un répertoire. C'est là que devra se trouver les fichiers de notre site (Là encore, il sera possible de faire un lien symbolique vers le répertoire contenant effectivement le code de votre site).

Image non trouvée ! Bien mettre comme extension .conf à la fin de votre fichier, sinon il ne sera pas interprété par le serveur apache !

Sinon, pour les détails, voir ici !

 

Pour les sites postionnés sous /etc/apache2/sites-available, il faut ensuite rendre "enable" votre site, sinon, vous ne pourrez pas vous y connecter.

Pour ajouter (ou retirer) votre site dans le répertoire sites-enable/, vous utiliserez les commandes

a2ensite : Apache2 Enable Site pour rendre accessible (enable) votre site

a2dissite : Apache2 Disable Site pour rendre disable votre site.

Exemple

a2ensite nom_vhost

NoteCes commandes vont créer ou supprimer un lien symbolique vers le fichier correspondant sous sites-available.

NoteLes commandes a2enmod, a2dismod sont similaires, mais pour des modules.

 

Lancer/Relancer/Stoper Apache

Après avoir modifié tous ces fichiers, il est préférable de relancer le serveur apache (voir services).

Il s'agit d'un démon, il suffit donc de lancer/relancer/stoper un service

Sous Mandriva:

/etc/init.d/httpd avec une option en paramètre

start pour lancer

stop pour stoper

restart pour relancer.

 

Sous Mageia:

start pour lancer

stop pour stoper

systemctl restart httpd.service

 

Pour Debian, Ubuntu, RaspBian:

Il faut utiliser la commande service <nom_du_service> <option>

service apache2 start

service apache2 stop

service apache2 restart Arrête le service et lance à nouveau le service (stop + start)

Il est possible d'utiliser reload, qui demande dans ce cas à Apache de simplement relire les fichiers de configuration


Si apache ne se relance pas, les causes peuvent être nombreuses. Contrôlez la cohérence de DocumentRoot et de Directory...

Vous pouvez aussi consulter la log sous /var/log/httpd

 

Apache Code 403

Malgré toutes mes explications, vous obtenez un code 403 lorsque vous entrez le 127.0.0.x de votre site:

Il faut regarder les logs pour en savoir plus !

Généralement, les logs apaches se trouvent sous /var/log/httpd

Deux fichiers seront présents: acces_log et error_log.

Le second est celui qui va nous permettre de comprendre votre problème...

Les causes possibles sont:

- Link non autorisé (entrez un nom de répertoire pour accéder au site)

- Problème de droits d'accès (chmod pour corriger le problème. Le répertoire doit être au minimum à rx, éventuellement chown pour www-data:www-data.). Pas de balise <Directory> vers le répertoire de votre site ou au moins un parent (Dans httpd.conf ou vhosts.conf).

- Une inversion de la clause order dans votre fichier .conf: order deny, allow les ips déclarés dans allow (ip en liste blanche) sont prioritaires à ceux de deny (liste noire) alors que order allow, deny donnera la priorité à l'interdiction des ips déclarés dans deny (non, il n'y a pas d'erreur dans l'ordre d'écriture des commandes order indiquées ici !).

- Votre Ip est dans la liste des deny... (Ex. deny 127.0.0.1/32 pour interdire les ip de 1 à 32 ou deny 127.0.0.1 127.0.0.3, pire Deny from all).

- La directive DirectoryIndex qui permet de lister les fichiers index (index.html, index.htm ou index.php) ne permet pas à apache de trouver un fichier index. De plus la directive option -indexes est positionnée dans votre fichier .conf, ne permettant pas à apache de lister l'ensemble des fichiers présents dans le répertoire accédé. Apache ne peut donc rien faire de plus que de vous interdire l'accès.

 

Sécurité !

Le point le plus important, surtout si votre site est accessible depuis l'extérieur:

Sécurisez votre serveur Web !

Mais aussi Sécurisez votre site !!!

D'où ce chapitre sur la sécurité...

 

Rendre accessible son site à l'extérieur

Ne faire cette opération qu'une fois toutes les sécurités positionnées !

Une solution est d'utiliser une espace web de votre FAI ou tout autre fournisseur sur lequel vous allez diffuser votre site (Cf. mes explications sur la création de votre espace web avec Free).

Une autre solution est d'utiliser un serveur dédié depuis chez vous. Dans ce cas, l'accès au monde extérieur se fera grâce à votre box.

Note Dans ce cas, il sera possible de vous géolocaliser via l'adresse IP de votre box, point d'entrée vers votre site, n'indiquez pas dans votre site que vous partez en vacances sur la période du ... au ...Les voleurs vous en remercieront sinon !

Il faudra dans ce cas impérativement fixer l'adresse IP de ce serveur, car il faudra indiquer à la box cette adresse IP pour rediriger tous les accès provenant de l'extérieur vers votre serveur qui traitera les requètes HTTP.

Puis positionnez votre serveur en zone DMZ ou redirigez l'adresse IP et le port.

Ensuite, il sera possible de demander un nom de domaine pour simplifier l'accès à votre site web plutôt que d'utiliser l'adresse IP pour se connecter. Mais c'est un tout autre sujet...

 

Annexes

Quelques détails sur le paramétrages de votre serveur web.

Le fichier .htaccess

 

Pour consulter la log Apache en cas d'erreur au lancement:

Suivant le démon installé, les logs seront disponibles

  • Sous Mageia qui utilise dans les dernières versions systemd passe par l'outil journalctl

journalctl -xn ou encore journalctl --since "1 hour ago"

D'autres log sont disponibles sous

/var/log/httpd

  • Sous Debian, Raspbian, ubuntu, ... qui utilisent le démon rsyslog (le nouveau syslog)

/var/log/apache2