2019-12-29, Django項目開發環境和生產環境不匹配時的應變

举报
Mark Chen 发表于 2019/12/29 10:03:19 2019/12/29
3k+ 0 0
【摘要】 2019-12-29, Django項目開發環境和生產環境不匹配時的應變Django 項目,在日常維護的情況下,一般我們就是備份數據庫,因為程序已經有了備份,以 Django 而言,另一個特色,尤其相對於 Java ,就是源代碼保証可以運行。使用Python 虛擬環境的好處,就是不必和作業系統的環境衝突。當今的 Django 項目,我遵循業界前輩的良好工作習慣,會將虛擬環境放在項目裡,同時...

2019-12-29, Django項目開發環境和生產環境不匹配時的應變

Django 項目,在日常維護的情況下,一般我們就是備份數據庫,因為程序已經有了備份,以 Django 而言,另一個特色,尤其相對於 Java  ,就是源代碼保証可以運行。

使用Python 虛擬環境的好處,就是不必和作業系統的環境衝突。

當今的 Django 項目,我遵循業界前輩的良好工作習慣,會將虛擬環境放在項目裡,同時就命名為 venv。

這個虛擬環境在開發環境和生產環境以 requirements.txt 做為藍圖。也就是說在開發環境生成 requirements.txt,在生產環境以 pip 的參數 -r,重建一個一模一樣的環境。

項目的部署是透過 github,如果團隊大經費足,尤其是有合規的需求,是可以自行管理像 github 的功能。一般小型微型項目,可以簡單租用 github。如果是學生或是純粹的練習,免費帳號就可以了。

每日一次備份是基本的行情,就是說如果遭遇到不預期的系統災難,能夠在很低的成本恢復到昨天備份的所有數據,或是以相同的設置有計畫遷移到另外指定的位置。

然而,在增刪改一些功能的時候,難免會遇到一些意外。

僅管 Django makemigrations migrate 的強項。

由於底層數據庫,尤其是sqlite,仍有些相對性的限制,難免會遇到不容易透過 models.py 裡的修改而修復一些數據庫的問題。

這時候,最合理的做法,就是從正式環境複製整個代碼,當成一個新的起點,繼續開發。任何事情都有一體兩面,在這情況下,之前的開發過程將不會在這新版本體現出來,相對好處就是有個乾淨相對有高度的起點。

今天附上的截屏是,在原 tmc 項目,我發現下載日常備份的數據庫和本地的開發環境不完成品配。根據經驗這情況容易在 models.py 設置有錯誤引起,另外在特定的情況下變更欄位一些屬性也會造成這種現象。

如上所說,我先將原 tmc 整個複製,包括了在內的 venv,接著就直接在同一服務器,使用開發用的 runserver 指定另一端口 確認可以運行。 接著我將整個項目 zip 打包,但注意不要包括 venv 這個檔案夾,因為這個檔案夾的內容,可以透過  requirements.txt 再過出一模一樣的環境。環保節能,在這情境也是講究的,重要的是不要浪費在不應該浪費的打包和網路傳輸上。

1577584938261831.png

1577584963378808.png

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。