Forum Linux.debian/ubuntu Configurer plusieurs virtual hosts avec une seule ip

Posté par  . Licence CC By‑SA.
Étiquettes :
4
7
mai
2021

Bonjour à tou.te.s,

J'ai récupérer un serveur que j'ai monté sous debian. Il a une ip local (192.168.1.x).

J'aimerais pouvoir accéder à des sous-domaines différents tout en ayant la même ip mais je n'y arrive pas.

Voici comment j'ai procédé :

sudo mkdir -p /var/www/192.168.1.x/projet_1
sudo chmod -R 755 /var/www
sudo chown -R www-data: /var/www/192.168.1.x/projet_1

sudo mkdir -p /var/www/192.168.1.x/projet_2
sudo chmod -R 755 /var/www
sudo chown -R www-data: /var/www/192.168.1.x/projet_2

sudo touch /etc/apache2/sites-available/projets.conf

echo -e "NameVirtualHost\t*:80
\n<VirtualHost *:80>
\tServerName projet_1.192.168.1.x
\tDocumentRoot /var/www/192.168.1.x/project_1/
</VirtualHost>
\n
<VirtualHost *:80>
\tServerName project_2.192.168.1.x
\tDocumentRoot /var/www/192.168.1.x/project_2/
</VirtualHost>" | sudo tee /etc/apache2/sites-available/projets.conf

sudo a2dissite 000-default.conf
sudo a2ensite projets.conf

sudo systemctl restart apache2

mais ça ne fonctionne pas…

J'ai essayé un peu tout ce que j'ai trouvé sur le net mais rien n'y fait.

D'autre part, je ne sais pas comment déclarer tout ça dans /etc/hosts.

