2016-05-05 64 views
2

試圖簡化我的django應用程序webfaction.com的部署過程,我有一個主(工作副本)和開發分支。Django部署過程到Webfaction.com

目前我做的是以下幾點:

  1. 讓我在本地開發環境的變化給我的開發分支
  2. 進行更改時工作,與運行本地服務器測試,然後用我的主分支合併
  3. git push所以代碼是在我的遠程回購(這有其他問題,如密碼,鑰匙等,我還沒有完全解決)(我也不相信它可能scp代碼webfaction,我不是真的我迄今爲止使用的任何FTP服務的粉絲)
  4. SSH到我webfaction服務器,做一個混帳拉和混帳合併
  5. 測試,看看是否一切仍在工作(它永遠不會是)
  6. 請需要anychanges得到的一切再次
  7. 工作承諾我有任何改變必須做解決一切然後推回給遠程回購
  8. 回到我的開發環境,並與生產同步代碼的代碼了
  9. 沖洗,重複下一個功能

很明顯,我已經錯過高效的開發訓練,作爲一項業餘愛好項目,我只用django工作了幾個月。

任何人都可以提出一個django部署過程,這將有利於理智的發展?

回答

2

我強烈建議面料處理您的部署,以WebFaction: http://docs.fabfile.org/en/1.11/tutorial.html

通過使用光纖可以部署代碼和做其他的服務器端操作從本地終端無需手動ssh登錄到服務器。首先安裝面料:

pip install Fabric 

在您的項目根文件夾中創建fabfile.py。下面是一個例子fabfile,可以讓你開始:

from fabric.api import task, env, run, cd 
from fabric.context_managers import prefix 

env.hosts = ('[email protected]_username.webfactional.com',) 
env.forward_agent = True 

MANAGEPY = '~/webapps/my_project/code/my_project/manage.py' 
PY = '~/webapps/my_project/env/bin/python2.7' 

@task 
def deploy(): 
    with cd('~/webapps/my_project/code/'): 
     with prefix('source production'): 
      run('git pull --rebase origin master') 
      run('pip install -r requirements.txt') 
      run('{} {} migrate'.format(PY, MANAGEPY)) 
      run('{} {} collectstatic --noinput'.format(PY, MANAGEPY)) 
      run('touch my_project/my_project/wsgi.py') 

你可以從你的終端與運行晶圓廠任務:

fab deploy 

在我看來,讓代碼直接在服務器上的變化是一個不好的做法。結構可以改善您的開發流程,以便您僅在本地編輯代碼,快速部署並測試它們。

+0

朋友也推薦我使用流浪漢。這與織物類似嗎? – AnythingMapping

+0

不是真的,Vagrant用於自動提供虛擬機,並且不可能在WebFaction上使用它。 – ozren1983

+0

Fabric可幫助您簡化SSH在應用程序部署和系統管理任務中的使用。我主要使用Fabric來自動部署。您可以使用本地終端運行單一命令,而不是使用之前的流程,即將代碼推送到git,ssh到服務器,提取代碼,可選地運行遷移或安裝要求,然後重新啓動服務器,即可執行所有重複性工作爲你。 – ozren1983

0

最好的和最簡單的辦法

settings.py

try: 
    from production_settings import * 
except ImportError as e: 
    pass 

您可以覆蓋哪些需要production_settings.py;它應該遠離你的版本控制,並且可以靈活地使用git。