Django項(xiàng)目uwsgi+Nginx保姆級(jí)部署教程實(shí)現(xiàn)
寫(xiě)在最前:
非常抱歉的是,因?yàn)橥蝗缙鋪?lái)的疫情,我的hadoop系列斷更了,很難受,因?yàn)槲业姆植际江h(huán)境在學(xué)校,我的筆記本配置帶不起來(lái),代碼跑不起來(lái)我是不敢寫(xiě)博客的,然后寒假在家寫(xiě)代碼也沒(méi)啥意思,看了非常多的書(shū),把計(jì)網(wǎng)和操作系統(tǒng)重新學(xué)了一遍。因?yàn)閷?shí)習(xí)的需要,未來(lái)我更多的技術(shù)可能在Python這塊,但是java相關(guān)的內(nèi)容我也會(huì)努力保持更新,同時(shí)也會(huì)出更多的入門(mén)教程給大家謝謝大家。
背景:
最近在學(xué)習(xí)django的過(guò)程中,用django做了一個(gè)小demo,所以試試看能不能部署到服務(wù)器上,自己順便也熟悉一下Django整個(gè)部署的流程,因?yàn)橹皩W(xué)習(xí)flask的時(shí)候,就使用的uwsgi來(lái)作為python web服務(wù)器來(lái)部署的,所以這次也就選擇了nginx+uwsgi這樣的一個(gè)組合。
當(dāng)時(shí)買(mǎi)完云服務(wù)器之后,就順手把寶塔裝上了,之前用寶塔部署php項(xiàng)目是真的很容易,所以就偷懶試試寶塔能不能部署django,苦試一個(gè)小時(shí),無(wú)果,遂放棄,還是老老實(shí)實(shí)用原生的uwsgi配合Nginx來(lái)部署吧。然后下面的流程我會(huì)爭(zhēng)取把有可能是坑的地方重點(diǎn)標(biāo)注出來(lái),將來(lái)如果發(fā)博客或者自己需要再次部署的時(shí)候,也可以少寫(xiě)很多配置文件。
環(huán)境:
系統(tǒng)版本 :centos7.5
python 版本:3.6.5
nginx 版本:1.16.1
uwsgi 版本:2.0.18
如環(huán)境不同,還請(qǐng)查閱其他資料另行配置。
環(huán)境準(zhǔn)備:
在部署之前,請(qǐng)確保你的linux服務(wù)器正確安裝了對(duì)應(yīng)的python版本,如果需要python3版本,請(qǐng)自行查閱資料進(jìn)行升級(jí)安裝。
首先為了更好的獨(dú)立部署,避免對(duì)其他的項(xiàng)目產(chǎn)生干擾,我們需要安裝python 虛擬環(huán)境:
sudo pip install virtualenv sudo pip install virtualenvwrapper
virtualenvwrapper 是virtualenv的擴(kuò)展管理包,可以將所有的虛擬環(huán)境整合在一個(gè)目錄下。
配置虛擬環(huán)境:
mkdir ~/.virtualenvs
打開(kāi).bashrc:
sudo vim ~/.bashrc
在.bashrc的末尾增加下面內(nèi)容:
export WORKON_HOME=$HOME/.virtualenvs # 所有虛擬環(huán)境存儲(chǔ)的目錄 source /usr/local/python3/bin/virtualenvwrapper.sh
注意?。哼@里的/usr/local/bin/virtualenvwrapper.sh只是針對(duì)于我當(dāng)前系統(tǒng)環(huán)境的一個(gè)位置,并不是所有的服務(wù)器都是在這個(gè)位置,如果自己不知道virtualenvwrapper.sh在哪里,可以搜索文件來(lái)找到它在系統(tǒng)中的位置,并且修改.bashrc。
啟用配置文件:
source ~/.bashrc
這個(gè)時(shí)候如果不報(bào)錯(cuò),就代表我們的虛擬環(huán)境配置成功了,一般常見(jiàn)的報(bào)錯(cuò)就是virtualenvwrapper.sh文件找不對(duì)。
創(chuàng)建虛擬環(huán)境:
找一個(gè)你自己覺(jué)得能記住的地方,新建一個(gè)env 文件夾:
cd /www mkdir env cd env #進(jìn)入env目錄
新建一個(gè)虛擬環(huán)境:
mkvirtualenv -p /usr/bin/python3 orange_env # my_env是虛擬環(huán)境的名稱(chēng)
注意:如果你的軟連接/usr/bin/python3沒(méi)有的話,會(huì)報(bào)錯(cuò)誤,找不到/usr/bin/python3,這個(gè)時(shí)候就需要你自己新建一個(gè)軟連接:
如果報(bào)錯(cuò):
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 路徑要改成自己的python安裝路徑
之后便可以進(jìn)入我們的虛擬環(huán)境了:
source /www/env/orange_env/bin/activate
進(jìn)去虛擬環(huán)境之后,前面會(huì)出現(xiàn)一個(gè)括號(hào),里面是你虛擬環(huán)境的名字:
(orange_env) [root@iz2ze1cvux96riiwfh05qqz ~]#
在虛擬環(huán)境中安裝uwsgi:
pip install uwsgi
退出虛擬環(huán)境:
deactivate
再次在主環(huán)境中安裝uwsgi:
pip install uwsgi
注意:如果你有其他的依賴(lài),比如django,msqlclient這些,記得一定要在虛擬環(huán)境里pip安裝一下。
部署過(guò)程:
找一個(gè)你認(rèn)為比較合適的地方,新建一個(gè)文件夾,將你的Django項(xiàng)目上傳進(jìn)去:
以我為例:
cd /www mkdir orange
上傳解壓操作略,記得是上傳項(xiàng)目根目錄,就是直接帶manage.py的那個(gè)目錄。
新建一個(gè)uswgi配置文件,uswgi支持多種配置文件類(lèi)型,比如yaml,xml,json,ini,這里我選的是xml。
vim mysite.xml #記得mysite.xml 要和你項(xiàng)目的manage.py 在一個(gè)目錄下。
mysite.xml內(nèi)容如下:
<uwsgi> <socket>127.0.0.1:8080</socket><!-- 內(nèi)部端口,自定義 --> <chdir>/www/orange/</chdir><!-- 項(xiàng)目路徑 --> <module>orangeproject.wsgi</module> <!-- 一般模塊名 項(xiàng)目名+wsgi --> <processes>4</processes> <!-- 進(jìn)程數(shù) --> <daemonize>uwsgi.log</daemonize><!-- 日志文件 --> </uwsgi>
安裝Nginx:
Nginx 我之前有寫(xiě)過(guò)一系列的基礎(chǔ)入門(mén)教程,如果對(duì)安裝啟動(dòng)重啟這些不是很熟練的可以看下面這篇文章:
鏈接: 寫(xiě)給后端的Nginx初級(jí)入門(mén)教程:實(shí)戰(zhàn)篇
查看nginx 配置文件路徑:
nginx -t
記得備份nginx之前的配置文件,然后把之前的配置全部刪了,直接加入下面內(nèi)容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 8000;
server_name 你的域名;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
uwsgi_param UWSGI_SCRIPT orangeproject.wsgi;
uwsgi_param UWSGI_CHDIR /www/orange/;
}
location /static/ {
alias /www/orange/transfer/static/;
}
}
}
注意模塊名要保持一致,而且你nginx監(jiān)聽(tīng)的端口不能和你django啟動(dòng)的端口一樣,要不uswgi會(huì)因?yàn)閚ginx占用端口啟動(dòng)失敗。alias /www/orange/transfer/static/; 這個(gè)是你的靜態(tài)文件地址,css,img這些。
檢查nginx是否配置成功:
nginx -t
重啟nginx:
nginx -s reload
之后,再次進(jìn)入我們的虛擬環(huán)境orange_env中,啟動(dòng)我們的uwsgi服務(wù)器:
cd /www/orange uwsgi -x mysite.xml
然后打開(kāi)我們的本地瀏覽器,輸入:域名:8000,備案過(guò)的可以改nginx配置文件成80。
大功告成:

