在局域网系统中访问Django项目

19
我使用django开发了一个网站,目前运行正常,即将进入生产阶段并准备在几周内部署。在进入生产之前,我想与一些员工分享该网站,以检查功能和其他问题。实际上,他们的系统与我的系统连接在同一局域网中。因此,我的系统IP地址类似于192.168.12.135,在运行django开发服务器时,它运行在localhost:8000,并且使用端口8000,例如192.168.12.135:8000。因此,我已经共享了项目站点链接作为192.168.12.135:8000,但当他们尝试在连接到我的局域网的系统上运行时,无法访问并显示错误“服务器未找到”。我以前使用python web.py框架开发了一个最小的网站,当我们运行服务器时,它默认运行为localhost:8080,当我从与我的系统连接的其他系统访问此链接时,如192.168.12.135:8000,它可以正常工作且可访问。请问有人能告诉我原因吗?
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

首先,我正在寻找一个解决方案来解决 第一个问题(在进入生产环境之前访问局域网)。
4个回答

38

如果你运行

python manage.py runserver 0.0.0.0:8000

你的开发服务器将在本地网络上的端口8000上对任何人以及本地主机开放(不依赖于你的IP地址)。


除了我实际运行服务器的计算机之外,这对其他设备不起作用。浏览器只是说它无法连接到其他设备上的服务器。 - Daniel
4
settings.py 中,你需要在 ALLOWED_HOSTS 中添加主机名,如果你是使用 macbook1.local:8000 访问服务器的,则需要将其添加到列表中,这样你就可以从手机或其他计算机访问它。例如:ALLOWED_HOSTS = ['macbook1.local'] (在 Django 1.10、Macbook 和 iPhone 上测试通过)。 - user65535

36

您需要明确地告诉开发服务器在您的IP上运行而不是localhost

尝试python manage.py runserver 您的IP:端口号

如果您正在通过apache或任何其他Web服务器运行,则可以访问它。

对于您的第一个问题,我建议您托管和使用本地apache服务器而不是使用开发服务器。这样做,您可以预见在转移到生产环境时可能会遇到的问题。

对于第二个问题,有大量资源可用于配置Django与不同服务器。向谷歌致敬。 :)


谢谢你的帮助,实际上我正在寻找一个初学者可以非常容易地部署的快速部署教程。 - Shiva Krishna Bavandla
如果您发现我的答案有帮助,请将其标记为正确。我必须承认,这对于新手来说是一个有些复杂的任务。也许您应该寻求系统管理员团队的帮助。而对于您,可以参考以下链接:https://www.google.co.in/search?client=ubuntu&channel=fs&q=django+apache+configuration&ie=utf-8&oe=utf-8&redir_esc=&ei=psBGUe7aOoHMrQeJv4CgBQ - Babu

4

在你的 settings.py 文件中,将 ALLOWED_HOSTS 更改为

ALLOWED_HOSTS = ['*']

通过输入以下命令运行您的服务器

python manage.py runserver 0.0.0.0:8000

为了从另一台设备访问项目,请输入服务器的IP地址,后跟端口号,在这个例子中是8000。

3

在 Windows 上我按照您说的做了一切,但有一件事情让我无法通过 Wi-Fi 连接。

settings.py 文件中:

ALLOWED_HOST = ['*']

网络配置文件设置为私人模式:

Windows > 设置 > 网络和Internet > Wi-Fi >(单击您的网络)> 在网络配置文件中选择:私人

示例:在端口8000上运行您的服务器:

python manage.py runserver 0.0.0.0:8000

那么,如果您想让其他连接到同一网络的设备访问服务器,输入IPv4的服务器地址和端口号(这里是8000)。

例如,如果IPv4的服务器地址是192.168.20.26,则直接在浏览器中输入以下文本:

192.168.20.26:8000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接