原因:

django专注后端,前端交给nginx/uwsgi处理。

事情缘由:

我在本地开发django的时候,使用python manage.py runserver 可以正常加载static静态文件;在上线的时候,访问static文件时,一直提示无法访问,提示:

GET /static/js/My97DatePicker/WdatePicker.js => generated 2357 bytes in 4 msecs (HTTP/1.0 404) 3 headers in 102 bytes

错误如图:

使用uwsgi+nginx作为django的前端入门时候,提示访问static 404 错误_第1张图片

解决方法:

方案1、通过nginx指定静态路径,(未成功)

    server {
            listen       80;
            server_name plot.gray.XXX.com;
            location / {
                alias /opt/cicd/static/;         # 手动指定静态文件夹路径
                proxy_pass http://127.0.0.1:8000;
                index  index.html index.htm index.jsp;
            }
        }

方案2、通过django收集静态文件,并在uwsgi指定对应路径

# 进入项目目录,执行命令
cd django
python manage.py collectstatic

查看配置文件

[uwsgi]
# 通过uwsgi访问django需要配置成http,9000 是django的端口号
# socket = 0.0.0.0:9000         # 通过nginx请求uwsgi来访问django 需要配置成socket
http = 0.0.0.0:9000

# web项目根目录
chdir = /usr/local/django/cicd
wsgi-file= ./cicd/wsgi.py

# module指定项目自带的wsgi配置文件位置
# module = fresh.wsgi

# 允许存在主进程
master = true

# 开启进程数量
processes = 4
thread = 2

# 服务器退出时自动清理环境
vacuum = true

# 使用 uwsgi 的"路径映射"方法提供静态文件
static-map = /static=/usr/local/django/cicd/static