nginx+uwsgi+django+SSL最小白全面配置教程

先說說項(xiàng)目的是干啥的

本來咱們玩web只需要django就能建立一個(gè)正兒八經(jīng)帶server的服務(wù)器碟摆,不過django自帶的只能支持單并發(fā)的訪問述暂,而且效果不是特別好痹升。

這個(gè)時(shí)候就用到了 nginx ,關(guān)于nginx網(wǎng)上的介紹很多我就不多說了畦韭,只需要知道這玩意是一個(gè)服務(wù)器框架疼蛾,用了它相當(dāng)于tomcat一樣自帶一個(gè)服務(wù)器。

不過由于nginx以及一些其他原因艺配,靜態(tài)資源的訪問不是特別好察郁,這個(gè)時(shí)候就需要用到uwsgi這個(gè)框架。

最后在實(shí)際生產(chǎn)過程中妒挎,現(xiàn)在大部分都是使用https訪問绳锅,所以最后在nginx中配置好了SSL證書西饵,我們就可以愉快的用https訪問酝掩,而且環(huán)境搭建好了和我們的真正邏輯代碼是解耦的,所以一次搭建眷柔,終身爽快期虾。

下面我會仔細(xì)說名安裝和配置過程 環(huán)境是(ubuntu + nginx 1.103 + uwsgi 最新版 + django 2.1.3 +python 3.5)

安裝nginx:

再控制臺中輸入即可按章nginx
~$ sudo apt-get install nginx #安裝
但是這種安裝方法可能會出現(xiàn)問題,不過都是小問題驯嘱,具體百度一下就行了
跟著命令好一串?dāng)]下來镶苞,我相信你已經(jīng)裝好了nginx。
然后我們需要測試一下鞠评。

我們需要在 ubuntu 中找到這個(gè) etc/nginx/nginx.conf 文件茂蚓,這個(gè)文件是nginx的配置文件。
nginx.conf 中又一個(gè) http{} 里面可以配置若干個(gè) server{} 剃幌。其目的就是監(jiān)聽http訪問中的若干端口聋涨,這里我們需要添加一個(gè)server{}如下:

