Cuando quieres desarrollar una aplicación web no hay nada mejor que ir haciendo pruebas en una máquina virtual antes de tirarte a la piscina de adquirir una máquina remota y montar tu máquina allí.
VirtualBox ofrece una muy buena forma de realizar esta acción, aunque a veces nos puede costar un poco el acceso a la red, tanto para usar con ssh o cuando quieres ver el funcionamiento final en el servidor.
Yo lo he estado intentando con Django y Gunicorn y me he quebrado la cabeza buscando una solución. Al final encontré dos, una más sencilla que la otra. La primera (un poco más complicada) es seguir usando NAT y «mapear» los puertos que queramos usar, de tal modo que podemos hacer que el anfitrión cuando pida el puerto 3022 virtualBox lo interprete como que la máquina invitado debe buscar el puerto 22. De esta forma podremos acceder a ssh en nuestra máquina haciendo
ssh -p 3022 user@127.0.0.1
La otra opción que yo encuentro más sencilla es usar lo que se llama «Adaptador Puente», que simplemente pide al router una dirección. Es decir, en mi caso, si hago en la máquina invitada «ifconfig» obtengo la ip 192.168.1.10 (asignada por mi router). De la forma anterior obtendría una ip de intranet (10.x.x.x). Así al final podríamos acceder a ssh con un
ssh user@192.168.1.10
Que queda mucho más natural.
Y si estás trabajando con algún servicio que publique una web, como nginx, apache o gunicorn (para python wgsi, django…) seguramente te haga falta bindear a una dirección. Yo por ejemplo he necesitado lanzar gunicorn con la opción «-b 192.168.1.10:8000» para poder acceder desde mi ordenador normal.
Saludos 😉
Enlaces | Makai’s Blog | StackOverflow (1 y 2)