nginx+uwsgi+django簡單部署過程記錄

其實之前就部署過一次了猜丹,但是當(dāng)時記錄的斷斷續(xù)續(xù)的停巷,導(dǎo)致前兩天再次部署的時候簡直被坑哭胖眷,所以在這里記錄一下厌杜。

說明:

django版本:1.8奉呛,系統(tǒng)版本:centos6.5, Python版本:3.5

首先需要安裝libxml相關(guān)包,一行命令簡單搞定

yum install libxml*

1夯尽、nginx安裝

nginx下載可以去官網(wǎng)自己找瞧壮,我下載的是nginx-1.10.2.tar.gz,安裝路徑是/usr/local/nginx

tar -zxvf nginx-1.10.2.tar.gz

cd nginx-1.10.2

./configure --prexfix=/usr/local/nginx

make&&make install

啟動nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

-c后面跟的是配置文件的路徑匙握,不跟的話有時候會有些莫名其妙的提示咆槽,5555。圈纺。秦忿。啟動之后在瀏覽器訪問http://ip:80,可以看到nginx的歡迎頁面蛾娶,就沒啥問題了<br>

2灯谣、安裝uwsgi

下載安裝django,uwsgi就沒啥好說的了蛔琅,直接pip

pip3 install django

pip3 install uwsgi

安裝之后需要說下胎许,很多網(wǎng)文說pip install之后直接就可以使用uwsgi命令了,實際我用的時候并不是罗售,需要自己去uwsgi所在目錄

找然后做一個軟鏈接即可辜窑。我的python編譯安裝在/usr/local/python3目錄下,所以是這樣的

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

然后就可以直接使用uwsgi命令了莽囤。

創(chuàng)建一個測試文件 test.py

def application(env,start_response):

start_response('200 OK',[('Content-Type','text/html')])

return [b"helloWord"]

然后測試uwsgi

uwsgi --http :8000 --wsgi-file test.py

注意http后面需要有空格谬擦,命令執(zhí)行沒問題之后可以通過瀏覽器訪問http://ip:8000,頁面輸出helloWord,就沒有問題了朽缎。這里關(guān)于test.py惨远,說明一下,如果是python2.x话肖,那么直接

return 'helloWord'

就可以了北秽,如果是python3.x,必須

return b'helloWord'

才可以最筒,不然會報錯贺氓,報的啥我忘記了,大意就是需要返回buffer啥的床蜘。<br>

3、Django創(chuàng)建項目

Django安裝好之后就可以使用django-admin命令了,創(chuàng)建一個測試項目

cd /home/myself/projects/

django-admin.py startproject testnginx

為了把靜態(tài)文件交給nginx處理梳玫,需要修改一下testnginx項目的settings.py配置,添加STATIC_ROOT

vim /home/myself/projects/testnginx/testnginx/settings.py

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic')

修改完后在項目目錄/home/myself/projects/testnginx下執(zhí)行

python manage.py collectstatic

就會看到所有的靜態(tài)文件搀别,css,js,img文件都被自動匯總到/home/myself/projects/testnginx/collectedstatic目錄下了<br>

4、nginx配置準(zhǔn)備工作完成尾抑,可以配置nginx了歇父,nginx的配置文件在nginx安裝目錄下,上面說過再愈,我的nginx編譯安裝在/usr/local/nginx目錄榜苫,所以配置文件就是/usr/local/nginx/conf/nginx.conf,打開這個文件翎冲,找到server{****}垂睬,修改成如下

