Nginx部署Django项目报错 KeyError: 'REQUEST_METHOD'

这个问题是应为Nginx的配置文件有问题;

要使用uwsgi启动Django的话要有以下配置:

upstream djangos14{
            # nginx负载均衡配置;
            server 10.0.0.10:9999;
            #server 10.0.0.11:80;
        }
    server {
        listen       80;
        server_name  www.s14hanju.com;
        location / {
            # 要使用uwsgi,代理就不要用proxy_pass了,要使用uwsgi_pass;
            uwsgi_pass djangos14;
            # 要指定Nginx安装目录下的conf文件下的uwsgi_params文件的绝对路径;
            include  /opt/nginx1-12/conf/uwsgi_params;

            root   /data/hanju;
            index  index.html index.htm;
        }
        location /status {
            stub_status on;
        }

然后要在虚拟环境中的Django项目中的manager。py文件同级目录中创建 uwsgi。ini文件,作为启动初始化

[uwsgi]
                #项目的绝对路径,定位到项目的第一层
                chdir           = /root/Desktop/NB_crm
                #指明项目的wsgi文件路径
                module          = NB_crm.wsgi
                #指明你的虚拟解释器的第一层路径
                home            = /root/Envs/nbcrm
                #指明通过uwsgi,启动多少个进程
                processes       = 5

                #非常重要
                #非常重要
                #非常重要
                #如果你已经配置了nginx(启动了nginx服务,配置了uwsgi_pass),请用这个socket连接
                socket          = 0.0.0.0:9999

                #如果你没用nginx,想通过uwsgi直接启动web服务,指明http协议
                #http = 0.0.0.0:9999

                #在退出uwsgi环境后,清空环境变量
                vacuum          = true

但是这样起来的项目是没有静态文件的,应为uwsgi不支持静态文件的解析,所以要手动收集项目中的静态文件,

需要配置项目的setting.py文件,添加路径

STATIC_ROOT='/root/Desktop/static'

指定静态文件的收集目录,在执行命令

通过python3 manage.py collectstatic 收集所有你使用的静态文件保存到STATIC_ROOT!

然后使用Nginx指定静态文件位置STATIC_ROOT,转发静态请求。

location /static{
alias  '/opt/static';
}
  
原文地址:https://www.cnblogs.com/bozhengheng/p/12182527.html