Django项目部署问题之ModuleNotFoundError: No module named '***.wsgi'

今天上线了用django开发的第二个网站,因为是新手小白,对uwsgi还比较陌生,也就部署这个博客站的时候配置过,下面来说问题吧,部署第二个站的时候在虚拟环境中使用python manage.py runserver 8080可以正常启动,用uwsgi  --ini nas_uwsgi.ini启动会报如下错误:

[pid: 2625|app: -1|req: -1/1] 123.57.64.26 () {60 vars in 1140 bytes} [Tue Jun  2 08:37:10 2020] GET / => generated 21 bytes in 324 msecs (HTTP/1.0 500) 2 headers in 83 bytes (0 switches on core 0)

ModuleNotFoundError: No module named 'nas.wsgi'

unable to load app 0 (mountpoint='') (callable not found or import error)

--- no python application found, check your startup logs for errors ---

这个问题白天折磨了我一天,晚上静下心来一点点分析,很快解决

首先我们看No module named 'nas.wsgi',定位出现nas.wsgi的配置在哪里

server {
    listen 80;
    server_name  ***; #改为自己的域名,没域名修改为127.0.0.1:80
    charset utf-8;
    location / {
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:8001;  #端口要和uwsgi里配置的一样
       uwsgi_param UWSGI_SCRIPT nas.wsgi;  #wsgi.py所在的目录名+.wsgi
       uwsgi_param UWSGI_CHDIR /data/wwwroot/blog; #项目路径
    }
}

nginx里有关于nas.wsgi的配置,“wsgi.py所在的目录名+.wsgi”通过注释我们可以再看uwsgi的配置

#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:8001
#配置项目路径,项目的所在目录
chdir=/data/wwwroot/blog
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名
wsgi-file=blog/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi_nas.pid
#配置dump日志记录
daemonize=/data/uwsgi/logs/uwsgi.log

很显然跟这条配置有关

wsgi-file=blog/wsgi.py

这条配置没有指定完整的路径,所以我推测应该是跟

chdir=/data/wwwroot/blog

这条配置一起的,所以wsgi-file完整的路径应该是/data/wwwroot/blog/blog/wsgi.py,再参考上一个站点的配置,wsgi-file应该指向django的配置文件夹下,就是/data/wwwroot/blog/myblog/wsgi.py,更改配置

wsgi-file=myblog/wsgi.py

重启项目,可以正常访问了