我與一位擁有基於 Linux 的專用 Plesk 伺服器的客戶合作。該網站(例如example.com
)是即時的,由於通常需要進行大量修改,因此很難讓它們直接即時運行。伺服器沒有SVN,只有FTP。
我創建了一個子網域staging.example.com
並透過 FTP 將檔案放在那裡,以便客戶端可以在生效之前看到修改。不用說,對我來說,記住與每個任務相關的每個文件、上傳並在登台上進行測試,然後再次回憶這些文件是什麼,並在實時伺服器上再次執行此操作,對我來說是一件痛苦的事。我已經多次「成功失敗」地做到了這一點。
我現在想使用SVN。我已經設法使用 SSH(我可以完全訪問它)和存儲庫(在 中)安裝 SVN,/var/www/vhosts/example.com/svn/repos
但進一步的設定對我來說似乎不明確。我希望設定是這樣的:
- SVN 伺服器(運行於
svn.example.com
- 已完成) - 'master' 副本 at
staging.example.com
, at/var/www/vhosts/example.com/staging
(不確定 'master' 在 SVN 中是否有特定含義。我只是指主副本) - 工作目錄位於
www.example.com
, at ,/var/www/vhosts/example.com/httpdocs
以便我可以 svn update 使我的更改生效 - 我的電腦上的另一個工作目錄,我將在其中進行實際工作。
我的計劃是,我將在我的計算機上完成工作,提交它,以便可以在分階段進行測試,如果一切正常,則從實時站點更新以使我的更改生效。
請指導我如何實現這個目標。另請注意,我是一名程式設計師,而不是系統管理員,因此我的計劃可能存在一些問題。如果您這麼認為,請指出替代解決方案。我已經使用 SVN 很長時間了,但這只是 checkout-commit-update-resolve,沒有設定。這就是為什麼我現在需要幫助。
答案1
最簡單的解決方案可能只是檢查三個地方的程式碼(只是主幹,沒有分支等)。然後你只需要確保在正確的時間在正確的資料夾中執行“svn up”。
因此,請嘗試以下操作(註釋描述了每一位)。
#SSH to the server as a user who can modify /var/www/vhosts/...
...
cd /var/www/vhosts/ # Since this is a live server, we need to make the
# changeover fast, so work in a new folder.
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository
# into a new folder called
# "staging".(Change "website"
# to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"
# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...
cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.
# This will make the svn version of the staging site live. Check that it works
# then do the same with the httpdocs folders.
一種更複雜的解決方案是使用兩個程式碼分支,一個用於登台,另一個用於即時。但這對這個來說可能有點過分了...
答案2
ed答案的擴展版本
前言
您必須掌握一些 Subversion 管理技能,才能讓所有工作正常進行並了解幕後流程
臉
你必須有:
- 一個儲存庫
- 儲存庫中(至少)有兩個分支( fe
STAGING
和LIVE
) - 具有嵌入式業務邏輯的提交後掛鉤“在 STAGE 或 LIVE 目標上發布”
三四工作副本:DEV(您本地工作場所,綁定到STAGING分支)、MERGE(您本地工作場所,綁定到LIVE分支)、STAGING(在STAGING伺服器上,綁定到STAGING分支)、LIVE(在LIVE伺服器上,綁定到LIVE)分支)- 在 STAGING 和 LIVE 上安裝 SVN 用戶端
工作流程:
- 在DEV中編輯程式碼
- 提交 - 提交後掛鉤將更新 STAGING 上的 WC
- 測試 STAGING 的更改
- 合併到 MERGE WC(已測試)從 STAGING 分支的變更/有效地從 STAGING 合併到 LIVE 分支/
svnlook log | grep KEYWORD
提交 LIVE 分支更改 - 提交後鉤子將使用合併的更改更新 LIVE 上的 WC(鉤子可以透過提交訊息中的關鍵字// 或透過 LIVE 分支中的更改 //檢測此類提交svnlook dirs-changed
)
筆記:
您可以使用 FTP 或 scp代替伺服器上的 WC ssh & svn up
- 較少的 Subversion,更新網站會更令人頭痛(刪除的檔案將不是被 FTP|scp 刪除,共同的進程似乎更複雜/對我來說/)