2011-02-06 29 views
19

我一直在用magento開發一段時間,現在事情開始變得有意義,變得更有意識和更有組織。儘管如此,一個方面仍然顯得相當混亂 - 將一個網站從開發轉移到生產。Magento分期和生產

任何人都可以爲此提供一些很好的流程 ​​- 到目前爲止,我已經簡單地導出/導入開發數據庫,​​複製源文件,清除測試訂單,客戶等,然後更改基址,htaccess文件等。

這一切似乎有點混亂和容易出錯。是否有經驗豐富的Magento開發人員可以爲他們分享此任務提供一個良好的流程。

+0

我很感興趣,這也經營的網站。我的主要工作是維護一個基於.NET的電子商務商店,我們使用Windows Installer以受控的方式部署更新,而Magento的側邊項目有點新 - 在部署時感覺有點魯莽!我認爲這些日子裏,我只需要建立一個大的bash腳本來管理更新過程。 – 2011-02-06 16:00:05

回答

27

我的過程通常是圍繞一個源代碼控制庫(在我的情況下爲SVN)進行管理,這使得事情變得更容易(或者可能,真的......)。這個想法是在回購中保留所有可能的東西,並使用SVN更新和標籤發佈更改。

local.xml:我將此文件以SVN移動到local.xml.dist,並忽略回購中的實際local.xml文件。這使您可以在安裝時使用不同的數據庫憑據和主機,而不會污染代碼庫。

其他忽略:查看this question瞭解更多在數據庫中應該忽略的文件。基本上,環境中獨有的任何東西都應該放在版本控制之外,並在實際的主機上處理。您的.htaccess文件將在這裏相關。

主機設置:我的登臺環境和開發環境設置爲從存儲庫的/ trunk運行。開發發生在這裏,並且可以通過svn up定期(或根據需要)推送到階段以向客戶端顯示新功能並進行UAT。儘管如此,生產環境仍然需要來自野生西部的樹幹保護,以避免環境因標籤而失效。每當功能集已準備就緒時,我會從中繼創建一個新標記,並執行svn switch以移至新代碼集。以這種方式做事情也可以讓我輕鬆撤銷生產(切換回最後一個標籤)。因此,我已經從我的生活中刪除了所有的手動文件推送,這很好。

一個更好的系統(我現在還沒有這個需要)將使用svn export在生產系統上創建代碼樹的完整副本,並使用ln在它們之間切換。像這樣:

> cd /home/apacheuser 
> ls -l 
www -> /home/apacheuser/tag_1.0.1 
tag_1.0.1 

> svn export /url/for/repo/tags/1.0.2 tag_1.0.2 
... svn exports here ... 

> rm www; ln -s /home/apacheuser/tag_1.0.2 www 

這樣,版本更改是即時的。

數據庫同步從生產回:要允許我對生產雜交數據的工作,我有一個cron作業設置轉儲生產數據庫,並將其導入升級。發生這種情況時,腳本將刪除敏感的客戶數據(並更改客戶的電子郵件地址,以便所有電子郵件都發送給我)。它還會將信用卡網關設置更改爲測試網關,並更改base_url參數,以便登臺網站URL正常工作。

新的發展:您可能注意到這裏,不同的環境中運行過大致相同的代碼庫(減去任何新的變化),這似乎麻煩你從你已經注意到有關數據庫的變化等什麼

管理這種複雜性(以及正確的方式,同時!)的唯一方法是確保代碼本身跟蹤必要的環境變化。 Magento支持自動模塊版本升級,包括數據庫腳本,您應該使用這些腳本來進行模式更改等。這意味着,當您將新代碼部署到分段/生產(或者從您開發環境中的其他開發人員處獲得它)時,所有數據庫補丁都會自動應用。

這也意味着您需要編寫新功能以儘可能無損。 Magento主題,禁用的模塊等可以用來使其成爲現實。例如,在爲網站創建新主題時,請確保不要修改任何核心行爲,並將所有新資產保留在主題中,這些主題在部署之前對生產是惰性的。

更多開發者:此設置基於相對較少的項目開發人員。有一個隱含的假設,當你想標記一個新版本時,你可以將trunk變成一個工作狀態來這樣做。隨着更多的開發人員,這將越來越少,所以更復雜的回購設置是必要的。如果我遇到這種情況,我的計劃是轉而使用git而不是SVN,並使用功能分支來進行新的開發。


讓我知道如果有任何不清楚。希望有所幫助!

謝謝, 喬

+0

@Joe - 真棒回答。不過,如果你不介意分享,我想知道DB Sync Cron Job的詳細信息。瞭解這個測試網關和刪除敏感數據是如何發生的,以及主電子郵件ID的更改以及其他一些內容,這非常有趣。 – 2011-02-06 22:01:07

0

1)複製文件。清除var/cache和var/session文件夾。

2)導出數據庫,創建臨時數據庫,並導入該轉儲文件。

3)使用新的臨時數據庫信息更新應用程序/ etc/local.xml文件。

4)使用工具如PHPMyAdmin的修改數據庫,並編輯「core_config_data」表更新基本URL(/網絡/安全/網絡/不安全)

此運行查詢:

SELECT * FROM core_config_data WHERE path = 'web/unsecure/base_url' OR path = 'web/secure/base_url'; 

並修改結果行的值。

5)如果您有SSH訪問,請在籌劃存儲的文檔根目錄下面的命令:

./pear mage-setup . 

6)在瀏覽器中