Comment obtenir apache pour servir un site via VirtualBox?


8

Ce tutoriel m'a appris à créer une machine virtuelle Ubuntu Server (12.10, 64 bits) dans VirtualBox sur une machine hôte Windows 7 , à installer Apache et à lui faire servir un site à partir d'un domaine factice accessible via le navigateur de la machine hôte.

Cela a pris une journée et de nombreuses tentatives (même s'il semblait que je suivais les instructions telles qu'elles étaient présentées, je faisais toujours quelque chose de mal) et je l'avais finalement fait.

Je trouve Ubuntu comme un environnement de développement beaucoup plus transparent que Windows, et je voulais donc la même chose sur Ubuntu. Donc, cette fois, j'ai créé une machine virtuelle de serveur Ubuntu dans VirtualBox sur la machine hôte Ubuntu , installé Apache et l' ai configuré. Mais lorsque j'accède au site via le domaine factice, j'obtiens l' erreur « Serveur non trouvé ».

Oui, j'ai modifié le /etc/hostsfichier comme indiqué dans le tutoriel (qui est pour Windows 7). Mais je ne pouvais pas le faire fonctionner. Je ne sais pas ce qui ne va pas. Quelqu'un sait quoi d'autre je devrais faire?

EDIT: Si je ne suis pas assez clair, veuillez demander. Je veux clarifier.


Voulez-vous utiliser le serveur depuis votre ordinateur (par exemple pour développer) ou depuis d'autres membres du réseau?
Davisein

Le serveur est installé sur une machine virtuelle (à l'aide de virtualbox), et je souhaite accéder au site Web de test servi par le serveur à partir d'un navigateur sur la machine hôte. J'espère que c'est clair. J'ai d'ailleurs posté la réponse (mais je ne peux la marquer comme ayant répondu qu'après 2 jours).
its_me

1
Bien sûr, j'ai déjà voté positivement votre réponse qui est très bonne (btw). Je voulais juste vous recommander d'ajouter à la fois l'hôte uniquement et le pont (pour l'accès à Internet). Et l'autre réponse est également une exigence dans un environnement ponté si vous souhaitez accéder à la machine virtuelle de l'extérieur. Pour que la question soit claire pour les autres;)
Davisein

Réponses:


5

Si vous devez autoriser d'autres machines de votre réseau physique à accéder à votre machine virtuelle ou si la machine virtuelle a besoin d'un accès Internet, utilisez un réseau ponté. Sinon, restez fidèle à la mise en réseau uniquement hôte.

  1. Arrêtez votre machine virtuelle et ouvrez ses paramètres dans le gestionnaire VirtualBox (OSE)

  2. Accédez à l' onglet Réseau

  3. Sélectionnez le mode réseau de votre choix (mise en réseau pontée ou hôte uniquement)

    Si vous souhaitez utiliser un réseau ponté, vous devez sélectionner la bonne carte réseau dans Nom: ____________ . Pour les connexions filaires, vous devez sélectionner quelque chose nommé comme eth0. Les connexions sans fil sont généralement nommées wlan0(les nombres peuvent varier).

  4. Enregistrez les paramètres

  5. Démarrez la machine virtuelle Ubuntu

  6. Une fois activé, vous pouvez collecter l'adresse IP en exécutant:

    sudo ifconfig
    

    La sortie devrait ressembler à ceci:

    eth0      Link encap:Ethernet  HWaddr 08:00:27:f4:c3:7b  
              inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fef4:c37b/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:20 errors:0 dropped:0 overruns:0 frame:0
              TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:3244 (3.2 KB)  TX bytes:2512 (2.5 KB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    

    Dans la sortie ci-dessus, 192.168.1.4(sur la deuxième ligne) se trouve l'adresse IP qui peut être utilisée dans votre système hôte Ubuntu pour accéder à votre machine virtuelle.

  7. Ouvrez maintenant le fichier hosts dans la machine hôte Ubuntu:

    sudo gedit /etc/hosts
    

    (Si vous ne souhaitez pas utiliser gedit, remplacer le mot avec le nom de votre éditeur préféré. Par exemple vim, nano.)

    Une fois le fichier ouvert, ajoutez cette ligne et enregistrez -la:

    192.168.1.4   my-dummy-site.com
    
  8. Ouvrez n'importe quel navigateur sur votre machine hôte et accédez à my-dummy-site.compour accéder à votre site Web, servi directement depuis VirtualBox.

(Un merci spécial à @iSeth pour l'aide . Entièrement basé sur cette réponse , le bit n'est PAS le même.)


1
Cette solution devrait fonctionner. J'essaie un serveur de développement avec cette configuration en ce moment. De plus, les deux ponts et l'hôte uniquement peuvent être utilisés en même temps. Les ponts ne permettent pas à la machine d'hébergement d'atteindre votre propre serveur (pour autant que je sache). Et l'hôte uniquement ne permet pas d'accéder à Internet (donc pas de mises à jour). J'utilise habituellement les deux
Davisein

1
@Davisein Wrong. Le mode réseau ponté permet d'accéder à vos machines virtuelles depuis la machine hôte, tout en lui donnant (VM) accès à la connexion Internet utilisée par l'hôte. :)
its_me

Vrai. Je ne supprime pas mon commentaire précédent pour que le vôtre ne soit pas bizarre mais c'est faux. Le système qui ne permet pas à l'hébergeur et à la machine invitée de parler est NAT comme indiqué ici virtualbox.org/manual/ch06.html .
Davisein

Assurez-vous qu'IPTables ne bloque pas la connexion ...
Ethereal

J'ai suivi ces instructions pour un T. Si j'ouvre un navigateur sur la machine virtuelle Ubuntu, il est capable de résoudre le DNS et de servir my-dummy-site.com. Cependant, si j'ouvre un navigateur en dehors de la machine virtuelle Ubuntu (sur ma machine Windows 10 où ma machine virtuelle est installée), il ne peut pas résoudre my-dummy-site.com. Il est capable de résoudre l'IP 192.168.1.118! Quel pourrait être le problème?
Chris Nielsen

0

Seuls rootpeuvent ouvrir des ports <1024, donc si un utilisateur ordinaire exécute VirtualBox, il n'ouvrira pas le port 80 sur l'hôte et ne le transmettra pas à l'invité.

Vous pouvez autoriser des programmes à ouvrir des ports privilégiés en exécutant:

setcap 'cap_net_bind_service=+ep' /path/to/executable

Je ne connais pas le chemin vers l' VirtualBoxexécutable, mais vous pouvez facilement le trouver en recherchant quelque chose de similaire à "VirtualBox" dans la sortie de ps auxf.


Je vais l'essayer et je vous le ferai savoir. Pendant ce temps, vous avez dit que "seul root peut ouvrir des ports <1024" , mais j'ai quand même réussi à le faire fonctionner (veuillez voir ma solution ci-dessous).
its_me

@its_me, c'est parce que votre solution utilise un réseau ponté.
Eric Carvalho

Ah ok. Merci pour la clarification Eric. :)
its_me
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.