Kirjoittaja Aihe: Kannettava kehitysympäristö VirtualBoxilla (verkkoasetukset)  (Luettu 2449 kertaa)

teemku

  • Käyttäjä
  • Viestejä: 28
    • Profiili
Tavoitteena on rakentaa joustavasti toimiva kehitysympäristö harrasteen omaiseen web-kehittelyyn. VirtualBoxissa on VM-kone, jossa sisällä Debian 8 sekä tällä hetkellä LAMP-asennus omine pienine lisäsäätöineen. Isäntäkoneena toimii kannettava tietokone, joka toimii pääsääntöisesti kotiverkossa, mutta myös offlinessa (kun isäntä ei ole yhteydessä internettiin) sekä joissakin vieraissa verkoissa (esim. koulu, jne.).

Tarkoitus olisi siis saada kehitysympäristö toimimaan siten, että isäntäkoneella voi kehittää koodia jota VM-koneessa oleva palvelin pureskelee ja että isäntäkoneen selain on kykenevä näyttämään pureskellun lopputuloksen. Mutta myös niin, että kun isäntäkone on kotiverkossa, on VM-koneella kotiverkon avaruuden mukainen staattinen IP-osoite, jonne muut kotiverkossa olevat laitteet pääsevät (esim. jotta puhelimella voi testata kehityksen alle olevaa). Vierasverkoissa ei ole tarvetta muulle kuin, että VM-kone pääsee nettiin ja isäntäkoneen selaimella pääsee käsiksi VM-koneeseen.

Eli käyttöskenaariot ovat:
  • Kotiverkossa: VM:llä on kotiverkon mukainen staattinen IP-osoite, johon kotiverkon laitteet pääsevät
  • Offlinessa: Isäntäkoneella on mahdollisuus jutella VM-koneen kanssa (esim. SSH-yhteys)
  • Vierasverkossa: VM:llä on mahdollisuus käyttää nettiyhteyttä, muuten kuten offline-tilanteessa

Kotiverkko
  • Verkko: 10.0.0.0, peite: 255.255.0.0, gateway: 10.0.0.1, NS: 10.0.0.2
  • VM:llä staattinen IP 10.0.50.10

Tällä hetkellä olen pohdinnoissani siinä, että VM:llä olisi kolme verkkokorttia:

eth0: NAT - jotta voi jutella internetin kanssa
eth1: Host-Only - 192.168.56.1/255.255.255.0, jossa VM:llä staattinen IP: 192.168.56.101
eth2: Bridged Adapter - jossa VM:llä staattinen IP: 10.0.50.10

Mutta miten VM:n /etc/network/interfaces -tiedosto pitäisi asettaa, jotta kuvaillun kaltainen viritelmä on mahdollinen ja toimiva? Mitä tässä on jäänyt huomiotta, ja mitä pitäisi tehdä jotta homma pelittäisi kuin unelma? Ajatteita otetaan kiitollisena vastaan :)
« Viimeksi muokattu: 05.01.17 - klo:01.00 kirjoittanut teemku »

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Helpoin ratkaisu olisi käyttää NAT-konfiguraatiota ja porttiohjausta (Port Forwarding). Ohje: http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/ (kohta Forwarding Ports to a Virtual Machine).

Tässä siis tarvittavat virtualisoidun järjestelmän portit ohjataan sopiviin isäntäjärjestelmän portteihin, ja niihin pääsee sekä isäntäjärjestelmästä tyyliin http://localhost että lähiverkon muilta koneilta isäntäjärjestelmän IP-osoitteella tai nimellä, jos lähiverkossa on nimipalvelin.

Jos haluat kotiverkossa käyttää staattista IP:tä, se on paras konfiguroida reitittimen DHCP-palvelun asetuksissa MAC-osoitteen perusteella.

Myös vieraissa verkoissa palveluun pääsee käsiksi verkon sisältä koneen IP-osoitteella. Sen voi estää palomuurilla (ufw on kiva). Jatkuvasti voimassa olevat säännöt on tosin helpompi kirjoittaa, jos kotiverkkosi on asetettu käyttämään jotain erityistä osoiteavaruutta, tai jos kytket koneen kotona verkkoon Ethernetillä, ja muualla käytät aina langatonta verkkoa.


[aiheen vierestä]

Docker on tällaisiin hommiin mukavampi ja kevyempi alusta kuin virtuaalikoneet.

Asenna Docker: https://docs.docker.com/engine/installation/linux/ubuntulinux/

Luo sisältöä:
Koodia: [Valitse]
mkdir ~/site
echo "<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Hello World</title></head><body><h1>Hello World</h1></body></html>" > ~/site/index.html

Käynnistä Apache (image httpd, versio 2.4), ohjattuna host-järjestelmän porttiin 8080 ja käyttäen sivustona ~/site -hakemistoa:
Koodia: [Valitse]
sudo docker run -dit --name my-apache-app -p 8080:80 -v "$HOME/site":/usr/local/apache2/htdocs/ httpd:2.4
Kun Docker on ladannut httpd:2.4 -imagen ja käynnistänyt containerin, voidaan tarkistaa, että se on edelleen käynnissä:
Koodia: [Valitse]
sudo docker ps
Koodia: [Valitse]
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
e2b8e0007ebc        httpd:2.4           "httpd-foreground"   5 minutes ago       Up 5 minutes        0.0.0.0:8080->80/tcp   my-apache-app

Sivusto näkyy osoitteessa http://localhost:8080
Koodia: [Valitse]
firefox http://localhost:8080
Sisältöä voi muokata lennossa hostin puolella editoimalla ~/site/index.html -tiedostoa.

Container pysäytetään komennolla
Koodia: [Valitse]
sudo docker stop my-apache-app
Ja sen voi käynnistää uudelleen
Koodia: [Valitse]
sudo docker start my-apache-app
Tai poistaa kokonaan
Koodia: [Valitse]
sudo docker rm my-apache-app
Voit lisätä tunnuksesi docker-ryhmään, niin ei tarvitse sudottaa: https://docs.docker.com/engine/installation/linux/ubuntulinux/#/manage-docker-as-a-non-root-user

Laajempia useamman palvelun kokonaisuuksia on mukavampaa hallita Docker Composella.