我正在通過觀看下面的 youtube 視頻來構建 Web api,直到 AWS S3 存盤桶設定我才理解一切正常。但他首先在本地部署所有內容,然后在確保一切正常后,他將所有靜態檔案傳輸到 AWS,對于 DB,他從 SQLdb3 切換到 POSgres。
Django 投資組合
我仍然不明白這部分為什么我們需要將我們的靜態檔案放到 AWS 并創建 POSTgresql 資料庫,即使有來自 django 的 SQLdb3 默認資料庫。我在想,如果我是唯一的管理員并且只是從 Heroku 連接我的 GitHub 就足夠了,并且只要我在 api 中更改某些內容,只需將這些更改推送到 github master,就可以了。
為什么我們需要使用 AWS 來設定靜態檔案位置并設定一個 rds(關系資料庫)并從頭開始做這些事情。還是沒收到!
有人可以幫忙解釋一下嗎?謝謝
uj5u.com熱心網友回復:
資料庫
視頻指南鼓勵您從 SQLite 切換到資料庫服務器(例如 MySQL 或 PostgreSQL)的原因有很多:
- SQLite 很棒,但如果您預計會有大量流量,則無法很好地擴展
- 如果您想在多個服務器上分發您的應用程式,SQLite 將不起作用。回到 Heroky,如果您使用多個 Dynos 為您的應用程式提供服務,則會遇到問題,因為每個 Dyno 將使用不同的 SQLite 資料庫。如果您通過管理員編輯某些內容,它將隨機發生在此資料庫之一上,從而導致不一致
- 某些 Django 功能在 SQLite 上不可用
SQLite 是 Django 中的默認資料庫,因為它開箱即用,并且在本地/開發環境中非常快速且易于用于原型設計。
但是,它通常不適合生產網站。此外,雖然將sqlite.db檔案與代碼一起存盤可能很誘人,例如在 git 存盤庫中,但它被認為是一種不好的做法,因為您的資料庫可能包含敏感資料(例如密碼、用戶名、電子郵件等)。因此,將代碼和資料嚴格分開是一種很好的做法。
另一種說法是你的代碼和你的資料有不同的生命周期。您希望能夠在不重新部署代碼的情況下編輯資料庫中的資料,并在不接觸資料庫的情況下更新代碼。
即使您可以通過 GitHub 取消對某些檔案的公開訪問,這也不是一個好的做法,因為當您在一個有多個開發人員的團隊中作業時,開發人員可能可以訪問代碼,但不能訪問生產資料,因為它通常是敏感的。如果您與 5 個人一起作業,并且每個人都有您資料庫的副本,這意味著丟失或被盜的風險要高 5 倍;)
靜態檔案
當您在本地作業時,Django 的內置runserver命令會為您處理 CSS、Javascript 和影像等靜態資產的服務。
但是,此服務器也不是為生產使用而設計的。它在開發中效果很好,但在生產網站上會很快失敗,這應該比本地版本處理更多的請求。
因此,您需要在其他地方托管這些靜態檔案,而 AWS 是您可以做到這一點的地方。AWS 將以非常有效的方式為您提供這些檔案。還有其他選項可用,例如,如果您使用專用服務器,則使用 Nginx 配置反向代理來為您提供檔案。
據我所知,您從視頻中描述的進展正在將您從本地開發環境帶到更高效和可擴展的生產設定。這是意料之中的,因為從真正簡單的東西(SQLite,Django 的內置runserver)開始,然后再轉向更復雜和抽象的主題和工具并不那么令人生畏。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/313258.html
標籤:姜戈 PostgreSQL 接口 github 英雄
