使用uwsgi在Nginx下部署Django

2021-08-21 09:08:54 字數 2773 閱讀 5716

windows10 + putty

進入**目錄下

收集靜態檔案

python3 manage.py collectstatic
啟動django

python3 manage.py runserver 0.0.0.0:80
確保**可以使用

pip安裝uwsgi

pip3 install uwsgi
在專案根目錄新建資料夾uwsgi用於存放配置檔案等

[uwsgi]

# 專案根目錄,根據實際情況修改

chdir=/usr/www/test

# sock的檔案路徑,根據實際情況修改

socket=/usr/www/test/uwsgi/uwsgi.sock

# 程序個數

workers=5

# 程序檔案位置,根據實際情況修改

pidfile=/usr/www/test/uwsgi/uwsgi.pid

# 監聽http的ip及埠

# 靜態檔案目錄,根據實際情況修改

static-map=/static=/usr/www/test/static

# 啟動uwsgi的使用者名稱和使用者組

uid=root

gid=root

# 啟用主程序

master=true

# 當服務停止的時候自動移除unix sock和pid檔案

vacuum=true

# 序列化接受的內容,如果可能的話

thunder-lock=true

# 啟用多執行緒

enable-threads=true

# 設定自中斷時間

harakiri=30

# 設定緩衝

post-buffering=4096

# 設定日誌目錄,根據實際情況修改

daemonize=/usr/www/test/uwsgi/uwsgi.log

# 修改.py檔案時uwsgi自動重啟

py-autoreload=1

啟動uwsgi

uwsgi --ini /usr/www/test/uwsgi/uwsgi.ini
訪問admin介面,訪問成功,靜態檔案正常

yum安裝nginx

yum install -y nginx
在/etc/nginx/conf.d/中新建檔案test.conf

server 

# 指定靜態檔案路徑

location /static/

}

這裡需要解釋一下,nginx把收到的動態請求都**給uwsgi所監聽的socket,由uwsgi處理,而靜態檔案由nginx處理。所以在nginx執行時uwsgi也必須執行。

由於剛才測試uwsgi的配置檔案也監聽了80埠,這將導致nginx無法啟動,所以需要修改uwsgi配置檔案,關閉http埠監聽及靜態檔案處理(因為靜態檔案的請求不會**給uwsgi)。

[uwsgi]

# 專案根目錄,根據實際情況修改

chdir=/usr/www/test

# sock的檔案路徑,根據實際情況修改

socket=/usr/www/test/uwsgi/uwsgi.sock

# 程序個數

workers=5

# 程序檔案位置,根據實際情況修改

pidfile=/usr/www/test/uwsgi/uwsgi.pid

# 啟動uwsgi的使用者名稱和使用者組

uid=root

gid=root

# 啟用主程序

master=true

# 當服務停止的時候自動移除unix sock和pid檔案

vacuum=true

# 序列化接受的內容,如果可能的話

thunder-lock=true

# 啟用多執行緒

enable-threads=true

# 設定自中斷時間

harakiri=30

# 設定緩衝

post-buffering=4096

# 設定日誌目錄,根據實際情況修改

daemonize=/usr/www/test/uwsgi/uwsgi.log

# 修改.py檔案時uwsgi自動重啟

py-autoreload=1

重新啟動uwsgi

killall -9 uwsgi

uwsgi --ini /usr/www/test/uwsgi/uwsgi.ini

啟動nginx

service nginx start
再次訪問admin介面,訪問成功,靜態檔案正常

檢視nginx日誌,找到剛才的訪問記錄,證明請求的確經由nginx處理

安裝uwsgi和使用uwsgi

部落格說明 安裝依賴apt get install build essential python dev安裝 uwsgi 使用python3的pip來安裝 pip3 install uwsgi建立配置檔案 建立類似配置檔案,uwsgi.ini uwsgi socket 127.0.0.1 3031 ...

nginx基於uwsgi部署django專案

1.安裝nginx yum install y nginx 需要epel源 2.安裝環境 可以考慮使用虛擬化環境,本處不再使用3.安裝uwsgi yum groupinstall development tools yum install zlib devel bzip2 devel pcre de...

nginx 基於uwsgi部署Django

1.安裝nginx yum install y nginx 需要epel源 2.安裝環境 可以考慮使用虛擬化環境,本處不再使用3.安裝uwsgi yum groupinstall development tools yum install zlib devel bzip2 devel pcre de...