Django+Nginx+uWSGI部署
一.介紹
Django的部署有多種方式,采用Nginx+uWSGI的方式是最常見的一種方式。在這種方式中,將Nginx作為服務器前端,接收Web的所有請求,統一管理請求。Nginx自己處理所有靜態請求,所有非靜態請求通過uWSGI傳遞給Django,由Django來進行處理,從而完成一次Web請求。
二.安裝配置
環境:Python(3.5.2)、Django(1.11.6)
1.安裝pip
root@787c084a44e4:~# apt-get install -y python3-pip
2.安裝uWSGI
root@787c084a44e4:~# python3 -m pip install
3.安裝Django
root@787c084a44e4:~# python3 -m pip install Django
4.安裝Nginx
root@787c084a44e4:~# apt-get install -y nginx
5.通過文件配置uwsgi,新建文件/root/web/uwsgi.ini
[uwsgi] # 監聽IP和端口 socket = 127.0.0.1:9090 # 項目主目錄 chdir = /root/web/Django # uwsgi文件路徑 module = Django.wsgi:application # 允許主進程存在 master= True # 開啟的進行數 workers = 1 # 服務器退出時自動清楚環境 vacuum = True # 設置工作進程請求上限 max-requests = 1000 # 記錄主進行的pid pidfile = /var/uwsgi.pid # 使進程在後臺運行 daemonize = /var/uwsgi.log
6.配置nginx虛擬主機,新建文件/etc/nginx/sites-enabled/django.conf
# nginx需要連接的後端代理 upstream django { server 127.0.0.1:9090; } # 虛擬主機配置 server { # 監聽端口 listen8080; # 域名 server_name 127.0.0.1; # 編碼 charset utf-8; # 靜態文件路徑 location /static { alias /root/web/Django/static; } # 將動態請求轉發到uwsgi運行的django程序 location / { uwsgi_pass django; include /etc/nginx/uwsgi_params; } }
7.修改nginx默認運行用戶,修改/etc/nginx/nginx.conf文件,user www-data修改為user root
三.驗證部署
運行工程
root@787c084a44e4:~/web# uwsgi --ini uwsgi.ini & nginx
訪問地址http://127.0.0.1:8080/list,數據和頁面css樣式正常
四.異常情況
1.出現DisabllowedHost
修改Django/Django/settings.py文件
ALLOWED_HOSTS = ["*"]
2.出現靜態文件403異常
Nginx使用www-data用戶運行,無web目錄讀取權限,修改/etc/nginx/nginx.conf文件,user www-data修改為user root
Django+Nginx+uWSGI部署