【Python3.7 Centos服務(wù)部署從0開(kāi)始】Nginx & uWSGI 必知必會(huì)

Nginx 概述

不依賴(lài)第三方服務(wù)搭建網(wǎng)站服務(wù)器及功能

Nginx 作為反向代理器

Nginx不直接處理請(qǐng)求遮晚,而是在云主機(jī)中有一個(gè)Real Server橡疼,Nginx只是把請(qǐng)求轉(zhuǎn)發(fā)給Real Server胚鸯,等待Real Server請(qǐng)求處理完成后,再將請(qǐng)求返回給客戶(hù)端

Nginx 作為負(fù)載均衡器

在環(huán)境中存在 Nginx, Real Server No.1, Real Server No.2......
Nginx一樣執(zhí)行請(qǐng)發(fā)轉(zhuǎn)發(fā)稼稿,但是在 Nginx 挑選 Real Server 的時(shí)候抖单,權(quán)重是不一樣的,Nginx 中自己的一套邏輯勒极,這套邏輯就是為了負(fù)載均衡

假設(shè):Real Server No.1 的權(quán)重是3是掰,Real Server No.2 的權(quán)重是1,在4個(gè)請(qǐng)求過(guò)來(lái)后辱匿,很可能 Real Server No.1 會(huì)收到3個(gè)請(qǐng)求键痛,Real Server No.2會(huì)收到一個(gè)請(qǐng)求

CentOS && Nginx

安裝 Nginx

yum install nginx

Nginx 常用指令

1.啟動(dòng)Nginx

sudo nginx

判斷是否啟動(dòng)成功
在瀏覽器中輸入公網(wǎng)的IP,出現(xiàn)如下的頁(yè)面則為啟動(dòng)成功

image

2.停止Nginx

快速停止Nginx

sudo nginx -s stop

3.退出Nginx

與上面的 stop 相比會(huì)更加優(yōu)雅一下

sudo nginx -s quit

4.重新加載Nginx的配置文件

在修改完配置后執(zhí)行該命令

sudo nginx -s reload

5.重新打開(kāi)Nginx的日志文件

sudo nginx -s reopen

修改Nginx的配置文件

文件存放的位置

cd /etc/nginx/
主配置文件:nginx.conf

Nginx關(guān)鍵配置模塊

  • events 配置域:網(wǎng)絡(luò)連接相關(guān)配置(I/O模型等)
  • server 配置域:相關(guān)服務(wù)節(jié)點(diǎn)配置
  • location 配置域:資源路由配置
  • http 配置域:Nginx作為網(wǎng)頁(yè)服務(wù)器時(shí)的配置(#mail)
  • upstream 配置域:反向代理配置域

配置存在層級(jí)關(guān)系

# nginx.conf 五大配置域相關(guān)層次關(guān)系
events {
    ...
}

http {
    ...
    upstream {
        ...
    }
    
    server {
        ...
        location {
            ...
        }
    }
}

# mail {
#    ...
# }

WSGI 協(xié)議概述

全稱(chēng):Web Server Gateway Interface
是 Web Server 和 Web Application 通信的規(guī)范

image

uWSGI概述

  • 實(shí)現(xiàn)了WSGI協(xié)議
  • Web服務(wù)器
  • 接收客戶(hù)端請(qǐng)求通過(guò)協(xié)議傳達(dá)給Django應(yīng)用

centOS 中安裝 python3.7

1.查找python的位置:

whereis python

2.安裝相關(guān)包匾七,用于下載編譯python3

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make 

3.默認(rèn)的絮短,centos7也沒(méi)有安裝pip

#運(yùn)行這個(gè)命令添加epel擴(kuò)展源
yum -y install epel-release

#安裝pip
yum install python-pip

4.用pip裝wget

pip install wget

5.用wget下載python3的源碼包

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz

6.手動(dòng)安裝

#解壓
xz -d Python-3.7.0.tar.xz
tar -xf Python-3.7.0.tar

#進(jìn)入解壓后的目錄,依次執(zhí)行下面命令進(jìn)行手動(dòng)編譯
./configure prefix=/usr/local/python3
make && make install

7.添加軟鏈接

#將原來(lái)的鏈接備份
mv /usr/bin/python /usr/bin/python.bak

#添加python3的軟鏈接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python

#測(cè)試是否安裝成功了
python -V

8.更改yum配置昨忆,因?yàn)槠湟玫絧ython2才能執(zhí)行丁频,否則會(huì)導(dǎo)致yum不能正常使用

vi /usr/bin/yum
# 把 #! /usr/bin/python修改為#! /usr/bin/python2

vi /usr/libexec/urlgrabber-ext-down
# 把 #! /usr/bin/python 修改為#! /usr/bin/python2

9.修改pip的python版本
原先的pip文件是以python2為默認(rèn)版本

