2012-08-06 114 views
4

我最初是一名.NET開發人員,當時我們不得不從Visual Studio發佈一個軟件,我們不得不將它切換到發佈模式,以確保調試掛鉤被移除,並且存儲庫文件被留下。最終的結果是一整套準備投入生產的文件。如何將Django部署到沒有mercurial文件的生產服務器上?

切換到Django並使用它近三個月後,我現在準備部署第一個應用程序。我已經完成了一些閱讀。我知道如何將調試設置爲False並擁有production_setting.py以及如何在Apache上使用WSGI進行部署。

但我還沒有想出的是推出發佈的一個很好的過程。

與我現在知道了,我會做一個發佈以下內容:(不包括隱藏善變目​​錄)

  • 複製手的所有文件的上傳目錄
  • 郵編他們都
  • 把他們在SCP的Ubuntu的服務器
  • 登錄到服務器
  • 解壓縮zip文件,並把一切都到位
  • 修改setting_production.py並輸入憑據

這是一個健康的Django部署過程嗎? :)
僅供參考我使用的Aptana Studio的3.2.1

感謝您的任何提示

+2

在目標服務器上設置遠程Mercurial回購。推到回購站點,並使用post-receive鉤子來檢查你的推送到你的web服務器將要從哪裏提供的文件夾中(如果需要,重新加載你的web服務器)。您還可以在您的設置文件中添加一個條件,檢查應用程序是否在生產服務器上(例如,檢查文件或環境變量)並加載相關設置(settings_prod.py或settings_dev.py) – elithrar 2012-08-06 10:23:01

+1

@elithrar這應該是回答。 – 2012-08-06 11:22:39

回答

2

你可以看看Fabric;文檔將其描述爲:

... Python(2.5或更高版本)庫和命令行工具,用於簡化應用程序部署或系統管理任務的SSH使用。

它能夠做所有你想要的事情。

你的「部署」任務將可能有若干個子任務(_upload_tar_from_hg()_migrate()),但整體畫面會是這樣的:

from fabric.api import * 

env.release_name = 'foo_bar-1.0' 
env.deployment_path = '/var/www/django/%s' % env.release_name  

def deploy(): 
    local('hg archive -t tgz $s.tar.gz' % env.release) 
    put('%s.tar.gz' % env.release, env.deployment_dir) 
    run('cd %s && tar -xzvf %s.tar.gz' % (env.deployment_path, env.release)) 
    local('rm %s.tar.gz' % env.release) 
    run('cd %s/%s && ln -s settings_production.py settings.py' % (env.deployment_path, env.release)) 

這依賴於具有獨立settings_production.py源代碼管理,這可能不合適。結構可以在文本文件中找到並替換,或者可以使用a local_settings.py approach結合設置。

退房the Fabric tutorial,以填補空白(如指定爲您的服務器連接的詳細信息。一旦你設置,只需運行

fab deploy 

和過程應自動進行。

NB而不hg元數據創建從水銀歸檔在一個步驟中與hg archive命令)

+0

到目前爲止,hg檔案已經幫助了我很多。這對於保持簡單直到需要更復雜的解決方案來說非常好。 +1謝謝。 – Houman 2012-08-10 20:29:25

1

設置在目標服務器上的remote Mercurial repo完成。使用帶有「hg」用戶的SSH密鑰通常是最安全的方式,因爲您可以限制對該用戶的shell訪問權限並僅允許其訪問該repo。

推到回購站並使用post-receive鉤子檢出您的推入到您的Web服務器將從其服務的文件夾(並在需要時重新加載您的Web服務器)。

你也可以把一個條件,檢查應用程序是否在生產服務器上設置文件(例如,檢查一個文件或環境變量)和加載相關設置(settings_prod.py或settings_dev.py)

+0

聽起來有趣,我該如何創建這樣的post-receive hook?謝謝 – Houman 2012-08-10 20:28:28

+0

@Kave請看這裏:http://mercurial.selenic.com/wiki/Hook - 基本上你在項目的.hgrc文件中創建一個「鉤子」,然後將它綁定到腳本(Python,Ruby,bash ; 隨你)。劇本然後處理繁重的工作。例如,您可能會重新加載Web服務器,或者修改配置文件等。 – elithrar 2012-08-11 00:35:33

相關問題