欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

寫在前面

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

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

關于Django

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

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

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

設置project/setting.py

要更改的幾個點

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

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

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

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

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

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

關于Gunicorn

一開始可以先試著運行一下,進入project這個根目錄,然后

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

不出意外,就應該可以跑起來了。

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

試著運行沒問題之后,可以直接在根目錄下創(chuàng)建gunicorn.conf.py

來配置位置,以后運行就用

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

因為每次都在命令行輸參數(shù)好累。

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

關于Nginx

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

先來試運行一下nginx,只要啟動nginx這個服務,訪問本地應該就可以看到nginx的歡迎頁了。

因為現(xià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;
  #當請求這些server name的時候,nginx才會做反向代理,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 顧名思義,定位,就是當訪問 / 的時候,nginx會將請求轉(zhuǎn)給本地的8080端口,而后面的設置都是一些基本的配置,可以直接用
  location /static {
   alias /home/project/static;
  }
  # 這個就是配置靜態(tài)文件的地方,要用絕對地址,對應最開始的目錄形式,假設project就在/home下面,那么這樣配置就可以的了,還有個前提是,你在開發(fā)的時候,采取了django的建議,每個app的靜態(tài)文件都用多了一層app_name的文件夾來包住。
}

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

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

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

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

錯誤分析

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 使用Python畫出小人發(fā)射愛心的代碼

    使用Python畫出小人發(fā)射愛心的代碼

    今天小編就為大家分享一篇使用Python畫出小人發(fā)射愛心的代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python3報錯check_hostname?requires?server_hostname的解決

    python3報錯check_hostname?requires?server_hostname的解決

    這篇文章主要介紹了python3報錯check_hostname?requires?server_hostname的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 對python打亂數(shù)據(jù)集中X,y標簽對的方法詳解

    對python打亂數(shù)據(jù)集中X,y標簽對的方法詳解

    今天就為大家分享一篇對python打亂數(shù)據(jù)集中X,y標簽對的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python?數(shù)據(jù)保存為npy和npz格式并讀取的完整代碼

    python?數(shù)據(jù)保存為npy和npz格式并讀取的完整代碼

    這篇文章主要介紹了python?數(shù)據(jù)保存為npy和npz格式并讀取,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 解決pip install xxx報錯SyntaxError: invalid syntax的問題

    解決pip install xxx報錯SyntaxError: invalid syntax的問題

    今天小編就為大家分享一篇解決pip install xxx報錯SyntaxError: invalid syntax的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • PyCharm漢化安裝及永久激活詳細教程(靠譜)

    PyCharm漢化安裝及永久激活詳細教程(靠譜)

    開始你的Python,這里有靠譜的Pycharm漢化安裝詳細教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Python詞云展示庫wordcloud配置詳解

    Python詞云展示庫wordcloud配置詳解

    這篇文章主要介紹了Python詞云展示庫wordcloud配置詳解,詞云就是將詞語通過圖形可視化的方式,直觀和藝術的展示出來,詞云在我們的生活中經(jīng)常能夠看到,無論是中文的詞云還是英文的詞云,需要的朋友可以參考下
    2023-07-07
  • python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例

    python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例

    今天小編就為大家分享一篇python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python中偏函數(shù)用法示例

    Python中偏函數(shù)用法示例

    這篇文章主要介紹了Python中偏函數(shù)用法,結(jié)合實例形式分析了Python基于functools模塊創(chuàng)建和使用偏函數(shù)的相關操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • Python基于requests實現(xiàn)模擬上傳文件

    Python基于requests實現(xiàn)模擬上傳文件

    這篇文章主要介紹了Python基于requests實現(xiàn)模擬上傳文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04

最新評論