django 和 nginx 經過 uwsgi 來處理請求,相似於 nginx + php-fpm + phpphp
略html
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]
來啓動服務uwsgi --stop [xxx.pid]
和uwsgi --reload [xxx.pid]
來中止和重啓服務啓動後,能夠經過http://127.0.0.1來測試訪問 django. (我在linux直接curl 127.0.0.1
測試)django
本機配置了一個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