2015-01-09 44 views
0

我想在我的django(1.7)項目上本地工作,並定期將更新部署到生產服務器。你會如何做到這一點?我在文檔中沒有發現任何關於此的內容。我對此感到困惑,因爲好像很多人想這樣做,應該有一些標準的解決方案。或者我整個工作流程都錯了?如何使用本地開發服務器並在django中部署到生產服務器?

我應該注意到,我並不期待一步一步的指導。我只是想了解這個概念。

+0

爲什麼這應該在Django文檔中?這與Django無關。 – 2015-01-09 22:23:40

+0

這是一個非常大的話題。從這裏開始:https://docs.djangoproject.com/en/1.7/howto/deployment/在部署更新時是否有一些特別的挑戰? – dylrei 2015-01-09 22:24:07

+0

取決於您的部署策略和目標系統。我使用Jenkins來下拉我的代碼,運行測試,確保所有內容都通過,然後將其打包成tar並將其發送到目標服務器。目標服務器收到tar,將其解壓縮,備份當前的代碼,並將新的東西放在原處。 – 2015-01-09 22:29:15

回答

1

將源從開發機器推送到git存儲庫。 在生產服務器上拉來源。重新啓動uwsgi /不管。

1

有這樣沒有標準的方式,所以沒有,它不能包含的Django或在文檔中進行徹底的描述。

如果您使用PaaS,部署方式取決於PaaS。對於像碼頭工人這樣的容器,你必須遵守那個容器的規則。

如果你是老派,可以ssh進入服務器,你可以rsync快照的代碼到正確的地方後,一切都照顧:數據庫,端口,網絡服務器設置等這就是我所做的,我使用makefile來控制bash腳本的東西。

[email protected] 
REMOTEPATH=yourpath 
REMOTE=$REMOTEHOST:$REMOTEPATH 

make rsync REMOTE_URI=$REMOTE 
ssh $REMOTEHOST make -C $REMOTEPATH deploy 

我的「部署」肌動是一個怪物,但可能是因爲一些接觸,以重新加載網站所使用的WSGI文件一樣容易。我的複雜媒體清理出陳舊的文件,運行collectstatic然後重新加載站點。真正複雜的創建一個時間戳virtualenv,克隆數據庫和遠程代碼樹,一個新的服務器設置,指向這個,在遠程運行連接測試,如果他們成功,切換主站點指向新版本的站點,然後通過git hash和timestamp向我發送現在正在生產的版本。

相關問題