Outils pour utilisateurs

Outils du site


admin-systeme:httpd-vhost-centos-rhel-apache2-ubuntu

Reproduire les Virtual Hosts Apache2 d'Ubuntu avec HTTPd sur CentOS/Fedora/RHEL

Introduction

Apache sur CentOS, Fedora ou RHEL incite à ajouter les différents virtual hosts à la fin du fichier httpd.conf. A partir d'un certain nombre, ça devient impossible à maintenir.

Sur Ubuntu, et probablement toutes les distributions Debian based, la gestion des vhosts est bien plus pratique : un fichier par vhost et ils sont tous désactivable temporairement. Afin de ne pas devenir chauve avant l'heure, nous allons reproduire ce comportement.

Procédure

Création de l'arborescence

Créons les répertoires destinés à accueillir les virtuals hosts :

  • /etc/httpd/vhosts/disabled : contient les fichiers de configuration des vhosts, mais ils ne sont pas chargés.
  • /etc/httpd/vhosts/enabled : contient des liens symbolique vers les fichiers vhosts, chargés par Apache.

Exécutez en root :

mkdir /etc/httpd/vhosts/
mkdir /etc/httpd/vhosts/disabled
mkdir /etc/httpd/vhosts/enabled

Publication et mise hors ligne d'un site

Histoire de ne pas tout faire à la main à chaque fois, on va créer deux scripts tout simples qui automatisent la mise en ligne/hors ligne d'un site.

  • Le script de mise en ligne d'un site, vim /etc/httpd/vhosts/httpden.sh :
#/bin/bash
 
if [ ! $# -eq 1 ]; then
        echo "Usage: a2en vhost"
fi
 
ln -s /etc/httpd/vhosts/disabled/$1 /etc/httpd/vhosts/enabled/$1.conf
service httpd graceful
  • Le script de mise hors ligne d'un site, vim /etc/httpd/vhosts/httpddis.sh :
#/bin/bash
 
if [ ! $# -eq 1 ]; then
        echo "Usage: a2dis vhost"
fi
 
rm -f /etc/httpd/vhosts/enabled/$1.conf
service httpd graceful

Quelques précisions sur ces scripts :

  • La seule vérification qui est faite est le nombre d'argument. Si nécessaire, on peut faire d'autres vérifications (existence du fichier de configuration, utilisateur, etc.).
  • service httpd graceful permet de recharger les fichiers de configuration d'Apache de façon transparente pour les utilisateurs qui sont connectés à l'un de vos sites (plus d'infos).

Maintenant, on va se créer des alias, pour se simplifier encore plus la vie. Créer un fichier vim /etc/profile.d/httpd.sh, et ajoutez les lignes :

alias httpden="/etc/httpd/vhosts/httpden.sh"
alias httpddis="/etc/httpd/vhosts/httpddis.sh"

Configuration d'Apache

Il faut préciser à Apache qu'il doit charger ces virtual hosts personnalisés. Pour cela, on édite le fichier vim /etc/httpd/conf/httpd.conf, et on ajoute les deux lignes suivantes :

NameVirtualHost *:80
Include vhosts/enabled/*.conf

C'est tout.

Création du premier Virtual Host

Cette partie sert avant tout à préciser le fonctionnement du système qu'on met en place.

Créons le vhost blog, vim /etc/httpd/vhosts/disabled/blog :

#####################################
#      website                      #
#####################################
<VirtualHost *:80>
        ServerName blog.domain.tld
        ServerAdmin contact@domain.tld
        DocumentRoot /var/www/html/blog
        <Directory /var/www/html/blog/>
            Options -Indexes +FollowSymLinks -MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>
 
        ErrorLog /var/log/httpd/blog.error.log
        CustomLog /var/log/httpd/blog.access.log combined
</VirtualHost>

Il ne reste plus qu'à le mettre en ligne :

httpden blog

Vous pouvez maintenant accéder à http://blog.domain.tld, ajouter un virtual host pour le HTTPS, ou mettre le blog hors ligne avec httpddis blog.

Divers

Je ne savais pas trop où mettre ça, mais deux petites raccourcis qui simplifient la vie :

  • Un raccourci vers le répertoire web à la racine du serveur :
ln -s /var/www/html /html
  • Un raccourci vers les logs Apache à la racine du serveur :
ln -s /var/log/httpd /httpd_log
admin-systeme/httpd-vhost-centos-rhel-apache2-ubuntu.txt · Dernière modification: 2013/04/19 13:41 par Arthur Hoaro