如何从外部访问本地的Django网页服务器

2024-05-13 23:16:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我按照指令here使用内置web服务器运行Django,并能够使用python manage.py runserver成功运行它。如果我从web服务器本地访问127.0.0.1:port,就会得到Django页面,指示它工作正常。

我意识到Django web server不是一个生产服务器,但是对于测试来说,能够从外部世界访问它(即不是从服务器上的web浏览器,而是从另一台计算机)对我来说很重要。

我试过:

http://mywebserver:port_django_runs_on

但没用。我还尝试使用IP(基于ifconfig)来访问:

http://myipaddress:port_django_runs_on 

也没用。

web服务器正在运行,因此必须从外部访问,我只是不确定如何访问。我正在用Apache运行Linux,尽管我还没有用Apache配置Django。

有什么办法吗?


Tags: djangopy服务器webhttpheremanageon
3条回答

从中选择一个或多个:

  • 您的应用程序未能成功侦听预期的IP:端口
    • 因为您尚未成功配置
    • 因为用户没有权限
  • 您的应用程序正在目标IP:端口上成功侦听,但客户端无法访问它,因为
    • 服务器本地iptables阻止它。
    • 防火墙阻止它。

因此,可以通过在计算机上以根用户身份运行lsof -i来检查应用程序是否成功侦听,并使用指定的相应端口查找python条目。

非根用户通常无法绑定到端口<;1024。

您需要查看iptables -nvL以查看是否有规则阻止您尝试将应用程序绑定到的ip:端口的访问。

如果有一个上游防火墙,你对它了解不多,你需要和你的网络管理员谈谈。

我必须将这一行添加到settings.py才能使其工作(否则从另一台计算机访问时显示错误)

ALLOWED_HOSTS = ['*']

然后使用以下命令运行服务器:

python manage.py runserver 0.0.0.0:9595

还要确保防火墙允许连接到该端口

您必须运行开发服务器,以便它listens on the interface到您的网络。

例如

python manage.py runserver 0.0.0.0:8000

监听端口8000上的每个接口。

使用IP或主机名访问Web服务器并不重要。我想你还在自己的局域网里。
如果您真的想从外部访问服务器,还必须将路由器配置为将端口(例如8000)转发到服务器。


检查服务器上的防火墙是否允许连接到正在使用的端口!

假设您可以成功地从外部访问您的Apache服务器,您还可以尝试以下操作:

  • 停止Apache服务器,使端口80空闲。
  • 使用sudo python manage.py runserver 0.0.0.0:80启动开发服务器

相关问题 更多 >