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

时间:2019-02-13 05:44:01

标签: python django azure azure-virtual-machine ubuntu-18.04

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

  1. 我已经设置了虚拟机并通过SSH连接到它。
  2. 然后运行更新和升级命令
  3. 设置Python和虚拟环境
  4. 上传我的代码并激活环境
  5. 允许端口8000使用sudo ufw allow 8000进行测试
  6. 安装所有要求之后,当我运行命令时:

    python manage.py runserver 0.0.0.0:8000
    

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

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

  

更新:   只需通过在8000下的azure门户中手动添加端口Inbound port rules即可解决。   但是:当我尝试通过gunicorn运行它时:

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

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

  

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

这有什么问题吗?

2 个答案:

答案 0 :(得分: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-创建配置为在以下位置提供Web请求的VM之后   标准TCP端口80,您可以:

     

2-创建一个网络安全组。

     

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

     

4-目标端口范围:80

     

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

     

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

     

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

答案 1 :(得分:0)

要解决有关无法通过python manage.py runserver 0.0.0.0:8000运行的应用程序的问题,有两个原因可以引起问题。

  1. Azure VM NSG的入站端口规则不允许入站请求访问端口8000。要在Azure门户上为NSG中的端口8000添加新的端口规则以对其进行修复,如下图。
  2. li>

图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