到此這篇關(guān)于Django項(xiàng)目uwsgi+Nginx保姆級(jí)部署教程實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Django uwsgi+Nginx 部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從請(qǐng)求到響應(yīng)過(guò)程中django都做了哪些處理
這篇文章主要給大家介紹了關(guān)于從請(qǐng)求到響應(yīng)過(guò)程中django都做了哪些處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
python3 requests庫(kù)文件上傳與下載實(shí)現(xiàn)詳解
這篇文章主要介紹了python3 requests庫(kù)文件上傳與下載實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
使用IDLE的Python shell窗口實(shí)例詳解
在本篇文章里小編給各位整理的是關(guān)于使用IDLE的Python shell窗口實(shí)例詳解內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2019-11-11
Python中的類(lèi)屬性與實(shí)例屬性區(qū)別詳解
這篇文章主要介紹了Python中的類(lèi)屬性與實(shí)例屬性區(qū)別詳解,類(lèi)屬性是在類(lèi)中定義的屬性,它是和這個(gè)類(lèi)所綁定的,這個(gè)類(lèi)中的所有對(duì)象都可以訪問(wèn),實(shí)例屬性是與類(lèi)的實(shí)例相關(guān)聯(lián)的數(shù)據(jù)值,是這個(gè)實(shí)例私有的,需要的朋友可以參考下2023-08-08
利用Python?requests庫(kù)爬取高德地圖全國(guó)地鐵站點(diǎn)信息
requests?模塊是?python?基于?urllib,采用?Apache2?Licensed?開(kāi)源協(xié)議的?HTTP?庫(kù),它比?urllib?更加方便,可以節(jié)約我們大量的工作,完全滿(mǎn)足?HTTP?測(cè)試需求,這篇文章主要介紹了利用Python?requests庫(kù)爬取高德地圖全國(guó)地鐵站點(diǎn)信息,需要的朋友可以參考下2024-03-03
python 基于UDP協(xié)議套接字通信的實(shí)現(xiàn)
這篇文章主要介紹了python 基于UDP協(xié)議套接字通信的實(shí)現(xiàn),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01
修改Python?pip下載包的默認(rèn)路徑詳細(xì)步驟記錄
這篇文章主要介紹了如何修改pip的默認(rèn)安裝路徑以釋放C盤(pán)空間,特別是針對(duì)機(jī)器學(xué)習(xí)相關(guān)的大型包,可以將pip的安裝位置更改為其他目錄,需要的朋友可以參考下2025-03-03

