2010-10-24 72 views
0

我使用Codeigniter PHP框架編寫網站。用mercurial和netbeans直接進行單一開發者部署?

我正在使用mercurial進行版本控制。

我有3個系統與我一起工作。我使用Netbeans 6.9.1在Windows 7機器上編寫代碼。我偶爾會提交併提交到Bitbucket.org的存儲庫,純粹是爲了備份和版本控制。

我有一個「測試」網站(在它自己的專用IP地址的共享Linux機器上),我上傳到FTP使用,我可以測試一切運行在Linux上的實際網站上的預期。

一旦我對此感到滿意,我會上傳到我的「實時」站點,該站點位於它自己的專用服務器上。我再次使用FTP從我的開發服務器上傳文件。

我意識到這是各種各樣的錯誤。有一件事我必須介入並在測試版和實時計算機上更改一些內容,以便它們指的是正確的域名,而不是本地主機。另一方面,我沒有充分利用mercurial來幫助解決這個問題。我假定不是從FTP上傳,我可以使用mercurial來「抓取」我標記爲可以部署的特定修訂版。我也認爲我可能會以不同的方式在Netbeans中做一些事情,以使流程更簡單。

我想要做的是有一些非常平滑的方式來控制所有這些,並希望知道如何處理來自本地主機的測試版和活動網站稍微不同的配置設置問題。

有沒有一種標準的方式來做我在找的東西?我已經看到了一些第三方應用程序的「持續集成」的參考,但我不知道我需要這樣的東西。

我,什麼是最簡單的事情有點失落,我這樣做,會使我的生活更輕鬆....任何幫助非常感謝:)謝謝!

回答

1

這取決於每個站點的設置如何不同的是,如果有祕密參與其中,這不應該是在公共場所看到(我假設你使用公共到位桶庫)。

如果更改不敏感,則可以爲測試和生產服務器添加兩個附加分支,其中僅限配置更改已應用。每次您在默認情況下更改某些內容並將其部署到測試中時,您都可以簡單地在測試之上合併默認值,然後在流程中將mercurial填入不同的配置設置。然後服務器部署將在正確的分支內調用hg archive

一個典型的變更歷史是這樣的:

O----o-o-o-o-o-o-o-o---o  default 
\   \   \ 
    T1--------T2-----------T3 test 
    \      \ 
    P1---------------------P2 production 

其中T1和P1的測試和生產的參數填入您也可以使用這個分支建立成熟的網站的發展。默認情況下進行破解,並且只將穩定的更改傳播到測試和生產中。

如果更改非常敏感,可以創建一個非版本化的部署腳本(或更好的版本化部署腳本和未版本化的配置文件),該腳本將修補hg archive的輸出。

無論如何,您應該使用部署腳本來處理產品的打包並以自動和標準化的方式部署目標。在此腳本中,您還可以將有關源修訂版的信息嵌入到最終歸檔中。

請注意,此模型適用於環境,在服務器上未做任何更改。如果對服務器上的產品進行更改,則需要將服務器中的文件複製回開發環境(正確的修訂版),以檢查服務器上發生了哪些更改。如果您想在服務器上進行更改,則可能還需要安裝mercurial。

+0

好的,非常感謝! – neomech 2010-10-25 18:57:25

相關問題