Accessing django project in LAN systems - python

I used django and developed a site which is working fine, and its about to move to production and ready for deployment in a couple of weeks.
So before moving to production, i want to share the site with some of my employees to check the functionality and something else. Actually their systems are connected in LAN with mine.
So my system IP address is something like 192.168.12.135, when we run run django development server its runs at localhost:8000, i mean with the system IP address and with a port 8000 like 192.168.12.135:8000 right.
So i had shared them the project site link as 192.168.12.135:8000, but when they tried on the systems which are connected in LAN, it is not accessible and displaying an error Server not found.
I tried the above same way because recently i used python web.py framework and developed a minimal site , and when we run the server, it by default runs as localhost:8080 , and when i accessed this link from others system that are connected in LAN with mine as 192.168.12.135:8000 , its working fine and is accessible.
So can anyone please let me know
1. How to access the site on the systems that are connected in LAN before moving to production(in some real servers like apache, nginx etc.,).
2. Basically i am new to web developing and this is my first site developed in python, so
i don't know more about servers and deploying a project. So can anyone please let me know
the detailed information about deploying django on different servers
(First of all i am looking for a solution for 1st problem(Accessing in LAN before moving to
production))

If you run
python manage.py runserver 0.0.0.0:8000
your development server will be available on port 8000 to anyone on your LAN and on localhost as well (and it does not depend on your ip address)

You need to explicitly tell the development server to run on your IP rather than localhost.
Try python manage.py runserver your_ip:port.
Though it'll be accessible if you're running through apache or any other webservers other than the development server.
And to your 1st question, I would advice you to host and use a local apache server rather than using development server. Doing so, you can foresee the issues you'll be facing when moving to production.
And to 2nd, there are plenty of resources available configuring Django with different servers. Hail Google. :)

In your settings.py change ALLOWED_HOSTS to
ALLOWED_HOSTS = ['*']
Run your server by entering the following command
python manage.py runserver 0.0.0.0:8000
In order to access the project from another device enter the IP address of the server followed by the port number, which is 8000 in this example.

On windows I did everything you said but one thing was missing at my end to connect through Wi-Fi..
In settings.py:
ALLOWED_HOST = ['*']
Put Network profil in Private mode:
Windows > Settings > Network & Internet > Wi-Fi > (Click on_your_network) > In Network profil select: Private
Exemple: Run your server on the port 8000:
python manage.py runserver 0.0.0.0:8000
Then to access to the server with your other devices connected to the same network, enter the IPv4's server address with the your port (here 8000)
Exemple, if the IPv4's server address is 192.168.20.26 put the folling text directly in your browser:
192.168.20.26:8000

Related

How do I make Django Website public on my local network?

I am building a website for myself and family in Django and React. Every time I ask them to check my process and get their opinions they get a webpage not found error or this site can't be reached. How do I make is so that anyone on my local network can check my page when its running. This is the default in flask, I don't understand why django runs like this? (safety maybe?) I can't find any good information on how to add an allow all to the ALLOWED_HOSTS section in the settings of the main app.
I also know that you can add IP address, But I'm a noob and I don't follow how to get the ip address of all my families devices without alot of work?? Does anyone have a good solution for this??
Django documentation:
When DEBUG is True and ALLOWED_HOSTS is empty, the host is validated
against ['.localhost', '127.0.0.1', '[::1]'].
If you are in debug mode with an empty list, or in non-debug mode also with an empty list, no one in your LAN network could be accessed to your website.
In this case, because you are in a LAN, you could use:
ALLOWED_HOSTS = ['*']
Then run
python manage.py runserver 0.0.0.0:8000
You don't need to open any ports on your router if you are in LAN, but maybe you need to configure your firewall in your local machine.
Otherwise, a web server like nginx or apache is recommended.
It is very simple
just go to your command line and type ipconfig if its windows and ifconfig if it is linux
Note your ip address on your local network
Write that address in allowed hosts in settings.py
Run command python manage.py runserver :
Take any device connect to your local network and in its browser window type servers ip:port number
For eg 192.168.25.1:8080
If all are on the same network then run
python manage.py runserver 0.0.0.0:8000
ALLOWED_HOSTS = ['*']
But this is not your real problem. You'll most likely need to open ports in the firewall of either your local machine or your router (or both) before other machines on the network will be able to reach yours.

Django development server on LAN