server {
    listen       8000;    # 修改端口號
    server_name  localhost;
    #charset koi8-r; 
    #access_log  logs/host.access.log  main;
    location / {
        root   html;
        index  index.html index.htm;
    }

這段的意思就是監(jiān)聽8000 端口。
接下來配置好了 我們使用
nginx -t 命令檢測一下是否配置正確
如果沒問題則直接在命令行輸入 nginx 即可啟用nginx负乡。反正我用的這個(gè)版本是這樣直接啟動(dòng)牍白。
這個(gè)時(shí)候我們直接在瀏覽器輸入127.0.0.1:8000 來測試nginx是否配置成功
如果成功則會出現(xiàn)


image.png

安裝uwsgi

咱們先把nginx給停掉 使用命令 nginx -s stop
uwsgi 是python自帶的包 所以安裝起來非常方便 只需要
pip install uwsgi 即可

咱們測試一下 uwsgi是否可用
隨便找個(gè)位置建立一個(gè)文件 test.py
里面的代碼是

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

在這個(gè)目錄下運(yùn)行命令
uwsgi --http :8000 --wsgi-file test.py
意思是使用組建 uwsgi 監(jiān)聽端口8000 并且運(yùn)行這個(gè)test.py文件,如果正常抖棘,會在瀏覽器訪問127.0.0.1:8000時(shí)出現(xiàn):
Hello World

然后就是django 這個(gè)也是python的包 我默認(rèn)你已經(jīng)有了一個(gè)基于django可以運(yùn)行的項(xiàng)目茂腥。

把uwsgi和django結(jié)合起來

這個(gè)時(shí)候 我們就需要用到 uwsgi的一種配置文件。我們隨便找個(gè)目錄新建一個(gè)demo.ini文件
文件內(nèi)容如下:

[uwsgi]
socket = 0.0.0.0:8000  
#真實(shí)服務(wù)的端口  這個(gè)8000端口 是把nginx 和django串起來的 并不是實(shí)際瀏覽器訪問的接口
chdir = /root/englishDemo/demoWB/  #我們django項(xiàng)目的根目錄

# wsgi.py文件在項(xiàng)目中的位置  這個(gè)文件每個(gè)django項(xiàng)目都有
module = demoWB.wsgi
# process-related settings
# master
master          = true
# 運(yùn)行的進(jìn)程數(shù)
processes       = 4
vacuum = true

這個(gè)配置文件還有很多內(nèi)容切省,讀者有需要可以自行查閱最岗。
現(xiàn)在咱們只要運(yùn)行這個(gè)配置文件
uwsgi --ini demo.ini
即可運(yùn)行django程序了。是不是很方便朝捆,不用runserve 每次指定域名和端口號
相當(dāng)于是uwsgi代替我們執(zhí)行

把nginx 和 uwsgi 結(jié)合起來

這一部分也很簡單 我們只需要修改nginx中在安裝過程中提到的配置文件即可
etc/nginx/nginx.conf
打開這個(gè)文件后般渡,我們在原有的基礎(chǔ)上修改http{}中的內(nèi)容

upstream django {
       server 0.0.0.0:8000; #web的socket端口
    }

 server{
            listen 80;
            access_log /root/log.txt; # Nginx日志配置
            server_name www.asdasasd.com; #這里輸入你自己的網(wǎng)址
            charset utf-8;
          
            error_page 404 /404.html; # 錯(cuò)誤頁面
            error_page 500 502 503 504 /50x.html; # 錯(cuò)誤頁面

            location / { # 這個(gè)location就和咱們Django的url(r'^admin/', admin.site.urls),
                root /root/englishDemo/demoWB; #django項(xiàng)目的根目錄
                include uwsgi_params; # 導(dǎo)入一個(gè)Nginx模塊他是用來和uWSGI進(jìn)行通訊的
                uwsgi_connect_timeout 30; # 設(shè)置連接uWSGI超時(shí)時(shí)間
                uwsgi_pass django; # 指定uwsgi的sock文件所有動(dòng)態(tài)請求就會直接丟給他
        }
}

重啟nginx的時(shí)候就可以和uwsgi結(jié)合起來了。

nginx配置SSL證書

這個(gè)證書可以從很多地方獲得。我在這里舉例從阿里云上
先選擇網(wǎng)盾 SSL證書


image.png

選擇免費(fèi)版本


image.png

購買之后審核完成诊杆, 會又下載連接歼捐,下載之后是 .pem 和 .key的兩個(gè)文件。
咱們需要通過這兩個(gè)文件配置nginx晨汹。
還是打開剛剛的 nginx.conf配置文件豹储。修改為
      server {
    listen 443;  #這里需要443 為https 默認(rèn)的端口
    access_log /root/log.txt; # Nginx日志配置

    server_name www.xxxxxxxx.com; #這里是你的域名
    ssl on;
    root html;
    index index.html index.htm;

        ssl_certificate /etc/nginx/cert/xxxxxxxx.pem; #你的pem  前面的目錄可以自己隨便建立

        ssl_certificate_key /etc/nginx/cert/xxxxxxxx.key; #你的key  前面的目錄可以自己隨便建立
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
                        root /root/englishDemo/demoWB;
                include uwsgi_params; # 導(dǎo)入一個(gè)Nginx模塊他是用來和uWSGI進(jìn)行通訊的
            uwsgi_connect_timeout 30; # 設(shè)置連接uWSGI超時(shí)時(shí)間
            uwsgi_pass django; # 指定uwsgi的sock文件所有動(dòng)態(tài)請求就會直接丟給他
    }
}

重啟一下nginx即可
這一波操作完成

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市淘这,隨后出現(xiàn)的幾起案子剥扣,更是在濱河造成了極大的恐慌,老刑警劉巖铝穷,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钠怯,死亡現(xiàn)場離奇詭異,居然都是意外死亡曙聂,警方通過查閱死者的電腦和手機(jī)晦炊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宁脊,“玉大人断国,你說我怎么就攤上這事∮馨” “怎么了稳衬?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坐漏。 經(jīng)常有香客問我薄疚,道長,這世上最難降的妖魔是什么赊琳? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任街夭,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己倔撞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布檐什。 她就那樣靜靜地躺著,像睡著了一般弱卡。 火紅的嫁衣襯著肌膚如雪乃正。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天婶博,我揣著相機(jī)與錄音瓮具,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛名党,可吹牛的內(nèi)容都是我干的叹阔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼传睹,長吁一口氣:“原來是場噩夢啊……” “哼耳幢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起欧啤,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤睛藻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后邢隧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體店印,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年倒慧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了按摘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迫靖,死狀恐怖院峡,靈堂內(nèi)的尸體忽然破棺而出兴使,到底是詐尸還是另有隱情系宜,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布发魄,位于F島的核電站盹牧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏励幼。R本人自食惡果不足惜汰寓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苹粟。 院中可真熱鬧有滑,春花似錦、人聲如沸嵌削。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苛秕。三九已至肌访,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間艇劫,已是汗流浹背吼驶。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蟹演。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓风钻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酒请。 傳聞我的和親對象是個(gè)殘疾皇子魄咕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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