1. 程式人生 > >Django1.11+Uwsgi+Nginx的生產環境部署

Django1.11+Uwsgi+Nginx的生產環境部署

django uwsgi nginx 靜態文件處理

思路:使用runserver可以使我們的django項目很便捷的在本地運行起來,但是這只能在局域網內訪問。正式環境部署的話比較安全,而且靜態文件的處理方式會比較友好。nginx作為服務器的最前端,負責接收client的所有請求,靜態請求由nginx自己處理,非靜態請求通過uwsgi傳遞給django,由django來進行處理。


準備:1 一個django項目,能用runserver啟動;

2 服務器基礎環境,python2.7+uwsgi;使用pip install uwsgi安裝,nignx1.11.10;


第一步:連接django項目和uwsgi

1 編寫測試腳本驗證uwsgi

技術分享圖片

運行uwsgi --http :8001 --wsgi-file test.py

通過curl ip:port 來驗證uwsgi正常;


2 使用uwsgi配置文件啟動django項目

創建uwsgi目錄,以及uwsgi.ini配置文件

技術分享圖片


啟動項目 uwsgi --ini uwsgi.ini

測試訪問。


第二步:連接nginx和uwsgi

修改nginx.conf


技術分享圖片

其中root_static 目錄為指定的STATIC_ROOT目錄


第三步:運行python manage.py collectstatic將所有靜態文件歸納到自定義的一個目錄下

首先要修改項目的urls.py文件

技術分享圖片


接著修改settings的文件,將DEBUG設置為False,ALLOWED_HOSTS = ['*']

以及

STATIC_ROOT = os.path.join(BASE_DIR, 'root_static').replace(r'\\','/')

STATICFILES_DIRS = (

os.path.join(BASE_DIR, 'static'),

)

也就是將所有的靜態文件收集到項目目錄下的root_static目錄下


最後運行命令

python manage.py collectstatic


這個命令的執行目的,就是將在開發模式中定義的靜態目錄,統一拿到STATIC_ROOT目錄下。

  1.首先從Django的擴展包中,將admin管理後臺的jss 和css等靜態文件拷貝到配置文件中的STATIC_ROOT目錄下。

  2.然後將STATICFILES_DIRS 列表中所有目錄下的內容也拷貝到STATIC_ROOT目錄下


第四步:啟動uwsgi和nginx服務,用瀏覽器訪問即可


Django1.11+Uwsgi+Nginx的生產環境部署