I followed the instructions here to run Django using the built-in webserver and was able to successfully run it using python manage.py runserver
. If I access 127.0.0.1:port locally from the webserver, I get the Django page indicating it worked.
I realize the Django webserver is not a production server, but it's important for me for testing purposes to be able to access it from the outside world -- i.e. not from a web browser on the server, but from a different computer.
I tried:
http://mywebserver:port_django_runs_on
but it did not work. I also tried using the IP instead (based on ifconfig) to access:
http://myipaddress:port_django_runs_on
which did not work either.
The web server is running so it must be accessible from the outside, I'm just not sure how. I am running Linux with Apache, though I have not configured Django with Apache.
Any ideas on how to do this?
install ngrok in terminal
sudo apt-get install -y ngrok-client
after that run:
ngrok http 8000
or
ngrok http example.com:9000
For AWS users.
I had to use the following steps to get there.
1) Ensure that pip and django are installed at the sudo level
2) Ensure that security group in-bound rules includ http on port 80 for 0.0.0.0/0
3) Add Public IP and DNS to ALLOWED_HOSTS
4) Launch development server with sudo on port 80
Site now available at either of the following (no need for :80 as that is default for http):
just do this:
python manage.py runserver 0:8000
by the above command you are actually binding it to the external IP address. so now when you access your IP address with the port number, you will be able to access it in the browser without any problem.
just type in the following in the browser address bar:
<your ip address>:8000
eg:
192.168.1.130:8000
you may have to edit the settings.py add the following in the settings.py in the last line:
ALLOWED_HOSTS = ['*']
hope this will help...
If you are using Docker you need to make sure ports are exposed as well
UPDATED 2020 TRY THIS WAY
python manage.py runserver yourIp:8000
ALLOWED_HOSTS = ["*"]
Pick one or more from:
So, you can check that your application is listening successfully by running lsof -i
as root on the machine and look for a python
entry with the corresponding port you've specified.
Non-root users generally cannot bind to ports < 1024.
You'll need to look at iptables -nvL
to see if there's a rule that would prevent access to the ip:port that you are trying to bind your application to.
If there is an upstream firewall and you don't know much about it, you'll need to talk to your network administrators.
I'm going to add this here:
sudo python manage.py runserver 80
Go to your phone or computer and enter your computers internal IP (e.g 192.168.0.12
) into the browser.
At this point you should be connected to the Django server.
This should also work without sudo:
python manage.py runserver 0.0.0.0:8000
I had to add this line to settings.py in order to make it work (otherwise it showed an error when accessed from another computer)
ALLOWED_HOSTS = ['*']
then ran the server with:
python manage.py runserver 0.0.0.0:9595
Also ensure that the firewall allows connections to that port
Source: Stackoverflow.com