在Ubuntu 18.04上的Django在Azure VM gunicorn上无法连接到('0.0.0.0',80)

问题描述 投票:0回答:2

我正在尝试使用Ubuntu 18.04将我的Django应用程序部署到Azure虚拟机。

  1. 我已经设置了VM并通过SSH连接到它。
  2. 然后运行update and upgrade命令
  3. 设置Python和虚拟环境
  4. 上传我的代码并激活环境
  5. 允许端口8000使用sudo ufw allow 8000进行测试
  6. 安装完所有要求后,运行命令时: python manage.py runserver 0.0.0.0:8000

应用程序运行,但当我打开URL :: 8000 /

它不会在控制台中返回任何错误

更新:通过在8000下的azure portal中手动添加端口Inbound port rules来修复它。但是:当我尝试通过gunicorn运行它时:

gunicorn --pythonpath PROJECT PROJECT.wsgi:application --log-file - --bind 0.0.0.0:80

它返回另一个错误,如下所示:

[30007] [错误]无法连接到('0.0.0.0',80)

这可能有什么不对?

python django azure azure-virtual-machine ubuntu-18.04
2个回答
0
投票

您还需要将0.0.0.0:80添加到入站端口规则。截至目前,它仅接受8000个端口请求。

然后再试一次:

gunicorn --pythonpath PROJECT PROJECT.wsgi:application --log-file -b 0.0.0.0:80

在Azure中添加80端口的步骤:

通过在子网或VM网络接口上创建网络筛选器,可以在Azure中为虚拟机(VM)打开端口或创建端点。您可以将这些控制入站和出站流量的过滤器放置在连接到接收流量的资源的网络安全组上。

本文中的示例演示了如何创建使用标准TCP端口80的网络过滤器(假设您已经启动了相应的服务并在VM上打开了任何操作系统防火墙规则)。

1 - 创建配置为在标准TCP端口80上提供Web请求的VM后,您可以:

2 - 创建网络安全组。

3 - 创建允许流量的入站安全规则并将值分配给以下设置:

4 - 目标端口范围:80

5 - 源端口范围:*(允许任何源端口)

6 - 优先级值:输入优先级小于65,500且优先于默认全能拒绝入站规则的值。

将网络安全组与VM网络接口或子网相关联。


0
投票

要解决有关无法访问的python manage.py runserver 0.0.0.0:8000应用程序运行的问题,导致此问题的原因有两个。

  1. Azure VM NSG的入站端口规则不允许入站请求移植到端口8000.要在Azure门户上的NSG中为端口8000添加新的端口规则以进行修复,如下图所示。

图1.在图中添加此规则以允许端口8000的入站请求

enter image description here

图2.添加入站安全规则的对话框

enter image description here

  1. 编辑settings.py文件,将允许的主机或IP添加到ALLOWED_HOSTS数组中,如下所示。 # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = ['<your vm ip or DNS name>', 'localhost', '127.0.0.1']

然后运行python manage.py runserver 0.0.0.0:8000,你可以在浏览器中看到Django默认索引页面没有任何错误,如下图所示。

注意:gunicorn服务器侦听端口80,这是默认允许的入站端口规则。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.