Configuration virtualhost héberger plusieurs domaines

Bonjour, je suis nouveau sur Linux, je souhaite héberger mes sites web sur mon serveur perso.

J’ai installé Debian 10 et LAMP avec succès, mais je n’arrive pas à configurer appache pour héberger plusieurs site web avec des nom de domaine différents.

J’ai créé 2 hôtes virtuels pour site1 et site2, mais quand je tape mes noms de domaine sur le web ils se redirigent tous vers le site1

En fait c’est le premier sudo a2ensite que je fais qui reste par défaut pour les autres.

Après plusieurs heures de recherche je ne parviens pas à trouver la configuration permettant d’afficher plusieurs domaines.

J’avais fait la même chose sur ubuntu serveur pour m’entrainer plusieurs fois et comprendre un peu le fonctionnement LAMP et ca marchais bien, mais avec Debian 10 j’ai l’impression qu’il y a autre chose que virtualhost à configurer.

En cherchant sur le web j’ai entendu parler de

etc/apache2/ports.conf
etc/hosts

Mais je ne sais pas si je dois y toucher (j’ai tenté mais j’ai créer des problème et apache ne voulais plus redémarrer donc je suis revenu au point de départ)

Merci de votre aides

Voici le détail des commandes que j’ai effectués :

sudo nano /etc/apache2/sites-available/site1.fr.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName site1.fr
    ServerAlias site1.fr
    DocumentRoot /var/www/site1.fr
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/site1.fr/>
    AllowOverride All
</Directory>
</VirtualHost>

sudo a2ensite site1.fr.conf
sudo a2dissite 000-default.conf
sudo systemctl restart apache2

Et j’ai fait la même chose pour site2

le serveurName et serveurAlaias de tes serveur doit etre FQDN, c’est à dire sous la forme complète avec le domaine: host.domain.tld.

<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Oui, j’ai enlevé le .fr car mon message était bloqué par le forum (plus de 2 lien par message)
dans mon fichier c’est site1.fr
les fichiers sites-availble semble être correct. si je fait sudo a2dissite site1.fr.conf, c’est le site2 qui s’affiche et même quand je tape le site1 c’est maintenant le site2 qui s’affiche. C’est toujours le premier site activé qui prend le dessus.

Je me suis permis de reformater ton message
et avec ce formatage, j’ai pu y remettre les .fr manquants
sans que cela ne soit interprété à l’affichage comme un lien.

Bonjour,

Est-ce que tu peux mettre ce que tu as fait pour le site2 ? Il semble que le site1 soit celui qui fonctionne.

Super merci :slight_smile:
Du coup je viens de le remodifier pour mettre ce qu’il a vraiment dans mon serveur car moi j’ai mis .fr partout.
Notamment les fichiers de configuration s’appelle site1.fr.conf
Est ce le fait de rajouter .fr devant le .conf pose problème (pourtant les fichiers on bien été créer dans site enabled)

Pour le site2 j’ai mis exactement la même choses. Et ce qui me surprend c’est que j’arrive à y accéder quand je tape site2.fr/wp-admin/ (mes sites sont sur wordpress, je peux modifier site2)

J’ai du nouveau, en fait je tape http://www.site2.fr/ je tombe bien sur le site2 mais si je tape seulement www.site2.fr ca me redirige vers le site1

Attends, tu veux dire que ton navigateur change de page pour aller sur le site1 ou que c’est toujours l’adresse du site 2, mais que c’est le site1 qui s’affiche ?

C’est le navigateur qui redirige vers l’adresse du site1 et du coup c’est le site1 qui s’affiche.
Je crois c’est vraiment bête, j’ai l’impression que c’est du cache de mon navigateur qui redirige vers le site1. J’ai pas le pb sur un autre PC ou sur le mien dans une fenêtre de navigation privé.

Je viens de vider le cache du navigateur avec ccleaner et les 2 sites s’affiche comme il faut…
Pourtant j’ai essayer sur mon pc portable hier et le téléphone de femme et j’était redirigé vers le site1
Ce matin j’ai modifier le fichier /etc/apache2/apache2.conf
Modifier la ligne AllowOverride None dans Directory /var/www/ par AllowOverride ALL
Ca aurait pu être ça ?

Bonjour,

Si tu as bien activé es deux hôtes virtuels site1.fr.conf et site2.fr.conf et que les domaines site1.fr et site2.frpointent bien vers l’adresse IP de ton serveur cela doit fonctionner.

N.B. :

  • la directive ServerName n’impose pas un FQDN. Cela peut être un nom d’hôte ou une adresse IP.
  • il faut éviter de modifier /etc/apache2/apache2.conf. La configuration doit se faire au niveau des hôtes virtuels.
  • lorsqu’on utilise des hôtes virtuels par nom si aucune directive ServerName ou ServerAlias ne correspond à la requête c’est le premier hôte virtuel (alphabétiquement site1.fr.conf) qui sera utilisé.

Assure-toi donc que :

  • tu as bien activé les deux hôtes et que leur configuration est correcte ;
  • host site1.fr et host site2.fr renvoient bien l’adresse IP du serveur.

Je viens de remettre le fichier /etc/apache2/apache2.conf comme avant, les deux sites s’affiche toujours. Merci pour votre aides mon serveur fonctionne bien :slight_smile:

POur ServerName, il n’y a pas d’imposition, mais le nom doit être résolu. Un nom d’hôte sans domaine sera résolu en fonction des information du resolv.conf. Hors si les domaines de recherche du resolv.conf ne correspondent pas au domaine recherché, la résolution va poser problème ou renvoyer sur le mauvais site. C’est d’ailleurs pour ça que le message d’erreur parle de fully qualified domaine
Si la valeur de la directive ServerName ne peut pas être résolue en adresse IP, le démarrage du serveur provoquera un avertissement. httpd va alors utiliser le résultat de la commande système hostname pour déterminer le nom du serveur, ce qui ne correspondra pratiquement jamais au nom de serveur que vous souhaitez réellement.

httpd: Could not reliably determine the server's fully qualified domain name, using rocinante.local for ServerName

Normalement apache2.conf ne sert pas pour configurer les sites.
On met les configurations dans sites-available, et on active les conf par a2ensite enable ou disable selon le cas.