1. 程式人生 > >Django+Nginx+uWSGI部署

Django+Nginx+uWSGI部署

3.5 退出 後臺運行 nbsp 前端 ups python gin 使用

一.介紹

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

uWSGI

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 {
    # 監聽端口
    listen 
8080; # 域名 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部署