最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

初次部署django+gunicorn+nginx的方法步驟

 更新時(shí)間:2019年09月11日 14:43:31   作者:Nanrou  
這篇文章主要介紹了初次部署django+gunicorn+nginx的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

環(huán)境 ubuntu16.04 python3.6 django1.11 gunicorn19.7.1 nginx1.10.3

寫在前面

其實(shí)無(wú)論是在部署,還是在其他方面,我們總會(huì)遇到一些問(wèn)題。建議當(dāng)感覺自己被卡住的時(shí)候,試著退出局部,從更高一層去觀察問(wèn)題,因?yàn)檫@個(gè)事情無(wú)論是多復(fù)雜,它還是由人設(shè)計(jì)出來(lái)的,它身上多多少少帶著一些人類思考模式的通性(這個(gè)表達(dá)有點(diǎn)問(wèn)題,但是我暫時(shí)想不出更好的了),嘗試透過(guò)現(xiàn)象看本質(zhì),比如這個(gè)東西它為什么跑不起來(lái),為什么我打開網(wǎng)頁(yè)永遠(yuǎn)是404,如果這個(gè)時(shí)候你直接去問(wèn)度娘,問(wèn)逼乎,(我相信能看google的都不會(huì)看到這篇東西 :-) )我覺得你很難找到自己想要的答案。我的建議是盡量讓問(wèn)題細(xì)化,網(wǎng)頁(yè)打不開,那往往只代表80端口不能訪問(wèn),那你可以看看自己服務(wù)器的防火墻是不是進(jìn)制了相關(guān)端口,又或者是服務(wù)器商幫你設(shè)置的安全組是不是把端口都關(guān)了;可以嘗試ping一下,看服務(wù)器在不在線;看一下我們的代理服務(wù)器是不是監(jiān)聽了對(duì)的端口,諸如此類。

最后,我認(rèn)為在絕大多數(shù)情況下,我們踩過(guò)的坑,都是有前人踩過(guò),而且還幫我們填掉了,所以用心找,總能找到答案的。

關(guān)于Django

先確認(rèn)在開發(fā)環(huán)境下能夠正常訪問(wèn)

然后一般情況下,在執(zhí)行python manager.py startproject project之后,目錄應(yīng)該是這個(gè)樣子的

project/
  --project/
    --__init__.py
    --setting.py
    --urls.py
    --wsgi.py
  --templates/
  --your app/
  --manage.py

設(shè)置project/setting.py

要更改的幾個(gè)點(diǎn)

1.DEBUG改成False,只有關(guān)閉了調(diào)試模式,后面才能讓nginx來(lái)尋找靜態(tài)文件。

2.ALLOW_HOSTS,加入你的域名,(或,和)服務(wù)器ip。我還加了127.0.0.1方便本地觀察。

3.設(shè)置STATIC_ROOT,建議可以直接設(shè)為os.path.join(BASE_DIR, 'static/'),也就把文件夾在manage.py的根目錄里。

4.執(zhí)行python manager.py collectstatic,就會(huì)將所有靜態(tài)文件都放到第三步中設(shè)置的文件地址中。

執(zhí)行完第四步后,目錄結(jié)構(gòu)應(yīng)該是這樣

project/
  --project/
    --__init__.py
    --setting.py
    --urls.py
    --wsgi.py
  --templates/
  --your app/
  --manage.py
  --static/
    --auth/
    --your app/
      --css/
      --js/
      --images/

關(guān)于Gunicorn

一開始可以先試著運(yùn)行一下,進(jìn)入project這個(gè)根目錄,然后

gunicorn -w 3 -b 127.0.0.1:8080 project.wsgi:application

不出意外,就應(yīng)該可以跑起來(lái)了。

關(guān)于project.wsgi:application的解釋,前半截很容易理解,就是調(diào)用了project下的wsgi.py,而后面的application,我一開始以為這個(gè)application是要改成自己app的名字,后來(lái)才發(fā)現(xiàn),這個(gè)實(shí)際上是wsgi.py中的變量,所以是固定的,不用改。

試著運(yùn)行沒(méi)問(wèn)題之后,可以直接在根目錄下創(chuàng)建gunicorn.conf.py

來(lái)配置位置,以后運(yùn)行就用

gunicorn -c gunicorn.conf.py project.wsgi:appliction

因?yàn)槊看味荚诿钚休攨?shù)好累。

我是在docker下面跑的,用nohup來(lái)執(zhí)行的時(shí)候,會(huì)有問(wèn)題,報(bào)import error,應(yīng)該是環(huán)境變量沒(méi)有設(shè)置好,但我現(xiàn)在還沒(méi)解決這個(gè)問(wèn)題,所以就只用了&。

