參考: https://www.cnblogs.com/pyyu/p/9481344.html
一、什么是wsgi, uwsgi, uWSGI
wsgi
全稱web server gateway interface,wsgi不是服務器,也不是python模塊,
只是一種協議,描述web server如何和web application通信的規則。
運行在wsgi上的web框架有bottle,flask,django
uwsgi
和wsgi一樣是通信協議,是uWSGI服務器的單獨協議,用於定義傳輸信息的類型
uWSGI
是一個web服務器,實現了WSGI協議,uwsgi協議
二、安裝uWSGI
復制代碼 進入虛擬環境venv,安裝uwsgi (venv) [root@slave 192.168.11.64 /opt]$pip3 install uwsgi 檢查uwsgi版本 (venv) [root@slave 192.168.11.64 /opt]$uwsgi --version 2.0.17.1 #檢查uwsgi python版本 uwsgi --python-version
三、uWSG簡單運行
#啟動一個python uwsgi --http :8000 --wsgi-file test.py http :8000: 使用http協議,端口8000 wsgi-file test.py: 加載指定的文件,test.py #test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] # python3
熱加載python程序
在啟動命令后面加上參數 uwsgi --http :8088 --module mysite.wsgi --py-autoreload=1 #發布命令 command= /home/venv/bin/uwsgi --uwsgi 0.0.0.0:8000 --chdir /opt/mysite --home=/home/venv --module mysite.wsgi #此時修改django代碼,uWSGI會自動加載django程序,頁面生效
運行django程序
#mysite/wsgi.py 確保找到這個文件 uwsgi --http :8000 --module mysite.wsgi module mysite.wsgi: 加載指定的wsgi模塊
四、使用.ini配置文件加載python程序
4.1 uwsgi支持ini、xml等多種配置方式,本文以 ini 為例, 在/etc/目錄下新建uwsgi_nginx.ini,添加如下配置:
# mysite_uwsgi.ini file [uwsgi] # Django-related settings # the base directory (full path) chdir = /opt/mysite # Django's wsgi file module = mysite.wsgi # the virtualenv (full path) home = /opt/venv # process-related settings # master master = true # maximum number of worker processes processes = 1 # the socket (use the full path to be safe socket = 0.0.0.0:8000 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true
#添加配置選擇 [uwsgi] #配置和nginx連接的socket連接 socket=127.0.0.1:8002 #配置項目路徑,項目的所在目錄 chdir=/home/pp1709/wangsen_work/wsftp/myweb #配置wsgi接口模塊文件路徑 wsgi-file=myweb/wsgi.py #配置啟動的進程數 processes=4 #配置每個進程的線程數 threads=2 #配置啟動管理主進程 master=True #配置存放主進程的進程號文件 pidfile=uwsgi.pid #配置dump日志記錄 daemonize=uwsgi.log`
4.2 指定配置文件啟動
uwsgi --ini /etc/uwsgi_nginx.ini #不加--ini也可以
- 顯示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi運行成功。
- 通過 ps -ef|grep uwsgi 查看確認是否uwsgi啟動。
4.3 停止運行uwsgi,通過包含主進程編號的文件設置停止項目
> uwsgi --stop uwsgi.pid
4.4 重啟uwsgi
> uwsgi --reload uwsgi.pid