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:///tmp/django.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]
#使用nginx連接時使用
socket=ip : post
#直接做web服務器使用 python manage.py runserver ip:port
#項目目錄
chdir=/home/django
#項目中wsgi.py文件的目錄,相對於項目目錄
wsgi-file=/home/django/wsgi.py
#指定啓動的工作進程數
processes=10
#指定工作進程中的線程數
threads=2
master=True
#保存啓動之後主進程的pid
pidfile=uwsgi.pid
#設置uwsgi後臺運行,uwsgi.log保存日誌信息
daemonize=uwsgi.log
#設置虛擬環境的路徑
virtualenv=/home/.virtualenvs/django