[Django筆記] uwsgi + nginx 配置

django 和 nginx 經過 uwsgi 來處理請求,相似於 nginx + php-fpm + phpphp

安裝nginx

html

安裝配置uwsgi

pip install uwsgi
回想php-fpm安裝完直接啓動就完事了,好像只要配置php的路徑
uwsgi的啓動須要一大堆參數,能夠寫好一個配置文件 uwsgi_conf.ini,下面是一個demo:linux

# uwsig使用配置文件啓動
[uwsgi]
# 項目目錄
chdir=/var/www/path/to/django/
# 指定項目的application(django 目錄的 wsgi.py)
module=pics.wsgi:application
# 指定sock的文件路徑       
socket=/var/www/path/to/django/script/uwsgi.sock
# 進程個數       
workers=5
pidfile=/var/www/path/to/django/script/uwsgi.pid
# 指定IP端口       
http=127.0.0.1:80
# 指定靜態文件
static-map=/static=/var/www/path/to/django/static
# 啓動uwsgi的用戶名和用戶組
uid=root
gid=root
# 啓用主進程
master=true
# 當服務中止的時候自動移除unix Socket和pid文件
vacuum=true
# 序列化接受的內容,若是可能的話
thunder-lock=true
# 啓用線程
enable-threads=true
# 設置自中斷時間
harakiri=30
# 設置緩衝
post-buffering=4096
# 設置日誌目錄
daemonize=/var/www/path/to/django/script/uwsgi.log

配置文件解釋:nginx

  • 經過 uwsgi [xxx.ini]來啓動服務
  • pid, sock, log 三個文件跟這個 ini 文件能夠統一在 django 目錄下面新建一個script 文件夾存放
  • nginx 是讀取sock 來鏈接 uwsgi
  • pid 文件很是重要, uwsgi 經過 uwsgi --stop [xxx.pid]uwsgi --reload [xxx.pid] 來中止和重啓服務
  • 由於uwsgi 是給nginx 作橋接,ip 爲127.0.0.1. 個人http端口不是80,所以這裏能夠使用80

啓動後,能夠經過http://127.0.0.1來測試訪問 django. (我在linux直接curl 127.0.0.1測試)django

nginx.conf 配置 uwsgi

本機配置了一個php服務,想經過子路徑/pics來訪問 django:app

# 指定項目路徑uwsgi
location /pics { 
    include uwsgi_params; # 導入一個Nginx模塊他是用來和uWSGI進行通信的
    uwsgi_connect_timeout 30; # 設置鏈接uWSGI超時時間
    uwsgi_pass unix:/var/www/path/to/django/script/uwsgi.sock; # 指定uwsgi的sock文件全部動態請求就會直接丟給     
}
# 指定靜態文件     
location /pics/static/ {
    alias /var/www/path/to/django/static/;
    index index.html index.htm;
}

重啓nginx nginx -s reload ,大功告成
curl

相關文章
相關標籤/搜索