端口无法连通
这几天用Django传项目到ECS上试运行,发现无法本地访问。telnet端口不同,甚至云服务器telnet相应端口也不通。
经常使用的试运行命令:
python manage.py runserver
排查过程如下:
防火墙,并未打开。
阿里云端口出入已经设置。
netstat查看端口,发现端口被绑定为,127.0.0.0:8000。
运行命令修改为:
python manage.py runserver 0:8000
#此处0相当于0.0.0.0
运行正常。
分析:因为127.0.0.1为环回地址,是受到防火墙和安全策略限制的,一般用于测试。具体原因参考链接:https://www.jianshu.com/p/42af752082ab
在测试正常的情况下,进行正式部署后,发现无法正常访问。
部署可参考:http://www.runoob.com/django/django-nginx-uwsgi.html
报错信息如下:
Traceback (most recent call last): File "./mysite/wsgi.py", line 16, in <module> application = get_wsgi_application() File "/usr/lib64/python2.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application django.setup(set_prefix=False) File "/usr/lib64/python2.7/site-packages/django/__init__.py", line 22, in setup configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
由于本次开发使用的python版本为python3,在运行时出现使用了python2.7版本的uwsgi,所以报错。
下载python3 uwsgi
python3 -m pip install uwsgi
建立对应软连接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
运行时出现对应版本信息:
Python version: 3.6.7 (default, Dec 2 2018, 14:48:21) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
之后就可以正常在云服务器运行代码了。