一個django APP 的伺服器部署

tony0087發表於2021-09-09

相信很多後端開發者應該經歷過程式碼在本機上跑的好好的,但一部署到伺服器上就出差錯了,那其中到底發生了什麼?下面我就來扒一扒我在部署一個django應用過程中的心得體會。

程式碼

要執行一個app最重要的就是程式碼,我們需要先把程式碼放到伺服器上。把程式碼傳到部署伺服器上有很多辦法,目前主流的是在部署伺服器上使用git來拉取程式碼,這樣就能在伺服器上進行程式碼的版本控制。當然也可以用scp複製到伺服器上(不推薦)

依賴

一個app要滿足所有的依賴關係以後,才能夠正常執行,對於django應用至少django包是必不可少的。在python中可以透過 requirements.txt 來安裝這些依賴。一般來說要為每個應用建立一個單獨的虛擬環境,這樣可以防止一個伺服器上多個app之間依賴的互相影響。

環境

這裡的環境指的是app的執行配置,包括資料庫連結的地址,SECRET KEY這些配置,本地環境下的環境配置和線上的一般是不一樣的。在12-factor中推薦用環境變數來實現環境的相關配置,django可以使用django-environ來實現。到這一步為止,線上伺服器的這個app應該可以直接在3伺服器上執行了也就是自啟動應用。

服務

上面的應用是已經可以啟動了,但如果你連的資料庫是本地,那執行中肯定是會報錯的,這些app執行過程中所依賴的服務我把它稱為依賴服務,還有像logstash日誌收集服務,uwsgi伺服器服務,supervisor程式管理服務等,這些對於一個app的執行來說並非必要的服務我把它稱為附加服務。對於一個django應用,可以用uwsgi來替代django內建的伺服器,用nginx來做反向代理和對外的伺服器,用logstash來收集執行過程中的日誌,用supervisor來管理其它的程式。

綜述

其實對於一個線上的應用來說,可以這樣說 app=程式碼+依賴+環境, 而一個server=app+服務,這樣來看我們就可以把一個django應用的部署抽象出來,使用像saltstack的工具來部署大多數的django應用,最近在寫一個Django 應用的自動部署平臺,下次可以分享一下。


作者:steinliber
連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2810049/,如需轉載,請註明出處,否則將追究法律責任。

相關文章