Nginx+uwsgi 部署Django 專案
安裝Nginx
將nginx-1.8.1.tar.gz解壓縮並執行以下命令。(需要安裝包的請加下方微信公眾號二維碼回覆nginx)
tar -zxvf nginx-1.8.1.tar.gz
cd ./nginx-1.8.1
sudo ./configure --prefix=/usr/local/nginx
sudo make
sudo make install
安裝成功之後(如果安裝失敗可以公眾號聯絡我),進行cd /usr/local/nginx/sbin

nginx 執行及停止
sudo /usr/local/nginx/sbin/nginx #啟動
sudo /usr/local/nginx/sbin/nginx -s stop #停止
sudo /usr/local/nginx/sbin/nginx -s reload #停止
安裝uwsgi
安裝uwsgi相對簡單:
pip install uwsgi
靜態頁面
Django自身有帶著很多靜態檔案(例如:admin的靜態頁面),但是著生產模式下他就不會著提供這些靜態檔案。
我們現在要先收集所有的靜態檔案,需要著配置檔案裡面新增配置如下:
# 下面是Django提供了收集靜態檔案的方法,將Django自帶的靜態檔案放到我們自己的front靜態檔案下面的static (這個目錄需要手動建立)
STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)),'front/static')
# 下一步就是執行收集命令,執行完static就會出現很多靜態檔案
python manage.py collectstatic
使用Nginx伺服器作為靜態檔案伺服器
開啟Nginx的配置檔案
sudo vim /usr/local/nginx/conf/nginx.conf
在server部分中配置
server {
listen80;
server_name xxxxxxxx; #這裡的xxxxx是你們域名或者ip地址
#當在瀏覽器訪問根路徑時候進到這裡面來
location / {
root root/project/front; # 這是我專案靜態檔案的路徑,你們換成你們自己的路徑即可
index index.html index.htm; #返回首頁
}
。。。。。
}
修改完成儲存並退出後重啟nginx如下 (沒有開起就直接啟動命令上前面提到)
sudo /usr/local/nginx/sbin/nginx -s reload
動態介面
使用uwsgi啟動我們的django專案
這裡需要修改專案的配置檔案
DEBUG =True
ALLOWED_HOSTS = [‘*']
CORS_ORIGIN_WHITELIST = (
#啟動專案的ip
’xxxxxxxx:8080‘ #靜態地址
)
在專案目錄下建立uwsgi配置檔案 uwsgi.ini
[uwsgi]
#使用nginx連線時使用,Django程式所在伺服器地址
http=xxx.xxx.xxx.xxx:8000 #這裡的IP可以在終端使用ifconfig檢視到
#專案目錄
chdir=xxx/xxx/xxx/xxx/ #這是你的專案路徑
l#專案中wsgi.py檔案的目錄,相對於專案目錄
wsgi-file=xxxxxx/wsgi.py #這是你專案裡wsgi的路徑
# 程序數
processes=8
# 執行緒數
threads=4
# uwsgi伺服器的角色
master=True
# 存放程序編號的檔案
pidfile=uwsgi.pid
# 日誌檔案,因為uwsgi可以脫離終端在後臺執行,日誌看不見。我們以前的runserver是依賴終端的
daemonize=uwsgi.log
# 指定依賴的虛擬環境
virtualenv=/x x/x x/.x x/x x #這是你虛擬環境路徑 只到虛擬環境名就好
啟動uwsgi伺服器 (就可以訪問後臺介面)
uwsgi --ini uwsgi.ini
Nginx+uwsgi 來訪問後臺介面
第一步:
需要把uwsgi.ini 檔案裡的http=xx.xx.xx.xx:8000 ,換成socket=xx.xx.xx.xx:8000,
第二步 :
修改Nginx配置檔案,讓Nginx接收到請求後轉發給uwsgi伺服器(加上一下配置即可)
server {
listen8000;
server_name xx.xx.xx.xx; # 這裡是公網ip 部署本地就直接127.0.0.1
location / {
include uwsgi_params;
uwsgi_pass xx.xx.xx.xx:8000; #這裡的ip和埠就是uwsgi.ini 檔案裡面的socket寫的ip
}
}
最後重啟nginx即可。大功告成 (如果在做 Nginx+uwsgi 來訪問後臺介面這一部分出現什麼問題可以聯絡我聯絡方式在下面掃描公眾號二維碼留言即可! )

微信公眾號