本文并不是一篇如何在 CentOS7 上搭建 Django 的教程,仅记录一些从搭建到成功访问遇到的一些问题以及相应的解决方案,希望能给遇到同样或类似问题的同僚提供一些帮助。
环境信息
服务器:腾讯云 CentOS 7.5
Django:3.0.6
firewalld
相关
使用 firewall-cmd
报错 from gi.repository import GObject ModuleNotFoundError: No module named 'gi'
原因:CentOS7 不再使用 iptables
而是使用 firewalld
,但是 firewalld
只支持 Python2
,由于之前已经升级了Python3
并且更新了python
命令软连接,所以无法正常运行。
解决方案:修改 /usr/bin/firewall-cmd
和 /usr/sbin/firewalld
文件中 python
环境的指向。修改后截图如下:
FirewallD is not running
原因:防火墙未开启
解决方案:systemctl start firewalld
开启防火墙,通过 systemctl status firewalld
可查看防火墙状态。
使用公网 ip 无法访问
无法访问时,检查以下配置:
- Django 项目中
setting.py
中ALLOWED_HOSTS
是否添加,如未添加,请加入自己服务器的公网 ip。 - 服务器防火墙是否开启,如
iptables
和firewalld
都关闭则可不用配置开放端口,我自己使用的是firewalld
,所以需要开放端口。 - 腾讯云安全组中是否已添加开放端口的规则 。
如以上三点均检查无误且执行python manage.py runserver 0:xxxx
(xxxx为开放的端口号),则可以使用浏览器通过公网 ip 访问已启动的Django服务。
注:建议不使用80端口作为开放端口,腾讯云中80端口需要备案才能访问,自己之前在这个地方坑了好几个小时,各种配置检查都没有问题,但就是访问不了,后来更换了其它端口瞬间访问成功,巨坑无比!!