我正在尝试使用Ubuntu 18.04将我的Django应用程序部署到Azure虚拟机。
8000
使用sudo ufw allow 8000
进行测试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)
这可能有什么不对?
您还需要将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网络接口或子网相关联。
要解决有关无法访问的python manage.py runserver 0.0.0.0:8000
应用程序运行的问题,导致此问题的原因有两个。
8000
添加新的端口规则以进行修复,如下图所示。图1.在图中添加此规则以允许端口8000的入站请求
图2.添加入站安全规则的对话框
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
,这是默认允许的入站端口规则。