Bref, j'ai besoin d'un coup de pouce :)

  • # l'idée est bonne mais

    Posté par  . Évalué à 6 (+4/-0).

    sur le serveur ca semble bon

    tu as les sous-dossier dans /var/www/xxxx
    tu as bien les DocumentRoot qui vont sur ces sous dossiers.

    le /etc/hosts
    c'est sur la machine cliente qu'il faut le modifier, selon le modele fournit

    IP     nom_que_tu_veux_joindre

    dans ton cas

    192.168.1.x      projet_1.192.168.1.x projet_2.192.168.1.x

    deja un ping vers les nouveaux noms devrait au moins etre résolûmes vers 192.168.1.x

  • # project ou projet?

    Posté par  (site Web personnel) . Évalué à 9 (+7/-0).

    Alors, plusieurs points:

    • la première ligne de ton fichier de conf n'est pas nécessaire, et je ne sais pas ce que ça fait.
    • en ServerName, il faut que tu mettes le nom de domaine de ton projet. Le nom que tu as choisi est un peu bizarre, mais pourquoi pas…
    • attention, tu mélanges des "projet" et des "project", forcément ça ne peut pas marcher. Relis bien ce que tu as écrit!

    Je modifierais donc le fichier de conf de cette façon:

    <VirtualHost *:80>
    ServerName projet_1.192.168.1.x
    DocumentRoot /var/www/192.168.1.x/projet_1
    </VirtualHost>
    
    <VirtualHost *:80>
    ServerName projet_2.192.168.1.x
    DocumentRoot /var/www/192.168.1.x/projet_2
    </VirtualHost>"
    

    Ensuite, dans le fichier host de l'ordinateur client, si on considère que 192.168.1.x est l'IP de ton serveur, il faut ajouter ces lignes:

    192.168.1.x       projet_2.192.168.1.x
    192.168.1.x       projet_2.192.168.1.x
    

    Maintenant, en tapant "projet_2.192.168.1.x" dans Firefox, tu devrais arriver sur le bon site.

    Un LUG en Lorraine : https://enunclic-cappel.fr

    • [^] # Re: project ou projet?

      Posté par  . Évalué à 10 (+9/-0). Dernière modification le 07/05/21 à 17:52.

      +1 avec les remarques de ted sur projet et projeCt

      j'ajouterai que pour plus de facilité, je mettrais chaque definition de site dans un fichier de config à part

      1 fichier par domaine/projet
      /etc/apache2/site-available/monprojet1.conf
      /etc/apache2/site-available/monprojet2.conf

      puis
      a2enssite monprojet1
      a2enssite monprojet2

      comme ca tu peux activer chaque projet individuellement

  • # Un virtualhost pour les gouverner tous

    Posté par  . Évalué à 4 (+3/-0). Dernière modification le 09/05/21 à 09:57.

    Alors si tu aimes te prendre la tête, j'ai une config toute simple avec un seul virtualhost.
    Il me suffit de créer le répertoire /home/www/www.test.loc et hop, j'ai access à www.test.loc dans mon navigateur directement sans toucher l'Apache.
    J'ai aussi une tld .lrv pour les projets laravel qui ont un path spécifique.
    Plutôt pratique et pas très compliqué, surtout tout devient possible.

    1- Installation de dnsmasq.
    2- J'utilise NetworkManager, copie du fichier de conf dans /etc/NetworkManager/dnsmasq.d/redirect.conf avec ca dedans:
    local=/loc/
    address=/loc/127.0.0.1

    local=/lrv/
    address=/lrv/127.0.0.1

    3- Edition de /etc/NetworkManager/NetworkManager.conf
    [main]
    dns=dnsmasq

    A partir de là, si tu redémarre Networkmanager(ou reboot), tout ce est genre *.loc *.lrv doit pinguer.

    4- httpd.conf
    On décommettes la ligne:
    LoadModule vhost_alias_module modules/mod_vhost_alias.so

    5- Édition du mon unique virtualhost

    UseCanonicalName Off
    VirtualDocumentRoot /home/www/%0/public/
    ServerAlias *.lrv

    UseCanonicalName Off
    VirtualDocumentRoot /home/www/%0/
    ServerAlias *.loc

    On active le virtualhost, on reload apache.

    Et voila, si j'ai rien oublié, le seul fait de créer un répertoire t'offre un site direct.

  • # Merci

    Posté par  . Évalué à 1 (+0/-0). Dernière modification le 09/05/21 à 10:06.

    Merci pour toutes ces réponses.

    projet/project c'est parce que dans le script initial j'utilise des variables ($url et $project) c'est juste une erreur de recopie.

    @Panhwein, pour la prise de tête, j'ai pas besoin de faire d'effort, c'est naturel chez moi ;)

    En tout cas, je devrais y arriver maintenant.

    • [^] # Re: Merci

      Posté par  . Évalué à 1 (+0/-0).

      De toute façon, c'est Gromanche aujourd’hui, donc on fout rien comme des gro…

      Mais essaye cette config.

      3 sites web locaux ça va!
      Mais apres on a plein de virtualhost partout à activer, désactiver, supprimer, sans parler du fichier host!

      Là, ya plus rien à toucher, tu crées un répertoire il est direct accessible et tu peux bosse dessus en chemin absolu;)

      C'est la meilleure config pour un webmaster qui bosse en local

      • [^] # Re: Merci

        Posté par  . Évalué à 2 (+0/-0).

        C'est la meilleure config pour un webmaster qui bosse en local

        ca doit aussi marcher si c'est pas en local
        faut juste démarrer le DNSmasq sur le serveur
        et que le PC du webmaster pointe vers ce serveur DNS

    • [^] # Commentaire supprimé

      Posté par  . Évalué à 1 (+0/-0). Dernière modification le 09/05/21 à 12:47.

      Ce commentaire a été supprimé par l’équipe de modération.

  • # Oups

    Posté par  . Évalué à 2 (+1/-0).

    Je me suis mal exprimé:
    J'ai un fichier virtualhost activé avec dedans:

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /home/www/
        #ErrorLog ${APACHE_LOG_DIR}/error.log
        #CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
    
    
    <VirtualHost *:80>
            UseCanonicalName Off
            VirtualDocumentRoot /home/www/%0/public/
            ServerAlias *.lrv
    </VirtualHost>
    
    <VirtualHost *:80>
            UseCanonicalName Off
            VirtualDocumentRoot /home/www/%0/
            ServerAlias *.xxx
    </VirtualHost>
    

    Et dnsmasq, tu l'installe mais tu ne le démarre pas, ne l'active pas. C'est le NetworkManager qui va faire ca

  • # oula

    Posté par  . Évalué à 1 (+0/-0).

    j'ai eu des problemes de ctrl+r :)
    Vous pouvez virer tout ca s'il vous plait?
    Sauf le post sur le jour du jour au Groland!
    Vous etez des amours, merci!

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.