Jak zdobyć apache do obsługi witryny za pośrednictwem VirtualBox?

8

Ten samouczek nauczył mnie, jak utworzyć maszynę Wirtualną Ubuntu Server (12.10, 64-bit) w VirtualBox na maszynie hosta z systemem Windows 7 , zainstalować Apache i umożliwić jej obsługę witryny z domeny zastępczej dostępnej za pośrednictwem przeglądarki komputera hosta.

Zajęło mi to cały dzień i wiele prób (chociaż wydawało mi się, że postępowałem zgodnie z instrukcjami, kiedy zostały one określone, zawsze robiłem coś złego) i w końcu to zrobiłem.

Uważam, że Ubuntu jest znacznie bardziej płynnym środowiskiem programistycznym niż Windows, więc chciałem tego samego na Ubuntu. Tym razem utworzyłem maszynę Wirtualną serwera Ubuntu w VirtualBox na maszynie hosta Ubuntu , zainstalowałem Apache i skonfigurowałem ją. Ale kiedy uzyskuję dostęp do witryny za pośrednictwem domeny zastępczej, pojawia się błąd „ Nie znaleziono serwera ”.

Tak, zmodyfikowałem /etc/hostsplik tak, jak wspomniano w samouczku (dotyczy systemu Windows 7). Ale nie mogłem tego uruchomić. Nie wiem co jest nie tak. Czy ktoś wie co jeszcze powinienem robić?

EDYCJA: Jeśli nie jestem wystarczająco jasny, zapytaj. Jestem gotów to wyjaśnić.

to ja
źródło
Czy chcesz korzystać z serwera ze swojego komputera (na przykład do programowania) czy od innych w sieci?
Davisein
Serwer jest zainstalowany na maszynie wirtualnej (za pomocą virtualbox) i chcę uzyskać dostęp do strony testowej obsługiwanej przez serwer z przeglądarki na maszynie hosta. Mam nadzieję, że to jasne. Nawiasem mówiąc, opublikowałem odpowiedź (ale mogę oznaczyć ją jako udzieloną dopiero po 2 dniach).
its_me
1
Jasne, już oceniłem twoją odpowiedź, która jest bardzo dobra (btw). Chciałem tylko polecić dodanie zarówno hosta, jak i mostka (w celu uzyskania dostępu do Internetu). A także druga odpowiedź jest wymagana w środowisku pomostowym, jeśli chcesz uzyskać dostęp do maszyny wirtualnej z zewnątrz. Aby wyjaśnić to pytanie innym;)
Davisein

Odpowiedzi:

5

Jeśli chcesz zezwolić innym maszynom w sieci fizycznej na dostęp do maszyny wirtualnej lub jeśli maszyna wirtualna potrzebuje dostępu do Internetu, użyj sieci mostkowej. W przeciwnym razie trzymaj się sieci tylko hosta.

  1. Zatrzymaj maszynę wirtualną i otwórz jej ustawienia w Menedżerze VirtualBox (OSE)

  2. Przejdź na kartę Sieć

  3. Wybierz tryb sieci do wyboru (sieć zmostkowana lub tylko host)

    Jeśli chcesz korzystać z mostkowanej sieci, musisz wybrać odpowiednią kartę sieciową w polu Nazwa: ____________ . W przypadku połączeń przewodowych wybierz coś o nazwie jak eth0. Połączenia bezprzewodowe są zwykle nazywane wlan0(liczby mogą się różnić).

  4. Zapisz ustawienia

  5. Uruchom maszynę Wirtualną Ubuntu

  6. Po uruchomieniu możesz uzyskać adres IP, uruchamiając:

    sudo ifconfig
    

    Dane wyjściowe powinny wyglądać podobnie do tego:

    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)
    

    W powyższym wyniku 192.168.1.4(w drugim wierszu) jest adres IP, którego można użyć w systemie hosta Ubuntu w celu uzyskania dostępu do maszyny wirtualnej.

  7. Teraz otwórz plik hosts na maszynie hosta Ubuntu:

    sudo gedit /etc/hosts
    

    (Jeśli nie chcesz używać gedit, zastąpić słowo z nazwy swojego ulubionego edytora. Np vim, nano).

    Po otwarciu pliku dodaj ten wiersz i zapisz :

    192.168.1.4   my-dummy-site.com
    
  8. Otwórz dowolną przeglądarkę na komputerze-hoście i przejdź do my-dummy-site.comstrony internetowej obsługiwanej bezpośrednio z VirtualBox.

(Specjalne podziękowania dla @iSeth za pomoc . Całkowicie oparty na tej odpowiedzi , bit NIE jest taki sam.)

to ja
źródło
1
To rozwiązanie powinno działać. Próbuję teraz serwera programistycznego z tą konfiguracją. Dodatkowo można jednocześnie korzystać z mostka i hosta. Bridged nie zezwala maszynie hostingowej na dostęp do własnego serwera (o ile mi wiadomo). A sam host nie pozwala na dostęp do Internetu (więc nie ma aktualizacji). Zwykle używam obu
Davisein
1
@Davisein Wrong. Tryb sieci pomostowej umożliwia dostęp do maszyn wirtualnych z komputera hosta, a także daje mu (VM) dostęp do połączenia internetowego używanego przez hosta. :)
its_me
Prawdziwe. Nie usuwam mojego poprzedniego komentarza, aby twój nie wyglądał dziwnie, ale jest błędny. System, który nie pozwala hostowi i maszynie gościa rozmawiać, to NAT, jak powiedziano tutaj virtualbox.org/manual/ch06.html .
Davisein,
Upewnij się, że IPTables nie blokuje połączenia ...
Ethereal
Postępowałem zgodnie z tymi instrukcjami do T. Jeśli otworzę przeglądarkę na Ubuntu VM, jest ona w stanie rozwiązać dns i obsłużyć my-dummy-site.com. Jednak jeśli otworzę przeglądarkę poza maszyną Wirtualną Ubuntu (na moim komputerze z systemem Windows 10, na którym mam zainstalowaną maszynę wirtualną), nie będzie w stanie rozwiązać my-dummy-site.com. Jest jednak w stanie rozwiązać IP 192.168.1.118! Co może być problemem?
Chris Nielsen
0

rootMoże tylko otwierać porty <1024, więc jeśli zwykły użytkownik korzysta z VirtualBox, nie otworzy portu 80 na hoście i nie przekaże go gościowi.

Możesz zezwolić programom na otwieranie uprzywilejowanych portów, uruchamiając:

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

Nie znam ścieżki do VirtualBoxpliku wykonywalnego, ale możesz łatwo to znaleźć, szukając czegoś podobnego do „VirtualBox” w danych wyjściowych ps auxf.

Eric Carvalho
źródło
Spróbuję i dam znać. W międzyczasie powiedziałeś, że „Tylko root może otwierać porty <1024” , ale nadal byłem w stanie sprawić, że zadziałało (zobacz moje rozwiązanie poniżej).
its_me
@its_me to dlatego, że twoje rozwiązanie korzysta z sieci pomostowej.
Eric Carvalho,
Ah, dobrze. Dzięki za wyjaśnienie, Eric. :)
its_me