阿里云部署django網(wǎng)站教程(Ngnix +Uwsgi + virtualenv)下篇

前言

最近在用django部署網(wǎng)站www.aihunter.cc,經(jīng)歷各種坑后覺(jué)得有必要總結(jié)一下流程以備日后遺忘憎妙。在下閱讀眾多教程后覺(jué)得網(wǎng)上還是缺少介紹Ngnix+Uwsgi+virtualenv+django工作流程的概念文章遵班,結(jié)合網(wǎng)上的材料和自己消化本教程將分為概念部分(上篇)以及操作部分(下篇)灾螃,文中操作內(nèi)容均為自己實(shí)際部署時(shí)的流程地回。另外在下職業(yè)非專業(yè)程序員若有錯(cuò)誤可以在評(píng)論中指出浙宜,我會(huì)必第一時(shí)間糾正稍坯,以下將實(shí)際部署分為4個(gè)部分進(jìn)行說(shuō)明酬荞。


環(huán)境說(shuō)明

服務(wù)器:阿里云ecs
系統(tǒng):ubantu16.04 32位
語(yǔ)言版本:Python 2.7.12
部署方式:Ngnix +Uwsgi + virtualenv
django路徑說(shuō)明:流程中django項(xiàng)目路徑為/home/virtuweb/testproject
其中virtuweb是虛擬環(huán)境文件夾,testproject是django的項(xiàng)目名字,django下的app名為testmodel


Step1 安裝ngnix\uwsgi\virtualenv

nginx安裝(真實(shí)環(huán)境)
注意:nginx的 gzip模塊需要 zlib 庫(kù)混巧、rewrite模塊需要 pcre 庫(kù)糟把、ssl 功能需要openssl庫(kù)

apt-get install nginx

uwsgi安裝(真實(shí)環(huán)境+虛擬環(huán)境)

pip install uwsgi

Virtualenv安裝(真實(shí)環(huán)境)

apt-get install python-virtualenv 或pip install virtualenv 

Step2 配置uwsgi 和啟動(dòng)

uWSGI可以通過(guò)diango項(xiàng)目的wsgi.py文件啟動(dòng),也可以用初始化文件啟動(dòng)牲剃。在下是用ini初始化文件啟動(dòng)uWSGI的遣疯,因此需要配置django項(xiàng)目中的wsgi.py文件和創(chuàng)建一個(gè)ini文件。再次說(shuō)明在下django項(xiàng)目路徑為/home/virtuweb/testproject凿傅,具體流程如下

step2.1 編輯django項(xiàng)目中的wsgi.py文件

首先進(jìn)入django項(xiàng)目中的wsgi.py路徑下

CD /home/virtuweb/testproject/testproject

然后編輯wsgi.py文件

vim wsgi.py

編輯wsgi.py內(nèi)容如下

import os,sys,django
from django.core.wsgi import get_wsgi_application
from django.core.handlers.wsgi import  WSGIHandler

reload(sys)

sys.setdefaultencoding('utf-8')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testproject.settings")  #變量testproject.settings為django項(xiàng)目下的settings

django.setup()     #避免在虛擬環(huán)境下找不到django的app

application = WSGIHandler()  #實(shí)例化一個(gè)WSGI application用作接受nginx服務(wù)器傳遞的envrion缠犀、start_response參數(shù)
step2.2 創(chuàng)建一個(gè)uwsgi.ini文件

返回到django項(xiàng)目下

 CD /home/virtuweb/testproject

創(chuàng)建和編輯testproject.ini (文件名稱可任意)

vim testproject_uwsgi.ini 

testproject_uwsgi.ini文件配置如下

[uwsgi]
socket =127.0.0.1:8080  # uWSGI服務(wù)器啟動(dòng)占用的地址和端口

static-map =/static=/home/virtuweb/testproject/testmodel/static #設(shè)置django靜態(tài)文件夾的路徑

chdir =/home/virtuweb/testproject  #設(shè)置django的路徑

module =testproject.wsgi:application

virtualenv = /home/aihunter  #設(shè)置虛擬環(huán)境路徑,不設(shè)置的話在會(huì)找不到django

master = true  #設(shè)置是否允許主進(jìn)程存在
  
process = 5   #設(shè)置進(jìn)程數(shù)量

harakiri =30  #客戶端請(qǐng)求超過(guò)設(shè)置

vacuum = true  #設(shè)置服務(wù)器退出時(shí)自動(dòng)清理環(huán)境
step2.3 以上內(nèi)容完成后在虛擬環(huán)境下運(yùn)行
uwsgi  --ini testproject_uwsgi.ini (省略--ini也行)
成功后的提示

詳細(xì)的wsgi官方介紹http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html


Step3 配置nginx 步驟

安裝好Nginx后其實(shí)已經(jīng)可以啟動(dòng)服務(wù)器了聪舒,但是我們目的要讓Nginx和uWSGI連接起來(lái)辨液,因此需創(chuàng)建一個(gè)新的配置文件xx.conf。xx.conf存放的位置在Nginx文件夾下的sites-available和sites-enabled文件夾中(一式兩份)箱残,另外要保證Nginx中存在uwsgi_params文件(一般都有的),設(shè)置完畢后執(zhí)行service nginx start命令啟動(dòng)nginx即可(關(guān)閉命令為service nginx stop)滔迈。具體流程如下

