初次部署django gunicorn nginx

2022-08-22 05:18:11 字數 4863 閱讀 2554

部落格詳細位址  

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

先確認在開發環境下能夠正常訪問

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

project/

--project/

--__init__.py

--setting.py

--urls.py

--wsgi.py

--templates/

--manage.py

設定project/setting.py

要更改的幾個點

1.debug改成false,只有關閉了除錯模式,後面才能讓nginx來尋找靜態檔案。

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

3.設定static_root,建議可以直接設為os.path.join(base_dir, 'static/'),也就把資料夾在manage.py的根目錄裡。

4.執行python manager.py collectstatic,就會將所有靜態檔案都放到第三步中設定的檔案位址中。

執行完第四步後,目錄結構應該是這樣

project/

--project/

--__init__.py

--setting.py

--urls.py

--wsgi.py

--templates/

--manage.py

--static/

--auth/

--css/

--js/

--images/

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

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

試著執行沒問題之後,可以直接在根目錄下建立gunicorn.conf.py

來配置位置,以後執行就用

因為每次都在命令列輸引數好累。

我是在docker下面跑的,用nohup來執行的時候,會有問題,報import error,應該是環境變數沒有設定好,但我現在還沒解決這個問題,所以就只用了&

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

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

因為現在階段知識最簡單的配置,只用到同步worker,所以只需要配置一下監聽埠和靜態檔案的位址就可以了。

server

# location 顧名思義,定位,就是當訪問 / 的時候,nginx會將請求轉給本地的8080埠,而後面的設定都是一些基本的配置,可以直接用

location /static

}

在配置靜態檔案的時候,alias /path/to/static的意思就是直接在這個位址上面找,而root /path/to/static則是在/path/to/static/static找,就是說root會自動加乙個static。

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

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

確認gunicorn已經執行,那麼訪問本地應該就可以看到你的網頁了。

錯誤分析

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

先確認在開發環境下能夠正常訪問

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

project/

--project/

--__init__.py

--setting.py

--urls.py

--wsgi.py

--templates/

--manage.py

設定project/setting.py

要更改的幾個點

1.debug改成false,只有關閉了除錯模式,後面才能讓nginx來尋找靜態檔案。

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

3.設定static_root,建議可以直接設為os.path.join(base_dir, 'static/'),也就把資料夾在manage.py的根目錄裡。

4.執行python manager.py collectstatic,就會將所有靜態檔案都放到第三步中設定的檔案位址中。

執行完第四步後,目錄結構應該是這樣

project/

--project/

--__init__.py

--setting.py

--urls.py

--wsgi.py

--templates/

--manage.py

--static/

--auth/

--css/

--js/

--images/

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

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

試著執行沒問題之後,可以直接在根目錄下建立gunicorn.conf.py

來配置位置,以後執行就用

因為每次都在命令列輸引數好累。

我是在docker下面跑的,用nohup來執行的時候,會有問題,報import error,應該是環境變數沒有設定好,但我現在還沒解決這個問題,所以就只用了&

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

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

因為現在階段知識最簡單的配置,只用到同步worker,所以只需要配置一下監聽埠和靜態檔案的位址就可以了。

server

# location 顧名思義,定位,就是當訪問 / 的時候,nginx會將請求轉給本地的8080埠,而後面的設定都是一些基本的配置,可以直接用

location /static

}

在配置靜態檔案的時候,alias /path/to/static的意思就是直接在這個位址上面找,而root /path/to/static則是在/path/to/static/static找,就是說root會自動加乙個static。

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

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

確認gunicorn已經執行,那麼訪問本地應該就可以看到你的網頁了。

錯誤分析

heroku 初次部署

2 建立git 倉儲 進入專案目錄 git init 3 新增忽略檔案 vi gitignore 輸入以下內容 swp log log tmp config database.yml 然後 wq 儲存退出 git 缺省會 replaced all of lf with crlf 處理方式 git c...

uwsgi nginx 初次部署flask程式

是一種規範 是用來規範 伺服器和應用的。也是一種協議。可以做到任意乙個web伺服器 都可以搭配任意乙個框架只要web伺服器和web框架 滿足wsgi協議。他們就可以相互搭配。在python中 經常使用 uwsgi 和nginx 來部署乙個web框架。flask就是這樣的。就是實現了wsgi協議的乙個...

內網穿透frp配置,django gunicorn

服務端配置 common bind port 7000 token需要自己設定 token 後台監控頁面的埠 dashboard port 7500 進入後台監控頁面的賬號 dashboard user admin 進入後台監控頁面的密碼 dashboard pwd admin 需要進行http通訊...