windows下使用nginx + waitress 部署django

2023-03-07 18:00:30

雖然不喜歡IIS,不過有些專案又必須部署在windows上,windows下部署django的方案有IIS + wfastcgiapache + mod_wsgi,也有超簡單的部署方式如:nginx + waitress,本文主要講的是最後一種部署方式。

程式檔案

隨便找個目錄放置好程式檔案

下載安裝nginx和組態檔

1、下載
下載連結:http://nginx.org/en/download.html
一直都只在linux中使用nginx,還從未在windows中使用,感覺在windows中使用nginx更為簡單
2、安裝
下載的是一個壓縮包,找個目錄解壓即可,無需安裝,解壓出來的內容為:

其中nginx.exe是入口程式,不考慮系統命令的情況下,cd到當前目錄,即可使用nginx的命令了:

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: NONE)
  -e filename   : set error log file (default: logs/error.log)
  -c filename   : set configuration file (default: conf/nginx.conf)
  -g directives : set global directives out of configuration file

如果把nginx設定到環境變數中,即可在全域性使用nginx命令。

3、組態檔
和linux環境下設定一樣,這裡貼一份基礎設定,主要是修改nginx目錄下的conf/nginx.conf

worker_processes  2;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid  logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include           mime.types;
    default_type      application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log        logs/access.log  main;
    sendfile          on;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost 121.199.1.144;

        location / {
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8000;
        }

        location /static {
            alias C:\inetpub\wwwroot\sanxue\static;
        }

        location /media {
            alias C:\inetpub\wwwroot\sanxue\media;
        }

下載waitress和使用它

1、下載

pip install waitress

2、使用
waitress的使用太簡單了,國內使用的人也非常少,在django專案的根目錄建立run.py(檔名隨意),內容如下:

from waitress import serve
from sanxue.wsgi import application

serve(
    app=application,
    host='127.0.0.1',
    port=8000
)

然後使用命令列python run.py即可啟動django的服務了,比IISapache的簡單太多了,跑箇中小專案都不成問題。

如果想把以上的命令加到windwos服務中,可參考下面的第3點。

參考

1、waitress官方檔案https://docs.pylonsproject.org/projects/waitress/en/stable/index.html
2、如何在python web專案中使用waitress https://www.devdungeon.com/content/run-python-wsgi-web-app-waitress
3、如何把python專案構建成windows服務 https://www.devdungeon.com/content/run-python-script-windows-service