19
votes

I have a Django web server on a VirtualBox/Vagrant machine running Ubuntu.

I have followed this guide to create a Django project: https://docs.djangoproject.com/en/dev/intro/tutorial01/

I have a web server running at http://127.0.0.1:8000/ inside my guest machine. This is the first time I am running a Django web server. It is supposed to be a hello world app.

How can I access this web application from my host browser?

I have tried running ifconfig in the guest to get the IP that I should visit I found a promising IP address in inet addr.

But I have tried entering the following into my host browser and it didn't work. http://inetaddrnumbers:8000/

How can I access the web server from my browser?

2
Try running the dev server on 0.0.0.0:8000 (python manage.py runserver 0.0.0.0:8000) instead. 127.0.0.1 is only accessible from the same machine. - aumo
In addition to the above comment check whether you are allowed to host by your ISP. Generally they block 80 port. - Kakar
@kakar: the web server only needs to be accessible from my computers. It doesnt need to be accessible frol the internet, so I hope I dont need to think about the ISP - user1283776
@aumo: I tried runnung the server on 0.0.0.0:8000 and the visiting inetaddrnumbers:8000. That didnt work unfortunately. - user1283776
How did you configure networking in your VagrantFile? - aumo

2 Answers

41
votes

Try this.

  1. Open the vagrant file (should be in the directory where you specified to create a new vagrant machine).
  2. Search for config.vm.network. If you didn't setup the file earlier, it should be commented.
  3. Change it to look something like this config.vm.network "private_network", ip: "55.55.55.5". Here ip address (55.55.55.5) can be any ip address you want.
  4. Now logout from the vagrant machine and reload your vagrant machine by this command vagrant reload.
  5. Again ssh to your vagrant machine and restart your django server by this command python manage.py runserver 0.0.0.0:80. Again the port address (80) can be 8000 if you want so.
  6. After that, in your browser, enter the following address 55.55.55.5, and hopefully you should see your webapp.

Now if you would like to go further, you can edit your host file, and add this line

55.55.55.5 mynewdomain.com

Then in your browser, enter the follow address,

mynewdomain.com

And you should see your web app. Note that, www is not added in the domain name inside the host file, so only mynewdomain.com can be accessed. You can however add it.

Hope this helps. Cheers.

1
votes

Complementing @Kakar answer, this configuration can also be done using this:

config.vm.network "private_network", type: "dhcp"

This will assign an IP automatically.

For further reading: https://www.vagrantup.com/docs/networking/private_network.html