關(guān)于Nginx

我先嘗試講一下我對(duì)django + gunicorn + nginx 這三兄弟的理解。首先我們知道,我們?cè)L問(wèn)網(wǎng)站,就是去網(wǎng)絡(luò)上的一臺(tái)電腦里訪問(wèn)某個(gè)路徑下的某個(gè)文件,那django的作用主要是做(生產(chǎn))這個(gè)文件,拿一家餐館來(lái)講,我認(rèn)為django就是這個(gè)餐館的廚師,他負(fù)責(zé)做菜,當(dāng)規(guī)模很小的時(shí)候,比如路邊賣雞蛋餅的大媽,因?yàn)榭腿瞬欢?,所以可以自己?jiǎn)柨腿艘裁?,然后再自己做,這就是django和自帶的runserver所做的事情;那當(dāng)規(guī)模變大了,比如普通餐館,客人很多,廚師做菜都來(lái)不急了,根本沒(méi)時(shí)間去問(wèn)客人要什么,所以這個(gè)時(shí)候我們就需要服務(wù)員了,服務(wù)員去記錄客人要什么,然后跟廚房講,接著從廚房拿菜給客人,而在這里,gunicorn就是這個(gè)服務(wù)員;當(dāng)規(guī)模更大一些的時(shí)候,每分鐘都有幾百個(gè)人(現(xiàn)實(shí)中來(lái)講這已經(jīng)是多到爆炸了吧)要進(jìn)餐館吃飯,你在餐館里安排再多的服務(wù)員也不能處理完這么多客人的請(qǐng)求,而且餐館的空間是有限的,服務(wù)員也占空間,多了放不下,所以這個(gè)時(shí)候怎么辦呢,答案是在餐館門口安排咨客,有序地引導(dǎo)客人進(jìn)入餐館,也可以在門口就幫客人點(diǎn)好菜,提高整體效率,Nginx就扮演了咨客這個(gè)角色。

先來(lái)試運(yùn)行一下nginx,只要啟動(dòng)nginx這個(gè)服務(wù),訪問(wèn)本地應(yīng)該就可以看到nginx的歡迎頁(yè)了。

因?yàn)楝F(xiàn)在階段知識(shí)最簡(jiǎn)單的配置,只用到同步worker,所以只需要配置一下監(jiān)聽端口和靜態(tài)文件的地址就可以了。

server{
  listen 80;監(jiān)聽的端口
  server_name 127.0.0.1;
  server_name 111.111.111.111;
  server_name your_www;
  #當(dāng)請(qǐng)求這些server name的時(shí)候,nginx才會(huì)做反向代理,0.0.0.0是指全部
  location / {
   proxy_pass http://127.0.0.1:8080;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
  }
  # location 顧名思義,定位,就是當(dāng)訪問(wèn) / 的時(shí)候,nginx會(huì)將請(qǐng)求轉(zhuǎn)給本地的8080端口,而后面的設(shè)置都是一些基本的配置,可以直接用
  location /static {
   alias /home/project/static;
  }
  # 這個(gè)就是配置靜態(tài)文件的地方,要用絕對(duì)地址,對(duì)應(yīng)最開始的目錄形式,假設(shè)project就在/home下面,那么這樣配置就可以的了,還有個(gè)前提是,你在開發(fā)的時(shí)候,采取了django的建議,每個(gè)app的靜態(tài)文件都用多了一層app_name的文件夾來(lái)包住。
}

在配置靜態(tài)文件的時(shí)候,alias /path/to/static的意思就是直接在這個(gè)地址上面找,而root /path/to/static則是在/path/to/static/static找,就是說(shuō)root會(huì)自動(dòng)加一個(gè)static。

更改完conf后,就可以nginx -t檢查一下,ok之后就

service nginx restart,這樣配置就生效了。

確認(rèn)gunicorn已經(jīng)運(yùn)行,那么訪問(wèn)本地應(yīng)該就可以看到你的網(wǎng)頁(yè)了。