step3.1 創(chuàng)建Nginx配置文件

進(jìn)入到nginx文件夾下

cd /etc/nginx/sites-available

刪除默認(rèn)設(shè)置文件default

rm deault

創(chuàng)建配置文件test.conf (文件名稱隨意)

Vim test.conf 

編輯test.conf .py內(nèi)容如下(注意文件夾權(quán)限,注意不要缺少句后分號(hào)被辑,創(chuàng)建完成后復(fù)制一份到 sites-enabled中燎悍,也要?jiǎng)h除 sites-enabled的default文件)

server {
    listen 80;   #設(shè)置nginx服務(wù)器開(kāi)啟的端口號(hào)
    server_name www.aihunter.cc;     
    charset utf-8;  
    client_max_body_size 75M;  
   
    location /static {
        alias home/virtuweb/testproject/testmodel/static;  #設(shè)置django靜態(tài)文件路徑      
   } 
 
    location / {
        uwsgi_pass 127.0.0.1:8080; #設(shè)置為uwsgi服務(wù)器開(kāi)啟的端口
        include /etc/nginx/uwsgi_params;  #設(shè)置uwsgi_params文件路徑
   }
}
step3.2 啟動(dòng)服務(wù)器

執(zhí)行以下命令,Nginx啟動(dòng)成功后沒(méi)有返回值,錯(cuò)誤才返回值盼理√干剑可以使用netstat -nltp命令查看

service nginx start

step4 阿里云服務(wù)器端口開(kāi)啟

設(shè)置阿里云服務(wù)器安全組規(guī)則以及django中settings文件的host參數(shù)后外網(wǎng)才可以訪問(wèn)。

1.首先在阿里云服務(wù)器上開(kāi)啟安全組規(guī)則(開(kāi)啟80端口)


設(shè)置圖

2.django的settings文件中設(shè)置allowed_hosts設(shè)置為服務(wù)器的域名(若沒(méi)有域名則填服務(wù)器ip地址)


allowed_hosts設(shè)置
www.aihunter.cc
部署程中出現(xiàn)的錯(cuò)誤以及解決

不知道是環(huán)境或者是版本不同的問(wèn)題宏怔,在下參考網(wǎng)上其他教程后在實(shí)踐時(shí)還是遇到些關(guān)于wsgi設(shè)置的坑以下內(nèi)容為當(dāng)時(shí)遇到的問(wèn)題和解決方法奏路。

第一坑 app不能加載

錯(cuò)誤提示:django.core.exceptions.AppRegistryNotReady:loadr yet.
處理方式:不能加載那就補(bǔ)充加載咯,于是在wspy文件中加入代碼 django.setup()后解決成功臊诊。


不能加載
第二坑 找不到django 庫(kù)

錯(cuò)誤提示:ImportError:No module named django
錯(cuò)誤顯示
處理方式:原來(lái)是由于沒(méi)有設(shè)置虛擬環(huán)境的路徑導(dǎo)致的鸽粉,需要在虛擬環(huán)境下運(yùn)行django項(xiàng)目的朋友一定要在uwsgi.ini文件中補(bǔ)上虛擬環(huán)境的路徑virtualenv=path


找不到django 庫(kù)

參考文章和視頻
淺談cgi、wsgi抓艳、uwsgi 與 uWSGI Python uwsgiu WSGI nginx CGI
Nginx工作原理和優(yōu)化触机、漏洞。
【教程】Nginx + uWsgi 部署 Django + Mezzanine 生產(chǎn)服務(wù)器...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壶硅,一起剝皮案震驚了整個(gè)濱河市威兜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庐椒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚂踊,死亡現(xiàn)場(chǎng)離奇詭異约谈,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)棱诱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泼橘,“玉大人,你說(shuō)我怎么就攤上這事迈勋【婷穑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵靡菇,是天一觀的道長(zhǎng)重归。 經(jīng)常有香客問(wèn)我,道長(zhǎng)厦凤,這世上最難降的妖魔是什么鼻吮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮较鼓,結(jié)果婚禮上椎木,老公的妹妹穿的比我還像新娘。我一直安慰自己博烂,他們只是感情好香椎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著禽篱,像睡著了一般士鸥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谆级,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天烤礁,我揣著相機(jī)與錄音,去河邊找鬼肥照。 笑死脚仔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舆绎。 我是一名探鬼主播鲤脏,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吕朵!你這毒婦竟也來(lái)了猎醇?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤努溃,失蹤者是張志新(化名)和其女友劉穎硫嘶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體梧税,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沦疾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年称近,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哮塞。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刨秆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出忆畅,到底是詐尸還是另有隱情衡未,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布家凯,位于F島的核電站缓醋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏肆饶。R本人自食惡果不足惜改衩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驯镊。 院中可真熱鬧葫督,春花似錦、人聲如沸板惑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)冯乘。三九已至洽胶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裆馒,已是汗流浹背姊氓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喷好,地道東北人翔横。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像梗搅,于是被迫代替她去往敵國(guó)和親禾唁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容