一、nginx+uwsgi
首先, nginx是直接处理请求的,uwsgi是负责运行项目的。
先按照此教程配置。https://blog.51cto.com/sdsca/2044983
注意以下几点:
1】如果修改创建文件遇到permmit denied 的情况,用sudo su 切换到超级用户。
2】3.2 安装 uwsgi 这一节中用的命令,如果提示“no request plugin is loaded, you will not be able to manage requests.
” 需要用 apt-get uwsgi-plugin-python3 安装,如果是python2直接 apt-get uwsgi-plugin-python
并且启动时也要加上: uwsgi --ini uwsgi.ini --plugin python3
并且这一步进行的是本机测试,需要在服务器上用localhost:8000测试,不可以直接用公网IP。
3】3.3 创建软连接时,不要像教程这么写,路径都用绝对路径,不然检测nginx配置文件时会报错。
4】使用sudo nginx -t 检查nginx配置文件,使用sudo nginx -s reload重启nginx
5】如果8010端口还是无法访问,设置防火墙:
firewall-cmd --zone=public --add-port=8010/tcp --permanent
systemctl restart firewalld.service
6】然后再访问,可能就变成这样啦!到这里nginx,uwsgi的配置就成功了。
二、修改Django工程
1、你需要在django项目中设置8010端口。在setting.py下修改ALLOWED_HOSTS即可。
2、登录admin,你可能遇到attempt to write a readonly database的错误。这其实是因为你启动uwsgi的账户权限不够(如果按照教程,就是在/opt/OurCMDB文件夹下权限不够)。你可以将工程移动到/home/<username>下。也可以修改你在/opt/OurCMDB下的权限。先进入到db.sqlite3所在目录,然后依次:
sudo chmod 777 db.sqlite3
cd ..
sudo chmod 777 *
再登录试试,已经可以了。
3、你应该需要后台启动uwsgi——使用 -d:
uwsgi -d --ini uwsgi.ini --plugin python3
--logto 选项可以帮助你输出log
注意,修改项目代码后需要重启uwsgi。
三、其他错误
使用nginx -s reload 重启nginx报错(原因是nginx根本没有启动,当然不能重启)
nginx -c /etc/nginx/nginx.conf
nginx -s reload