nginx與靜態文件的配置

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章