django框架在实际部署时,DEBUG模式要调整为False,这时所有的静态文件框架本身不能够获取。
所以这里可以使用nginx的反向代理获取静态文件,其原理是,在配置nginx与uwsgi服务器关联后,所有的静态文件的获取都会通过nginx中配置的静态文件路径去获取。
当然在此之前需要在django框架下的settings.py文件中配置静态文件路径:
STATIC_ROOT = os.path.join(BASE_DIR, 'static_dist')
并使用如下命令收集静态文件:
python manage.py collectstatic
之后所有文件路径访问static下的文件,都会通过nginx服务器默认在static_dist
下寻找。
可以借助这一特性,将我们需要存储在服务器的文件,动态存储到新生成的static_dist文件中,路径依旧保持static路径,这样就可以正常访问存储的静态文件。
nginx配置参考:
nginx.py
-- nginx django.conf
upstream django{
server unix:///var/uwsgi/django_01.sock;
}
# 服务器配置
server {
# 监听端口
listen post;
# 域名
server_name ip或域名;
charset utf-8;
# 最大文件上传尺寸
client_max_body_size 75M;
# 静态文件访问的url
location /static {
# 静态文件地址
alias /home/django/static_dist;
}
# 最后,发送所有的非静态文件请求到django服务器
location / {
uwsgi_pass django;
# uwsgi_params文件地址
include /etc/nginx/uwsgi_params;
}
}
uwsgi配置参考:
[uwsgi]
# Django相关配置
# 必须全部为绝对路径
# 项目路径
chdir=/home/djangoProject/django_01
# Django的wsgi文件
#wsgi-file=/home/djangoProject/django_01/django_01/wsgi.py
module = django_01.wsgi:application
# python虚拟环境的路径
home=/root/.virtualenvs/env3dj
# 进程相关的设置
# 主进程
master=true
# 最大数量的工作进程
processes=10
# socket文件路径,绝对路径
# 该路径自己指配,但是要保持与nginx/conf.d中配置的.socket路径一致
socket=/var/uwsgi/django_01.sock
# 设置socket的权限 绝对路径
chmod-socket=666
# 退出时是否清理环境
vacuum=true
# 日志记录
daemonize = /var/log/uwsgi/djangoblog.log