錯(cuò)誤分析

  • 還是看到nginx的歡迎頁(yè)。去檢查gunicorn的監(jiān)聽端口,和nginx轉(zhuǎn)發(fā)的端口是否一致;檢查是否啟用了多個(gè)gunicorn;如果gunicorn沒(méi)有開reload功能,那么在改django代碼之后要手動(dòng)重啟gunicorn。
  • 顯示了網(wǎng)站內(nèi)容,但是靜態(tài)文件都是404,那就是靜態(tài)文件地址配錯(cuò)了;靜態(tài)文件顯示403,那就是權(quán)限問(wèn)題,在nginx的配置頭部更改user信息,改成你的用戶,要注意,你用戶有nginx的權(quán)限才行,最簡(jiǎn)單就是把用戶加到nginx這個(gè)組里面去,當(dāng)然如果是想立刻看到,直接改成 user root。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python線程同步的實(shí)現(xiàn)代碼

    Python線程同步的實(shí)現(xiàn)代碼

    本文介紹了threading 模塊提供的線程同步原語(yǔ)包括:Lock、RLock、Condition、Event、Semaphore等對(duì)象。對(duì)大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2018-10-10
  • python 圖像插值 最近鄰、雙線性、雙三次實(shí)例

    python 圖像插值 最近鄰、雙線性、雙三次實(shí)例

    這篇文章主要介紹了python 圖像插值 最近鄰、雙線性、雙三次實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • tensorflow 2.1.0 安裝與實(shí)戰(zhàn)教程(CASIA FACE v5)

    tensorflow 2.1.0 安裝與實(shí)戰(zhàn)教程(CASIA FACE v5)

    這篇文章主要介紹了tensorflow 2.1.0 安裝與實(shí)戰(zhàn)(CASIA FACE v5),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python讀寫excel數(shù)據(jù)--pandas詳解

    python讀寫excel數(shù)據(jù)--pandas詳解

    這篇文章主要為大家詳細(xì)介紹了python操作EXCEL讀數(shù)據(jù)、寫數(shù)據(jù)的實(shí)例源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 使用 Python 列出串口的實(shí)現(xiàn)方法

    使用 Python 列出串口的實(shí)現(xiàn)方法

    有時(shí)在編程時(shí),我們需要獲取有關(guān)系統(tǒng)中可用通信端口的信息, 我們將討論如何使用 Python 來(lái)做到這一點(diǎn),將討論使用串口或 com 端口的通信, 我們將深入探索 Python 包,以幫助我們獲得系統(tǒng)的可用通信端口,感興趣的朋友一起看看吧
    2023-08-08
  • Flask框架學(xué)習(xí)筆記(一)安裝篇(windows安裝與centos安裝)

    Flask框架學(xué)習(xí)筆記(一)安裝篇(windows安裝與centos安裝)

    Flask是一個(gè)輕量級(jí)的Web應(yīng)用框架, 使用Python編寫。Flask也被稱為 “microframework” ,因?yàn)樗褂煤?jiǎn)單的核心,用 extension 增加其他功能。
    2014-06-06
  • python出現(xiàn)RuntimeError錯(cuò)誤問(wèn)題及解決

    python出現(xiàn)RuntimeError錯(cuò)誤問(wèn)題及解決

    這篇文章主要介紹了python出現(xiàn)RuntimeError錯(cuò)誤問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python實(shí)現(xiàn)靜態(tài)web服務(wù)器

    python實(shí)現(xiàn)靜態(tài)web服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)靜態(tài)web服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • python如何在一個(gè)py文件中獲取另一個(gè)py文件中的值(一個(gè)或多個(gè))

    python如何在一個(gè)py文件中獲取另一個(gè)py文件中的值(一個(gè)或多個(gè))

    這篇文章主要介紹了python如何在一個(gè)py文件中獲取另一個(gè)py文件中的值(一個(gè)或多個(gè)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 關(guān)于Python時(shí)間日期常見的一些操作方法

    關(guān)于Python時(shí)間日期常見的一些操作方法

    Python的datetime模塊是處理日期和時(shí)間的強(qiáng)大工具,datetime類可以獲取當(dāng)前時(shí)間、指定日期、計(jì)算時(shí)間差、訪問(wèn)時(shí)間屬性及格式化時(shí)間,這些功能使得在Python中進(jìn)行時(shí)間日期處理變得簡(jiǎn)單高效,需要的朋友可以參考下
    2024-09-09

最新評(píng)論

旺苍县| 公主岭市| 和田县| 吴江市| 建始县| 沛县| 博乐市| 德令哈市| 锦州市| 屯门区| 泸水县| 昭觉县| 札达县| 大宁县| 宾阳县| 光山县| 台湾省| 东辽县| 望都县| 两当县| 华宁县| 安达市| 都江堰市| 南澳县| 澳门| 雅安市| 咸宁市| 四子王旗| 巴中市| 馆陶县| 西乌| 冕宁县| 吴桥县| 常州市| 荔浦县| 高雄县| 丰原市| 唐山市| 上犹县| 洞口县| 衡阳市|