Apache 2 : Comment changer le DocumentRoot en fonction du port ?

Avoir plusieurs sites sur la même adresse IP

07 février 2012

Il arrive fréquemment en entreprise que vous possédiez des serveurs web sans nom de domaine, uniquement accessibles par leur(s) adresse(s) IP. Ces serveurs peuvent héberger plusieurs sites / applications et bien sûr vous voulez que chacun ait sa propre racine. Ce que nous allons faire, c'est attribuer un site à un port et modifier la configuration d'apache pour changer le DocumentRoot.

Si vous n'avez pas bien en tête ce que représente la notion de port logiciel, je vous conseille de lire ce tutoriel : Qu'est ce qu'un port logiciel ?

Lisez bien les commentaires entre les lignes pour comprendre toutes les commandes. Pour informations, je travaille avec Debian Squeeze et Apache 2.2.16.

Notre serveur contient actuellement deux sites situés dans /var/www, appelons les foo et bar. L'adresse IP du serveur est 192.168.1.3. Le port 1337 redirigera vers foo, le port 4242 vers bar. Attention à ne pas choisir un well known port ! Pour l'exemple, nous n'étudierons que la création de foo, il vous suffira de refaire la même chose pour bar.

Toutes les manipulations sont à faire en tant que root.

Création d'un site disponible

cd /etc/apache2/sites-available

# Creation du fichier foo
touch foo

# Ouverture avec un editeur comme VIM, nano, emacs, gedit ...
nano foo


# Copiez le code suivant dans l'editeur

NameVirtualHost *:1337

<VirtualHost *:1337>
DocumentRoot /var/www/foo
</VirtualHost>

Maintenant il ne reste qu'à activer le site pour qu'apache le prenne en compte et à écouter sur le port 1337.

Activation du site et écoute sur le port 1337

# Activation du site foo.
# Verifiez dans /etc/apache2/sites-enabled que foo existe.
a2ensite foo

cd ..
nano ports.conf

# Ajoutez la ligne en dessous de Listen 80
Listen 1337


# Rechargement de la configuration apache
/etc/init.d/apache2 reload

Et voilà ! Dans votre navigateur 192.168.1.3:1337 devrait afficher foo.

Par
Créateur et administrateur.

Dans la même catégorie

Docker pour les null
Git : annuler le dernier commit sans perdre ses modifications
SSHFS : monter un système de fichier avec SSH
Linux : débloquer une interface graphique gelée
Gnome 3 : changer les raccourcis clavier systèmes
Bash : sortir automatiquement du script si une variable n'est pas initialisée
Bash : sortir automatiquement du script si une commande échoue
GIT : merger 2 commits
Nginx : mettre un serveur par défaut
GIT : Afficher la branche courante dans le prompt
Couper une vidéo ou une musique sous linux
Debian / Ubuntu : installer HTTPS pour APT
Filtrer les lignes affichées par la commande tail
Apache 2 : Créer des sous-domaines dynamiques
Transférer des fichiers sur un smartphone android sans câble USB
Comment connaitre la taille d'un dossier sous linux ?
Surveiller la sortie d'une commande avec watch
Comment lancer ou arrêter un script au démarrage de Linux ?
Comment connaître la version de mon OS Linux ?
Comment afficher le cache ARP sous Linux ?
GIT : les commandes indispensables
Comment trouver mon adresse IP publique ?
Linux : Comment configurer une adresse IP fixe ?
Comment supprimer les fichiers plus vieux qu'une date donnée en bash ?
GIT : Comment ajouter les nouveaux fichiers automatiquement ?
Comment exécuter un script local sur une machine distante avec SSH ?
32 bits ou 64 bits ?
Ecrire dans le sudoers grâce à visudo

Commentaire(s)