查找pip的位置
whereis pip => /usr/bin/pip # 這里面會(huì)有很多其他的pip,比如pip2,pip3,pip3.6等

vim /usr/bin/pip
#!/usr/bin/python2   ==>  #!/usr/bin/python3

centOS 中安裝 uWSGI

1.通過(guò)pip安裝 uWSGI

pip install uwsgi

如果出現(xiàn)
致命錯(cuò)誤:Python.h:沒(méi)有那個(gè)文件或目錄
執(zhí)行如下命令

yum install libffi-devel -y

2.添加軟連接

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

uWSGI的基礎(chǔ)配置

  • chdir: WSGI 應(yīng)用目錄
  • module:WSGI 應(yīng)用的模塊名字
  • processes:uWSGI 進(jìn)程數(shù)
  • (http-)socket:套接字路徑、地址
  • max-requests:最大并發(fā)請(qǐng)求數(shù)
  • vacuum:當(dāng)服務(wù)器退出時(shí)是否需要自動(dòng)清理文件邑贴,刪除相關(guān)的pid文件 socket文件 (Boolean)

uWSGI啟動(dòng)(兩種方式)

1.通過(guò)命令行啟動(dòng)

將配置通過(guò)命令行寫(xiě)入席里,進(jìn)而啟動(dòng)

uwsgi --chdir xxxx --socket :80 --max-requests 5000 --processes 4 --module xxx.wsgi

--chdir xxxx (指定 uwsgi 的應(yīng)用目錄)
--socket :80 (指定端口)
--max-requests (最大請(qǐng)求數(shù))
--processes (處理的進(jìn)程數(shù))
--module (指定具體的wsgi模塊)

2.使用配置文件啟動(dòng)

1.創(chuàng)建 uwsgi 的配置文件

vim uwsgi-demo.ini

2.寫(xiě)入配置文件

[uwsgi]

chdir = /xxxx/xx

http-scoket = :80

max-requests = 5000

processes = 4

module = xxx.wsgi

3.通過(guò)命令行執(zhí)行 wsgi 的配置

uwsgi --ini uwsgi-demo.ini

為什么需要uWSGI部署Django

  • Django runserver 可以直接對(duì)外服務(wù),但是只用于測(cè)試拢驾,不安全且性能較差
  • uWSGI可以很好的進(jìn)行多線程調(diào)用奖磁、進(jìn)程監(jiān)控,例如:uWSGI會(huì)監(jiān)測(cè)django服務(wù)是否掛了繁疤,掛了會(huì)主動(dòng)重啟
  • uWSGI提供完善的請(qǐng)求日志處理

使用 uWSGI 部署測(cè)試

image

1.創(chuàng)建一個(gè)文件夾

mkdir deployment
cd deployment

2創(chuàng)建Python文件咖为,定義uWSGI應(yīng)用

touch uwsgi_test.py

3.寫(xiě)入相關(guān)配置

def application(env, start_response):
    start_response('200 OK', [('Content-type', 'text/html')])
    return [b'Hello World, Hello uWSGI']

4.運(yùn)行 uwsgi

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

使用 uWSGI 部署 django

1.修改 django 的 setting

ALLOWED_HOSTS = ['*']  # 開(kāi)啟所有人都可以訪問(wèn)

2.找到 django 目錄下的 wsgi文件執(zhí)行
django_deployment.wsgi為對(duì)應(yīng)django項(xiàng)目下的文件相對(duì)路徑

uwsgi --http :8000 --module django_deployment.wsgi
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秕狰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子躁染,更是在濱河造成了極大的恐慌封恰,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褐啡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鳖昌,警方通過(guò)查閱死者的電腦和手機(jī)备畦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)许昨,“玉大人懂盐,你說(shuō)我怎么就攤上這事「獾担” “怎么了莉恼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)速那。 經(jīng)常有香客問(wèn)我俐银,道長(zhǎng),這世上最難降的妖魔是什么端仰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任捶惜,我火速辦了婚禮,結(jié)果婚禮上荔烧,老公的妹妹穿的比我還像新娘吱七。我一直安慰自己,他們只是感情好鹤竭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布踊餐。 她就那樣靜靜地躺著,像睡著了一般臀稚。 火紅的嫁衣襯著肌膚如雪吝岭。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天烁涌,我揣著相機(jī)與錄音苍碟,去河邊找鬼。 笑死撮执,一個(gè)胖子當(dāng)著我的面吹牛微峰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抒钱,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蜓肆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颜凯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起仗扬,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤症概,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后早芭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體彼城,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年退个,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了募壕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡语盈,死狀恐怖舱馅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刀荒,我是刑警寧澤代嗤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站缠借,受9級(jí)特大地震影響干毅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泼返,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一溶锭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧符隙,春花似錦趴捅、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至丽蝎,卻和暖如春猎拨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屠阻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工红省, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人国觉。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓吧恃,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親麻诀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痕寓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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