Virtual hosting
Résolu/Fermé
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
-
16 avril 2018 à 00:15
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 18 avril 2018 à 00:37
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 18 avril 2018 à 00:37
A voir également:
- Virtual hosting
- Virtual dj gratuit - Télécharger - DJ & Karaoké
- Virtual dub - Télécharger - Montage & Édition
- Atomix virtual dj - Télécharger - DJ & Karaoké
- Virtual cable - Télécharger - Audio & Musique
- Virtual pc - Télécharger - Émulation & Virtualisation
1 réponse
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
Modifié le 16 avril 2018 à 01:51
Modifié le 16 avril 2018 à 01:51
Bonjour,
Apache gère l'hébergement le "virtual hosting" nativement, sans module.
Les hôtes virtuels se définissent dans la configuration de Apache, quelle que soit la méthode choisie pour installer Apache et les autres composants (apt-get, net-install, ...).
Sous Debian et Ubuntu, on crée généralement un fichier « .conf » par hôte virtuel dans le dossier /etc/apache2/sites-available/
Par exemple :
- monsite1.com et www.monsite1.com => /etc/apache2/sites-available/monsite1.com.conf
- admin.monsite1.com => /etc/apache2/sites-available/admin.monsite1.com.conf
- monsite2.com => /etc/apache2/sites-available/monsite2.com.conf
Pourquoi mettre monsite1.com et www.monsite1.com dans le même fichier de .conf, mais placer admin.monsite1.com dans un autre fichier .conf ?
Car tu ne peux définir qu'un seul dossier racine (DocumentRoot) par VirtualHost.
Je te conseille de placer tous les domaines et sous-domaines pointant vers le même dossier dans le même fichier .conf.
Il faudra définir le nom principal (domaine / sous-domaine) avec la directive ServerName et les autres domaines / sous-domaines avec ServerAlias.
Il n'y a pas toujours un nom qui est "plus principal" qu'un autre mais il faudra faire un choix.
Exemple : monsite1.com, www.monsite1.com et secure.monsite1.com doivent pointer vers le même dossier car ils doivent afficher le même site, mais seul secure.monsite1.com dispose d'un SSL valide.
Dans ce cas, le fichier /etc/apache2/sites-available/monsite1.com.conf ressemblera à :
Cette "fusion" de tous les domaines / sous-domaines associés au même DocumentRoot dans le même fichier .conf n'est pas une obligation, tu peux aussi placer chaque nom en tant que ServerName dans un VirtualHost séparé.
Tu peux aussi placer plusieurs VirtualHost dans un même fichier .conf.
C'est assez flexible, mais ces .conf devront être activés individuellement (voir paragraphe suivant).
En plaçant plusieurs VirtualHost dans un même .conf, tu pourras activer/désactiver tous ces VirtualHost simultanément et uniquement.
L'activation d'un fichier "sites-available/*.conf" se fait à l'aide de la commande a2ensite. Celle-ci crée un lien symbolique dans "sites-enabled". Apache charge tous les fichiers dans "sites-enabled" par inclusion depuis le fichier principal. Les fichiers dans "sites-available" sont ignorés. L'ordre du nom des fichiers peut avoir de l'importance. L'opération inverse fait appel à la commande a2dissite.
Pour plus d'informations :
http://httpd.apache.org/docs/current/vhosts/
http://httpd.apache.org/docs/current/vhosts/name-based.html
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-debian-8
Apache gère l'hébergement le "virtual hosting" nativement, sans module.
Les hôtes virtuels se définissent dans la configuration de Apache, quelle que soit la méthode choisie pour installer Apache et les autres composants (apt-get, net-install, ...).
Sous Debian et Ubuntu, on crée généralement un fichier « .conf » par hôte virtuel dans le dossier /etc/apache2/sites-available/
Par exemple :
- monsite1.com et www.monsite1.com => /etc/apache2/sites-available/monsite1.com.conf
- admin.monsite1.com => /etc/apache2/sites-available/admin.monsite1.com.conf
- monsite2.com => /etc/apache2/sites-available/monsite2.com.conf
Pourquoi mettre monsite1.com et www.monsite1.com dans le même fichier de .conf, mais placer admin.monsite1.com dans un autre fichier .conf ?
Car tu ne peux définir qu'un seul dossier racine (DocumentRoot) par VirtualHost.
Je te conseille de placer tous les domaines et sous-domaines pointant vers le même dossier dans le même fichier .conf.
Il faudra définir le nom principal (domaine / sous-domaine) avec la directive ServerName et les autres domaines / sous-domaines avec ServerAlias.
Il n'y a pas toujours un nom qui est "plus principal" qu'un autre mais il faudra faire un choix.
Exemple : monsite1.com, www.monsite1.com et secure.monsite1.com doivent pointer vers le même dossier car ils doivent afficher le même site, mais seul secure.monsite1.com dispose d'un SSL valide.
Dans ce cas, le fichier /etc/apache2/sites-available/monsite1.com.conf ressemblera à :
<VirtualHost *:80>
ServerName monsite1.com
ServerAlias www.monsite1.com secure.monsite1.com
DocumentRoot /home/user1/vhosts/monsite1.com/
# ...
</VirtualHost>
Cette "fusion" de tous les domaines / sous-domaines associés au même DocumentRoot dans le même fichier .conf n'est pas une obligation, tu peux aussi placer chaque nom en tant que ServerName dans un VirtualHost séparé.
Tu peux aussi placer plusieurs VirtualHost dans un même fichier .conf.
C'est assez flexible, mais ces .conf devront être activés individuellement (voir paragraphe suivant).
En plaçant plusieurs VirtualHost dans un même .conf, tu pourras activer/désactiver tous ces VirtualHost simultanément et uniquement.
L'activation d'un fichier "sites-available/*.conf" se fait à l'aide de la commande a2ensite. Celle-ci crée un lien symbolique dans "sites-enabled". Apache charge tous les fichiers dans "sites-enabled" par inclusion depuis le fichier principal. Les fichiers dans "sites-available" sont ignorés. L'ordre du nom des fichiers peut avoir de l'importance. L'opération inverse fait appel à la commande a2dissite.
Pour plus d'informations :
http://httpd.apache.org/docs/current/vhosts/
http://httpd.apache.org/docs/current/vhosts/name-based.html
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-debian-8
Modifié le 16 avril 2018 à 16:07
Je vais détailler les fichiers .conf du VPS qui contient déjà plusieurs sites pour bien intégrer ce que tu viens de m'expliquer et j'essayerai de configurer ça sur le VPS en cours de configuration. Je ne ferme donc pas ce fil de suite mais très prochainement quand j'aurai effectué mes tests que j'espère concluants.
En tout cas, encore une fois merci. Bonne journée.
17 avril 2018 à 18:43
Au départ DocumentRoot était en /var/www/html (appelé à disparaître)
J'ai créé les répertoires différents pour deux domaines :
- /var/www/vhosts/domaine1.fr/httpdocs
- /var/www/vhosts/domaine2.fr/httpdocs
Dans ces deux répertoires j'ai créé des pages index différentes mentionnant l'endroit l'on était (sur le site de tel somaine)
J'ai ensuite créé les fichiers de configuration d'hôtes virtuels a minima pour ces deux domaines :
- /etc/apache2/sites-available/domaine1.fr.conf
- /etc/apache2/sites-available/domaine2.fr.conf
Puis, j'ai relancé le serveur apache2 après avoir validé les hôtes virtuels par la commande a2ensite (voulant dire, je suppose : apache2-enable-site).
Mes noms de domaines ont été acquis chez GANDI. Je suis allé dans mon compte GANDI et pour chacun de ces deux domaines j'ai modifié les DNS pour les faire pointer tous les deux sur la même adresse IP, celle de mon hébergement. Attente d'une demi-heure/trois-quarts d'heure environ (temps de propagation des données des DNS sur Internet).
Tests à partir de plusieurs navigateurs (PC et smartphones). On arrive sur le même hébergement à l'endroit qui correspond bien à l'URL indiquée. Tout va donc très bien, le plus dur est fait (s'approprier la mécanique). Merci encore.
Il me reste à peaufiner les fichiers de configuration domaine1.fr.conf et domaine2.fr.conf
En effet, pour la suite et comme ça va évoluer, j'aimerais que ça soit carré, d'entrée de jeu et que je sache où ranger mes affaires surtout si je dois rajouter des domaines. je compte donc créer, pour chaque domaine (je prends pour l'exemple qui suit : domaine1.fr) les répertoires suivants :
- déjà créé et opérationnel
- pages à envoyer en cas d'erreurs (404 etc.)
- Les fichiers logs du domaine
- Au cas où...
- httpdoc du sous-domaine qui existera
- httpdoc du sous-domaine qui existera
et comme deux sous-domaines existeront, il y aura deux répertoires supplémentaires (et donc deux fichiers .conf supplémentaires)
- /var/www/vhosts/domaine1.fr/logs/blog.domaine1.fr/
- /var/www/vhosts/domaine1.fr/logs/genealogie.domaine1.fr/
Mêmes tirs, mêmes éléments, ce sera sur le même principe pour la mise en place du domaine2.fr
La chose qui me reste à chercher sont les variables ainsi que leur valeur à placer dans chacun des fichiers .conf pour placer les logs, chercher les pages d'erreurs au bon endroit et pouvoir facilement rajouter un hôte virtuel en prenant la même architecture de répertoire et le même modèle de fichier .conf
En fait, je n'ai besoin que de deux ou trois directives à placer dans ces fichiers .conf ; en fouinant bien partout et en lisant complètement la doc dont tu m'as donné les liens, je vais bien finir par les trouver mais comme tu m'as l'air d'avoir bien saisi l'histoire puisque tu m'as été d'une aide efficace, si tu connais le nom de ces deux ou trois variables (le chemin des logs et les documents d'erreur ; la valeur c'est le répertoire visé) ça me ferait gagner un temps précieux. Si tu sais, c'est super. Si tu ne t'en rappelles plus, ne te mets pas martel en tête, je finirai par trouver et merci de m'avoir permis de comprendre la mécanique du schmilblic et d'arriver jusque là.
A bientôt.
18 avril 2018 à 00:13
Le problème est réglé.
En fait le modèle de fichier .conf d'un hôte virtuel qu'on trouve dans la doc précise les directives
pour les fichiers journaux. J'ai cherché partout à quel endroit redéfinir la vaiable ${APACHE_LOG_DIR}
Je me suis rendu compte que c'était idiot. En effet, une variable n'a d'intérêt que si elle est définie en un seul endroit pour être utilisée ensuite plusieurs fois à des endroits différents. Ça évite en cas de modifications de devoir modifier partout. Or là, dans ce que je veux obtenir (chaque domaine et sous-domaine, ses logs propres) Les paramètres ErrorLog et CustomLog seront forcément différents pour chaque fichier .conf ; je me suis donc passé de la variable pour écrire directement le chemin réel dans le fichier .conf
J'ai vérifié, ça fonctionne du feu de Dieu !
Merci de m'avoir mis sur la voie. Je te remercie vraiment et te souhaite une bonne continuation.
Fil marqué comme résolu. Bye.
Modifié le 18 avril 2018 à 01:31
Tu peux spécifier le chemin + le format des logs d'accès à l'aide de la directive CustomLog au sein de chaque VirtualHost.
Pour spécifier uniquement le chemin (et utiliser le format par défaut ou défini avec LogFormat), il y a la directive TransferLog
Un exemple pour blog.domaine1.fr :
(non testé mais je ne vois pas d'erreur au 1er coup d'œil)
N'hésite pas à t'inspirer du VirtualHost par défaut (dans sites-available/000-default.conf de mémoire).
Cette page contient une note intéressante concernant la gestion des logs avec les VirtualHost :
https://httpd.apache.org/docs/2.4/logs.html#virtualhost
La documentation d'Apache est très complète et je crois que la majorité des documents sont même traduits en français si tu n'es pas à l'aise avec l'anglais. Il y a aussi des tonnes d'articles sur le Web traitant de tous les cas de figure imaginables. En cas de besoin, la communauté CCM reste à ta disposition.
Merci d'avoir pris le temps de me lire et de remercier !
EDIT: Je n'avais pas vu ta dernière réponse, ça donne l'impression que je répète ce que tu dis, oups. Mais c'est une bonne chose que tu aies trouvé par toi-même !