It's my first time creating a django project. Now I'm at the point where I need to run the development server in the LAN. Except I can't get it to work.
My computer is connected with ethernet and the other computers in the network are connected via Wifi don''t know if that's relevant though.
What I tried by running the following:
The ip adress I found using ifconfig and copying inet addr: under ens33.
- python manage.py runserver myipadrres:8000
- python manage,py runserver 0.0.0.0:8000
The 0.0.0.0 doesn't even work on the windows os on my own computer. The ipadress does work for that.
Django settings debug is set to True.
Like I said it's the first time creating such a project and I don't know much about web related stuff. So I might have forgot to install something that I don''t know about.
Thanks in advance for your help
EDIT:
Managed to get it working i just had to turn on bridged networking in my VM settings
Greetings,
Dani
If that setup is working on your localmachine then
Just use that localmachine Ip:port-number in your LAN pc as:
for example :
If local machine Ip = 192.168.6.25 and setup is running on 8000 port ,then open browser at LAN machine PC and use this:
192.168.6.25:8000
Even you can run the setup on different port by this command
./manage.py runserver 0.0.0.0:<your_port>

Django tutorial: problems accessing development server

I am going through the Django tutorial and am running into problems when trying to view my webpage. I am at the very beginning of the tutorial when I first run the command python manage.py runserver xxx.xxx.xxx.xxx:8000 (replace the x's with my remote server's IP). When I try to navigate to http://xxx.xxx.xxx.xxx:8000 on my local machine, Chrome gives me the error ERR_CONNECTION_REFUSED. I have also tried running the server on 0.0.0.0:8000 and the same issue persists. The port is definitely open and there are no firewalls blocking it - when I plug in my IP and 8000 into this site it claims it is open: http://ping.eu/port-chk/.
I get no error messages on my console from the Django side of things. What could be causing this error? I really don't know much about servers or ports. Thanks in advance.
I am on a virtual Linux server running CentOS 6.4. My local machine is running Mac OS 10.9.5
EDIT:
When I run netstat --listen, port 8000 doesn't show up in the Local Address column, even though my Django dev server claims to be running. Someone mentioned to me that this means my application is not listening on this port. What does this mean and how do I remedy it?
EDIT:
I can access the page through my phone's internet with no issues. What gives?
If you're running Django inside a VM but accessing it from the host Mac, you'll need to forward the port. See the settings in Virtualbox/VMWare/whatever.
Note however that Django runs perfectly well directly on a Mac, so if you're just learning it may be simpler to just install it there.
Don't issue no IP, runserver will tell you where you can connect to when launching it.
Since you're launching it from your VM, you might supply the IP.
Ensure system level routing is okay.
Add your host local IP to the ALLOWED_HOSTS setting.

why I can't open any port when I deploy my django on my server, but my test program can run on my own machine

I'm learning django to make a test website, I can run the site on my own laptop, and use the browser to visit 127.0.0.1 , it's ok
but when I do the same thing on my server, I bought a vps and a domain, I just can't telnet the port , the browser also can't connect, I don't know why
I do the following
python manage.py runserver 8080
on my laptop, 8080 port can be connected by telnet, but on my server , it can't
Two things.
Firstly, as the documentation explains, by default runserver only binds to the localhost interface, which means it is only available on a browser running on the same machine. To get it to be visible outside the local machine, you need to bind to an externally-visible address, or 0.0.0.0 for all addresses:
python manage.py runserver 0.0.0.0:8080
Secondly, as the documentation also explains, you should not be trying to use the development server in a production setting anyway. Use a proper webserver, eg Apache + mod_wsgi.

Access from external to python development server

I can't access externally to python development server, I have a very small django project running on my machine, and now I want to enable computers in the same LAN have access to it, but it can't do.
There is no firewall running on my machine. Is there a way around this?
How are you running the server?
Have you tried something like this?
manage.py runserver 0.0.0.0:8080
From the documentation:
Note that the default IP address, 127.0.0.1, is not accessible from other machines on your network. To make your development server viewable to other machines on the network, use its own IP address (e.g. 192.168.2.1) or 0.0.0.0.
0.0.0.0 means: bind to all IP addresses this computer supports. So, as TheSingularity says, you'll then be able to access your Django app by entering the private IP address usually beginning with 192.168.*; which is not accessible from the Internet.
run your django app like this:
./manage.py runserver 0.0.0.0:8800
you can access now your project from other machine like this:
http://<ip_address_machine_where_project>:8800

Categories