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
1 2 |
$ cd /etc/httpd/ $ sudo mkdir sites-available sites-enabled |
puis ajouter la directive include au fichier httpd.conf
1 |
$ sudo vim conf/httpd.conf |
1 2 3 |
# 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
1 |
$ sudo vim /etc/httpd/sites-available/glpi.domaine.tld.conf |
1 2 3 4 |
<VirtualHost *:80> ServerName glpi.domain.tld DocumentRoot "/opt/glpi" </VirtualHost> |
1 |
$ sudo vim /etc/httpd/sites-available/ocs.domaine.tld.conf |
1 2 3 4 |
<VirtualHost *:80> ServerName ocs.domain.tld DocumentRoot "/opt/ocs" </VirtualHost> |
Créer le script d’activation de vhost
1 |
$ sudo vim /usr/local/bin/a2ensite |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#!/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
1 |
$ sudo vim /usr/local/bin/a2dissite |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/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
1 2 |
$ 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
1 |
$ a2ensite glpi.domaine.tld |
1 2 3 |
----------------------------------------------- ln: création d'un lien symbolique « /etc/httpd/sites-enabled/glpi.domaine.tld.conf » Success!! Now restart Apache server: sudo systemctl restart httpd |
1 |
$ a2ensite ocs.domaine.tld |
1 2 3 |
----------------------------------------------- ln: création d'un lien symbolique « /etc/httpd/sites-enabled/ocs.domaine.tld.conf » Success!! Now restart Apache server: sudo systemctl restart httpd |
1 |
$ 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
1 |
$ sudo vim /etc/httpd/conf/httpd.conf |
1 |
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.)