詳解Django+Uwsgi+Nginx的生產(chǎn)環(huán)境部署
使用runserver可以使我們的django項(xiàng)目很便捷的在本地運(yùn)行起來,但這只能在局域網(wǎng)內(nèi)訪問,如果在生產(chǎn)環(huán)境部署django,就要多考慮一些問題了。比如靜態(tài)文件處理,安全,效率等等,本篇文章總結(jié)歸納了一下基于uwsgi+Nginx下django項(xiàng)目生產(chǎn)環(huán)境的部署
準(zhǔn)備條件:
1.確保有一個(gè)能夠用runserver正常啟動的django項(xiàng)目
2.項(xiàng)目已上傳到linux
3.linux上已部署好python環(huán)境,且已安裝好項(xiàng)目所需的模塊
安裝uwsgi
uwsgi是python的一個(gè)模塊,安裝uwsgi只需簡單的pip命令就可以了
pip3 install uwsgi
基于uwsgi+django的實(shí)現(xiàn)
1.使用命令啟動uwsgi
第一步:進(jìn)入django項(xiàng)目

第二步:命令測試啟動
uwsgi --http 192.168.31.123:8080 --file teacher/wsgi.py --static-map=/static=static

參數(shù)說明:
--http 這個(gè)就和runserver一樣指定IP 端口
--file 這個(gè)文件就里有一個(gè)反射,如果你在調(diào)用他的時(shí)候沒有指定Web Server就使用默認(rèn)的
-- static 做一個(gè)映射,指定靜態(tài)文件
此時(shí),訪問http://192.168.2.108:8080/,如圖所示,表示項(xiàng)目啟動成功

2.使用uwsgi配置文件啟動django項(xiàng)目
第一步:在django項(xiàng)目同級目錄創(chuàng)建script目錄,用于存放配置腳本等等

第二步:進(jìn)入/script目錄,創(chuàng)建一個(gè)uwsgi.ini文件
編輯uwsgi.ini文件內(nèi)容如下:
# uwsig使用配置文件啟動 [uwsgi] # 項(xiàng)目目錄 chdir=/opt/proj/teacher/ # 指定項(xiàng)目的application module=teacher.wsgi:application # 指定sock的文件路徑 socket=/opt/proj/script/uwsgi.sock # 進(jìn)程個(gè)數(shù) workers=5 pidfile=/opt/proj/script/uwsgi.pid # 指定IP端口 http=192.168.2.108:8080 # 指定靜態(tài)文件 static-map=/static=/opt/proj/teacher/static # 啟動uwsgi的用戶名和用戶組 uid=root gid=root # 啟用主進(jìn)程 master=true # 自動移除unix Socket和pid文件當(dāng)服務(wù)停止的時(shí)候 vacuum=true # 序列化接受的內(nèi)容,如果可能的話 thunder-lock=true # 啟用線程 enable-threads=true # 設(shè)置自中斷時(shí)間 harakiri=30 # 設(shè)置緩沖 post-buffering=4096 # 設(shè)置日志目錄 daemonize=/opt/proj/script/uwsgi.log
啟動項(xiàng)目:

訪問192.168.2.108:8080,啟動成功

至此,uwsgi+django就完美結(jié)合了,但是,光有uwsgi還不夠,uwsgi處理動態(tài)請求能力高,但對于靜態(tài)請求(如static文件,css,js文件等)處理能力差,此時(shí)就要結(jié)合nginx一起使用
安裝nginx
第一步:配置yum源
vim /etc/yum.repos.d/nginx.repo
文件內(nèi)容如下,wq保存退出

第二步:安裝nginx
yum -y install nginx
測試是否安裝完成,命令啟動nginx
/etc/init.d/nginx start

打開瀏覽器,訪問192.168.2.108出現(xiàn)如下頁面即代表nginx安裝完成且可以正常啟動

第三步:Django + Uwsgi + Nginx
首先創(chuàng)建配置文件,nginx的默認(rèn)配置目錄為/etc/nginx/conf.d

