2009-12-03 47 views
2

我知道我可以將我的所有項目文件保存到存儲庫中,因此部署新版本的軟件只會將svn導出到正確的目錄中。 但我有一種感覺,這是不正確的方式和媒體文件,我應該使用一些其他實用程序進行部署,如rsync。但這也是雙面同步的問題=我喜歡將完整項目備份到一些安全空間(不僅僅是活動服務器)。 所以主要問題是什麼是在PHP中的Web應用程序的正確方式和項目的目錄結構?將項目的媒體文件保存到svn倉庫是否正確?

回答

1

呃,一個複雜的。首先,如果你有這樣的可能性,把'code'和'web'部分分開是很好的做法。類似的東西。

web/ 
web/css/ 
web/upload 
code/ 
code/lib/ 
code/actions 

這將PHP從Web根中解脫出來。更安全(攻擊者無法通過在瀏覽器中輸入URL來訪問您的文件)。但是 - 這需要適當的應用程序設計(例如Symfony框架給你類似的佈局)。

第二件事 - 沒有任何錯誤(在我看來)與SVN回購內的二進制文件。不過,這一切都取決於我們正在談論的文件。如果沒有用戶上傳的內容 - 繼續。部署越簡單,發生錯誤的可能性就越小。

順便說一句:你總是可以選擇退出一些文件夾內容從SVN所以用戶文件不會搞亂你的文件。

因此,有一件事你必須保持在你的設計是分離用戶輸入的內容的內容(最好是爲用戶創建特殊文件夾,並選擇退出SVN)。

0

將媒體文件放入源代碼控制(svn或其他)是絕對正確的。儘管將媒體文件放在與.php文件分開的地方可能是一個好主意。

爲什麼要一步完成兩步驟部署(svn up然後rsync或類似)?

+0

我認爲你是對的。 我曾經做rsync沒有排除.svn direcotries,所以我不得不做svn導出到rsync之前的本地文件夾(用於獲取乾淨的代碼在主機 - 沒有.svn文件夾) 現在我寫了適當的排除rsync的模板,所以沒有人.svn文件不同步。 謝謝。 – mihan007 2009-12-10 11:04:08

0

將您的媒體文件放入您的SVN存儲庫是沒有問題的,因爲您的媒體版本與其他軟件相關聯。

此外,如果你想備份你的svn倉庫,你可以使用svnsync命令讓其他一些鏡像鏡像你的「主」subversion版本庫。

關於結構,最佳實踐主要取決於您所面對的用例。你很可能想要通過模塊和內容類型來組織你的文件(所以介質與代碼分離,...)。

0

將媒體文件放入svn也可以。 您可以使用外部svn鏈接將媒體文件混合到您的樹中,因此您只有一個簽出操作,並且您有完整的Subversion支持,並且不會混亂您的源代碼存儲庫。

0

在我看來,這取決於你在談論什麼類型的媒體。如果這是靜態的,比如圖像,javascript,css等等 - 不是暫時的,那麼把它放在顛覆中。但是,如果它會改變,比如廣告,我認爲沒有太多理由來顛覆它。只需將目錄propset設置爲忽略並使用rsync,scp或ftp手動上載文件即可。