uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的做用是與uWSGI服務器進行交換。nginx
要注意 WSGI / uwsgi / uWSGI 這三個概念的區分。web
uWSGI的速度很是快,普通的電腦都能承受每秒兩千屢次的併發訪問。django
uWSGI的使用vim
經過pip安裝過以後,使用命令去執行一個py文件:服務器
uwsgi --http:8000 --wsgi-file mytest.py網絡
啓動django:併發
uwsgi --http:8000 --module mysite.wsgi # 在每個django項目中都有一個wsgi文件。app
須要的配置的參數寫在一個ini文件中,本身vim一個文件而後放在django的主目錄中。而後使用命令:框架
uwsgi thatfile.inidom
配置文件內容:
1 [uwsgi] 2 http = :9000 3 #the local unix socket file than commnuincate to Nginx 4 socket = 127.0.0.1:8001 # 這裏是和Nginx進行通訊的地址,通常爲本機, 由於兩個程序運行在一個服務器中。 5 # the base directory (full path) 6 chdir = /home/ccc/DelightRobin 7 # Django's wsgi file 8 wsgi-file = DelightRobin/wsgi.py 9 # maximum number of worker processes 10 processes = 4 # 開多少進程 11 #thread numbers startched in each worker process 12 threads = 2 # 每一個進程開多少線程 13 14 #monitor uwsgi status 15 stats = 127.0.0.1:9191 # uwsgi提供監控的端口 16 # clear environment on exit 17 vacuum = true
這裏解釋一下三者沒什麼要配合着使用:在django中提供的併發的測試模式只適用於測試用(承擔併發小,速度慢,容易down。)。同時,uwsgi也能直接運行保證django程序的運行。Nginx的做用聽說是你們都這麼用。Nginx的主要做用是接收到client的信息後給uwsgi,還有靜態文件的獲取。
apt-get 安裝好Nginx以後,試着啓動去init.d下Nginx start服務。輸入本機地址已經出來歡迎頁面了。
可是若是想要本身的django啓動還要配置一個文件:mysite_nginx.conf 其中必須以nginx.conf結尾,放在django目錄中:
在此以前須要將etc/nginx 下的uwsgi_params文件拷貝到django目錄中一份。
1 # mysite_nginx.conf 2 3 # the upstream component nginx needs to connect to 4 upstream django { 5 # server unix:///path/to/your/mysite/mysite.sock; # for a file socket 6 server 127.0.0.1:8001; # for a web port socket (we'll use this first) 這裏就是uwsgi配置中寫的地址 二者通訊 7 } 8 9 # configuration of the server 10 server { 11 # the port your site will be served on 12 listen 8000; # 用戶端口 13 # the domain name it will serve for 14 server_name .example.com; # substitute your machine's IP address or FQDN 15 charset utf-8; 16 17 # max upload size 18 client_max_body_size 75M; # adjust to taste 19 20 # Django media 21 location /media { 22 alias /path/to/your/mysite/media; # your Django project's media files - amend as required 23 } 24 25 location /static { # 項目靜態的文件的地址 26 alias /path/to/your/mysite/static; # your Django project's static files - amend as required 27 } 28 29 # Finally, send all non-media requests to the Django server. 30 location / { 31 uwsgi_pass django; 32 include /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed django項目中的params文件 33 } 34 }
同時作一個ln -s 的操做將這個配置文件軟鏈接到nginx/sites-enabled 中保證nginx知道項目的存在,由於nginx不僅僅能支持一個項目的啓動。
最後在django中,由於不一樣的app存在着不一樣的靜態文件,可能致使admin中的靜態文件找不到。因此經過manage.py執行復制命令。
Python3 manage.py collectstatic
在此以前先在django的settings文件中寫入路徑 STATIC_ROOT = 'allfile' 而且保證其餘app靜態文件不能是同名的。此靜態文件纔是最後配置在nginx配置文件中的路徑文件。