Fig 1: VirtualHost basé sur IP Apache.
VirtualHost basé sur le nom: Dans VirtualHost basé sur le nom, un serveur Apache a une seule adresse IP et plusieurs noms de domaine configurés pour chaque site Web. Dans un serveur DNS, chacun de ces noms de domaine reçoit l'adresse IP du serveur Apache. Selon le nom de domaine utilisé par le client, le serveur renvoie différents sites Web.
Fig 2: VirtualHost basé sur le nom d'Apache.
Dans cet article, je vais vous montrer comment configurer VirtualHost basé sur le nom Apache. J'utiliserai Ubuntu 18.04 LTS pour la démonstration. Mais cela devrait fonctionner sur n'importe quelle distribution Linux moderne avec peu ou pas de changement. Alors, commençons.
Installation du serveur Web Apache 2:
Le serveur Web Apache 2 est disponible dans le référentiel officiel de package d'Ubuntu 18.04 LTS. Ainsi, vous pouvez facilement l'installer avec le gestionnaire de packages APT.
Tout d'abord, mettez à jour le cache du référentiel de package APT avec la commande suivante:
$ sudo apt mise à jour
Maintenant, exécutez la commande suivante pour installer le serveur Web Apache 2:
$ sudo apt install apache2
Maintenant, appuyez sur y Et puis appuyez sur continuer.
Le serveur Web Apache 2 doit être installé.
Configuration du DNS:
Maintenant, vous devez configurer le serveur DNS pour cartographier les noms de domaine que vous souhaitez utiliser pour VirtualHost à l'adresse IP de votre serveur Apache.
Vous pouvez trouver l'adresse IP de votre serveur Apache avec la commande suivante:
$ ip a | Egrep "Inet"
Comme vous pouvez le voir, l'adresse IP dans mon cas est 192.168.21.166. Ce sera différent pour vous. Alors, assurez-vous de le remplacer par le vôtre à partir de maintenant.
Si vous souhaitez apprendre à configurer Apache VirtualHost localement, vous pouvez utiliser le / etc / hôtes dossier pour la résolution DNS / nom locale.
Pour configurer la résolution DNS locale, ouvrez le / etc / hôtes déposer avec nano comme suit:
$ sudo nano / etc / hôtes
Maintenant, ajoutez la ligne comme marqué dans la capture d'écran ci-dessous au fichier. Puis appuyez + X suivie par y et Pour enregistrer le fichier.
Maintenant, la résolution du nom local devrait fonctionner.
Structures du répertoire:
Je souhaite conserver toutes les données du site Web de mon Apache VirtualHost dans un répertoire spécifique / www. Ici, je veux créer un répertoire pour chaque utilisateur. Chaque utilisateur aura le sien public_html / et journaux / Annuaire aussi.
Par exemple, pour 3 utilisateurs Bob (Exemple1.com), Alice (Exemple2.com), Linda (Exemple3.com), La structure du répertoire est la suivante:
/ wwwUn moyen facile de le faire est de créer un modèle ou un répertoire squelette et d'y mettre la structure du répertoire. Créez ensuite chaque utilisateur à l'aide de ce répertoire squelette.
Copiez d'abord le contenu du répertoire squelette par défaut / etc / skel à un autre répertoire / etc / skel-www comme suit:
$ sudo cp -rv / etc / skel / etc / skel-www
Maintenant, accédez au nouveau répertoire squelette comme suit:
$ cd / etc / skel-www
Créez ensuite la structure du répertoire souhaité à l'intérieur du répertoire squelette comme suit:
$ sudo mkdir -p www / public_html, journaux
Vous pouvez également créer une valeur par défaut indice.html fichier dans le public_html / Répertoire si vous voulez.
$ echo "Ça marche
"| Sudo Tee www / public_html / index.html
Maintenant, créez le / www Répertoire avec la commande suivante:
$ sudo mkdir / www
Création d'utilisateurs:
Maintenant, vous pouvez créer l'utilisateur bob pour www.Exemple 1.com comme suit:
$ sudo useradd --create-home --home-dir / www / example1.com - shell
/ bin / bash --gid www-data --skel / etc / skel-www bob
De la même manière, créez l'utilisateur Alice pour www.exemple2.com comme suit:
$ sudo userAdd --create-home --home-dir / www / example2.com --shell / bin / bash
--gid www-data --SKEL / etc / skel-www Alice
Encore une fois, créez l'utilisateur Linda pour www.Exemple3.com comme suit:
$ sudo useradd --create-home --home-dir / www / example3.com --shell / bin / bash
--gid www-data --skel / etc / skel-www linda
Ici, j'ai attribué le groupe principal de chaque utilisateur à www-data. Par défaut, Apache Server s'exécute en tant que ce groupe. Si je n'avais pas fait cela, Apache Server ne pourra pas accéder aux fichiers dans le public_html / répertoire et créer des fichiers journaux dans le journaux / annuaire.
Configuration d'Apache VirtualHost:
Maintenant, vous êtes prêt à configurer Apache VirtualHost pour 3 utilisateurs bob (www.Exemple 1.com), Alice (www.exemple2.com) et linda (www.Exemple3.com).
Le répertoire de configuration du site Apache par défaut sur Ubuntu est / etc / apache2 / sites disponible.
Maintenant, accédez au répertoire / etc / apache2 / sites-disponible / comme suit.
$ cd / etc / apache2 / sites-disponible /
Tout d'abord, créez un nouveau fichier de configuration pour Bob www.Exemple 1.com.confli comme suit:
$ sudo nano www.Exemple 1.com.confli
Un éditeur de texte doit être ouvert.
Maintenant, saisissez les lignes suivantes.
Exemple de nom de serveur1.com
Serveralias www.Exemple 1.com
DocumentRoot "/ www / example1.com / www / public_html "
Options -SollowSymLinks + MultiViews + Index
Allaiter tout
Exiger tous les accords
Errorlog "/ www / example1.com / www / logs / erreur.enregistrer"
CUSTUMLOG "/ www / example1.com / www / logs / accès.journal "combiné
Remarque: modifiez les textes audacieux en fonction de votre exigence.
Enfin, le fichier de configuration www.exemple.com.confli devrait regarder comme suit. Presse + X suivi de y et Pour enregistrer le fichier de configuration.
Pour copier simplement le fichier de configuration pour bob (www.Exemple 1.com.confli) et apporter les petits modifications requises.
Copier le fichier de configuration de bob pour Alice et linda avec les commandes suivantes:
$ sudo cp -v www.Exemple 1.com.Conf www.exemple2.com.confli
$ sudo cp -v www.Exemple 1.com.Conf www.Exemple3.com.confli
Maintenant, modifiez le fichier de configuration de Alice comme suit:
$ sudo nano www.exemple2.com.confli
Maintenant, changez toutes les occurrences de Exemple 1 pour exemple2. Puis enregistrez le fichier.
Faire la même chose pour linda.
$ sudo nano www.Exemple3.com.confli
Changer toutes les occurrences de Exemple 1 pour Exemple3 et enregistrer le fichier.
Activation des configurations VirtualHost:
Maintenant, désactivez la configuration du site Web par défaut Apache comme suit:
$ sudo a2dissite 000-défaut.confli
Maintenant, activez les configurations VirtualHost www.Exemple 1.com.confli, www.exemple2.com.confli, www.Exemple3.com.confli comme suit:
$ sudo a2ensite www.Exemple 1.com.Conf www.exemple2.com.Conf www.Exemple3.com.confli
Enfin, redémarrez le service Apache comme suit:
$ sudo systemctl redémarrer apache2
Maintenant, essayez d'accéder aux sites Web www.Exemple 1.com, www.exemple2.com, www.Exemple3.com
Comme vous pouvez le voir, tous ces sites Web fonctionnent comme prévu.
NOTE: J'ai changé la page par défaut indice.html Pour chaque sites afin que ce soit un peu différent pour chaque site Web à des fins de test. Sinon, vous ne pourrez pas dire si la configuration VirtualHost fonctionne ou non.
C'est donc ainsi que vous configurez le nom basé sur APACHE VirtualHost sur Ubuntu 18.04 LTS. Merci d'avoir lu cet article.