創(chuàng)建teacher.conf文件

配置內(nèi)容如下:
server { # 這個(gè)server標(biāo)識我要配置了
listen 80; # 我要監(jiān)聽那個(gè)端口
server_name 192.168.2.108 ; # 你訪問的路徑前面的url名稱
access_log /var/log/nginx/access.log main; # Nginx日志配置
charset utf-8; # Nginx編碼
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持壓縮的類型
error_page 404 /404.html; # 錯(cuò)誤頁面
error_page 500 502 503 504 /50x.html; # 錯(cuò)誤頁面
# 指定項(xiàng)目路徑uwsgi
location / { # 這個(gè)location就和咱們Django的url(r'^admin/', admin.site.urls),
include uwsgi_params; # 導(dǎo)入一個(gè)Nginx模塊他是用來和uWSGI進(jìn)行通訊的
uwsgi_connect_timeout 30; # 設(shè)置連接uWSGI超時(shí)時(shí)間
uwsgi_pass unix:/opt/proj/script/uwsgi.sock; # 指定uwsgi的sock文件所有動態(tài)請求就會直接丟給他
}
# 指定靜態(tài)文件路徑
location /static/ {
alias /opt/proj/teacher/static/;
index index.html index.htm;
}
}
最后一步,重啟nginx
/etc/init.d/nginx restart

瀏覽器訪問192.168.2.108,出現(xiàn)如下頁面表示啟動成功

nginx相關(guān)命令
# 啟動Nginx通過Nginx訪問 /etc/init.d/nginx start /etc/init.d/nginx stop # 這里有個(gè)命令configtest,Nginx配置是重啟生效的,如果你修改完了,不知道對 不對又擔(dān)心影響其他人可以使用它測試 /etc/init.d/nginx configtest # 如果是生產(chǎn)環(huán)境的話Nginx正在運(yùn)行,就不要直接stop start 或者 restart 直接reload就行了 # 對線上影響最低 /etc/init.d/nginx reload
至此,Django + Uwsgi + Nginx 的生產(chǎn)環(huán)境部署就完成了
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用Nginx+uWsgi實(shí)現(xiàn)Python的Django框架站點(diǎn)動靜分離
- 解決nginx+uwsgi部署Django的所有問題(小結(jié))
- Django + Uwsgi + Nginx 實(shí)現(xiàn)生產(chǎn)環(huán)境部署的方法
- nginx+uwsgi啟動Django項(xiàng)目的詳細(xì)步驟
- 詳解Django+Uwsgi+Nginx 實(shí)現(xiàn)生產(chǎn)環(huán)境部署
- Centos部署django服務(wù)nginx+uwsgi的方法
- Django uwsgi Nginx 的生產(chǎn)環(huán)境部署詳解
- Nginx+Uwsgi+Django 項(xiàng)目部署到服務(wù)器的思路詳解
- centos7下基于nginx+uwsgi部署Django項(xiàng)目的實(shí)現(xiàn)
相關(guān)文章
Python3中對json格式數(shù)據(jù)的分析處理
這篇文章主要介紹了Python3中對json格式數(shù)據(jù)的分析處理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
基于python實(shí)現(xiàn)模擬數(shù)據(jù)結(jié)構(gòu)模型
這篇文章主要介紹了基于python實(shí)現(xiàn)模擬數(shù)據(jù)結(jié)構(gòu)模型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
python中常用檢測字符串相關(guān)函數(shù)匯總
這篇文章主要介紹了python中常用檢測字符串相關(guān)函數(shù),實(shí)例匯總了Python針對字符串?dāng)?shù)字、字母、大小寫等常用檢測函數(shù),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
Python打包工具PyInstaller的安裝與pycharm配置支持PyInstaller詳細(xì)方法
這篇文章主要介紹了Python打包工具PyInstaller的安裝與pycharm配置支持PyInstaller詳細(xì)方法,需要的朋友可以參考下2020-02-02

