[Apache] Activer / Désactiver plusieurs vhost sur Centos

 

Activer / Désactiver plusieurs vhosts sur Centos

Version de l’OS: 6.8

 

Pré-requis

Serveur apache installé

 

 

Pour l’installation d’un serveur GLPI et d’OCS sur la même VM, j’avais besoin de dissocier mes 2 urls.

Je me connectait sous la forme http://glpi.domaine.tld/ocs

Maintenant chaque site a sa propre url, http://glpi.domaine.tld et http://ocs.domaine.tld

 

Pour ce faire créer les répertoires sites-available et sites-enabled

$ cd /etc/httpd/
$ sudo mkdir sites-available sites-enabled

 

puis ajouter la directive include au fichier httpd.conf

$ sudo vim conf/httpd.conf
# Load config files from the config directory "/etc/httpd/conf.d".

Include sites-enabled/*.conf

 

Créer les vhosts dans le répertoire sites-available

$ sudo vim /etc/httpd/sites-available/glpi.domaine.tld.conf
<VirtualHost *:80>
ServerName glpi.domain.tld
DocumentRoot "/opt/glpi"
</VirtualHost>

 

$ sudo vim /etc/httpd/sites-available/ocs.domaine.tld.conf
<VirtualHost *:80>
ServerName ocs.domain.tld
DocumentRoot "/opt/ocs"
</VirtualHost>

 

Créer le script d’activation de vhost

$ sudo vim /usr/local/bin/a2ensite
#!/bin/bash
if test -d /etc/httpd/sites-available && test -d /etc/httpd/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/httpd/sites-available
mkdir /etc/httpd/sites-enabled
fi
avail=/etc/httpd/sites-available/$1.conf
enabled=/etc/httpd/sites-enabled/
site=`ls /etc/httpd/sites-available/`
if [ "$#" != "1" ]; then
echo "Use script: a2ensite virtual_site"
echo -e "\nAvailable virtual hosts:\n$site"
exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi

 

Créer le script désactivation de vhost

$ sudo vim /usr/local/bin/a2dissite
#!/bin/bash
avail=/etc/httpd/sites-enabled/$1.conf
enabled=/etc/httpd/sites-enabled
site=`ls /etc/httpd/sites-enabled/`
if [ "$#" != "1" ]; then
echo "Use script: a2dissite virtual_site"
echo -e "\nAvailable virtual hosts: \n$site"
exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Apache: sudo systemctl restart httpd"
exit 0
fi
fi

 

Donner les droits d’exécution au 2 fichiers

$ sudo chmod +x /usr/local/bin/a2ensite
$ sudo chmod +x /usr/local/bin/a2dissite

 

Puis activer les vhosts ( ne pas spécifier le .conf) et redémarrer le service apache

$ a2ensite glpi.domaine.tld
-----------------------------------------------
ln: création d'un lien symbolique « /etc/httpd/sites-enabled/glpi.domaine.tld.conf »
Success!! Now restart Apache server: sudo systemctl restart httpd

 

$ a2ensite ocs.domaine.tld
-----------------------------------------------
ln: création d'un lien symbolique « /etc/httpd/sites-enabled/ocs.domaine.tld.conf »
Success!! Now restart Apache server: sudo systemctl restart httpd
$ sudo service restart httpd

 

/!\ Pour désactiver un vhost, utiliser la commande a2dissite suivi du nom du vhost

 

/!\ Pour corriger l’erreur ” [warn] _default_ VirtualHost overlap on port 80, the first has precedence ” au démarrage d’apache il faut de-commenter la directive NameVirtualHost dans le fichier httpd.conf

$ sudo vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80

 

 

 

/!\ Petit memo provenant de http://debian-facile.org

<VirtualHost *:80> et </VirtualHost>: Signalent le début et la fin de la section du vhost, en écoute pour toutes les interfaces/adresses IP (*) sur le port 80.

.

ServerAdmin webmaster@localhost : adresse mail où envoyer les messages d’erreur. Devra donc être remplacée par la vôtre
.

ServerName www.blablabla.xxx : Nom utilisé par le vhost, remplacez-le par le nom de votre site (ici site-1)
.

ServerAlias site-1.xxx*.site-1.xxx : ServerAlias définie les autres sous domaines pour lesquels le vhost répondra.
.

DocumentRoot /var/www/htdocs : Répertoire de stockage du site (sa racine). Vous devrez donc modifier cette directive pour qu’elle pointe sur votre racine (ex: /home/www/site-1 )
.

DirectoryIndex index.php : En l’absence de page spécifique demandée par l’internaute, c’est cette page que sera affichée, c’est donc en quelque sorte votre page d’accueil. A modifier donc si votre page d’accueil porte un nom différent (default.html, accueil.php, etc.)

 

 

 

No votes yet.
Please wait...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.