server {

listen? ? ? 80;

server_name? localhost;

charset utf-8;

client_max_body_size 75M;

#charset koi8-r;

#access_log? logs/host.access.log? main;

access_log /root/logs/nginx/access.log;

error_log /root/logs/nginx/error.log;

location / {

root? /home/myself/projects/testnginx;

uwsgi_pass 127.0.0.1:8000;

include uwsgi_params;

}

location /static/ {

alias /home/myself/projects/testnginx/collectedstatic/;

}

#error_page? 404? ? ? ? ? ? ? /404.html;

# redirect server error pages to the static page /50x.html

#

error_page? 500 502 503 504? /50x.html;

location = /50x.html {

root? html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

#? ? proxy_pass? http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

#? ? root? ? ? ? ? html;

#? ? fastcgi_pass? 127.0.0.1:9000;

#? ? fastcgi_index? index.php;

#? ? fastcgi_param? SCRIPT_FILENAME? /scripts$fastcgi_script_name;

#? ? include? ? ? ? fastcgi_params;

#}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

#location ~ /\.ht {

#? ? deny? all;

#}

}

location /下root是項目根路徑,uwsgi_pass配置的是uwsgi啟動的端口府适,需要添加include uwsgi_params羔飞,這個uwsgi_params

文件應(yīng)該是在nginx.conf文件的同級目錄的,如果沒有檐春,需要自行安裝一個。這里有一個坑了我的點么伯,有好多文章配置location /static/的時候疟暖,說這個是location /static ,個人表示不帶后面的斜杠的話田柔,nginx是找不到靜態(tài)文件的俐巴。。硬爆。欣舵。,記得寫成

location /static/

配置完之后可以測試一下缀磕,使用-t命令

/usr/local/nginx/sbin/nginx -t

5缘圈、nginx+uwsgi都沒問題了就可以把uwsgi和nginx串起來了,上面測試uwsgi是通過命令行的袜蚕,最好寫成配置文件糟把,uwsgi可以有xml、ini等格式的配置文件牲剃,這里用ini格式的遣疯,在/home/myself/projects/ 目錄下創(chuàng)建一個uwsgi.ini文件,內(nèi)容是

[uwsgi]

chdir = /home/myself/projects/testnginx

module = testnginx.wsgi

master = true

processes = 10

socket = :8000

vacuum = true

daemonize = /home/myself/logs/uwsgi.log

chdri是項目目錄凿傅,module這里字節(jié)projectname.wsgi就可以了缠犀,不要寫django項目里的那個wsgi.py的路徑数苫,daemonize是log日志的路徑,還有socket這里辨液,一些文章的配置是http文判,這里建議socket,第一避免繞過nginx直接訪問uwsgi室梅,第二不會出現(xiàn)那個什么數(shù)據(jù)塊太大的報錯戏仓。配置文件完成后通過-i命令啟動即可

uwsgi -i /home/myself/projects/uwsgi.ini

啟動uwsgi之后啟動nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

如果都是按照上面的步驟來的,在我的機器上就完事兒了亡鼠,在瀏覽器輸入http://ip:80赏殃,可以看到頁面不是nginx歡迎頁面了,是django的歡迎頁面间涵,就表示沒毛病了仁热。最后為了方便啟停uwsgi,nginx(畢竟自己測試經(jīng)常需要啟停)勾哩,寫了一個智障的shell小腳本hanlernginx.sh抗蠢,也記錄一下

if [ -z "$1" ]

then

echo "please raw start/stop";

exit 0;

elif [ $1 = "start" ]

then

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf;

echo "nginx start done!";

uwsgi -i /home/myself/projects/uwsgi.ini;

echo "uwsgi start done!";

elif [ $1 = "stop" ]

then

ps -ef|grep uwsgi|grep -v grep|awk '{print $2}'|while read pid

do

kill -9 $pid;

done

echo "uwsgi stop done!";

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s stop;

echo "nginx stop done!";

fi

啟停命令

./hanlernginx.sh stop

./hanlernginx.sh start

都是自己測試時候創(chuàng)建的,直接在root下就干了思劳,不涉及用戶權(quán)限啥的了迅矛,可能還有點漏掉的東西,后續(xù)想起來再補吧潜叛,汗秽褒。。威兜。销斟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市椒舵,隨后出現(xiàn)的幾起案子蚂踊,更是在濱河造成了極大的恐慌,老刑警劉巖笔宿,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犁钟,死亡現(xiàn)場離奇詭異,居然都是意外死亡措伐,警方通過查閱死者的電腦和手機特纤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侥加,“玉大人捧存,你說我怎么就攤上這事。” “怎么了昔穴?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵镰官,是天一觀的道長。 經(jīng)常有香客問我吗货,道長泳唠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任宙搬,我火速辦了婚禮笨腥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勇垛。我一直安慰自己脖母,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布闲孤。 她就那樣靜靜地躺著谆级,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讼积。 梳的紋絲不亂的頭發(fā)上肥照,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機與錄音勤众,去河邊找鬼舆绎。 笑死,一個胖子當(dāng)著我的面吹牛决摧,可吹牛的內(nèi)容都是我干的亿蒸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼掌桩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了姑食?” 一聲冷哼從身側(cè)響起波岛,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎音半,沒想到半個月后则拷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡曹鸠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年煌茬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彻桃。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡坛善,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眠屎,我是刑警寧澤剔交,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站改衩,受9級特大地震影響岖常,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜葫督,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一竭鞍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧橄镜,春花似錦偎快、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妖异,卻和暖如春惋戏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背他膳。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工响逢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棕孙。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓舔亭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蟀俊。 傳聞我的和親對象是個殘疾皇子钦铺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

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