為即時網站設定具有兩個客戶端和一台伺服器的 SVN

為即時網站設定具有兩個客戶端和一台伺服器的 SVN

我與一位擁有基於 Linux 的專用 Plesk 伺服器的客戶合作。該網站(例如example.com)是即時的,由於通常需要進行大量修改,因此很難讓它們直接即時運行。伺服器沒有SVN,只有FTP。

我創建了一個子網域staging.example.com並透過 FTP 將檔案放在那裡,以便客戶端可以在生效之前看到修改。不用說,對我來說,記住與每個任務相關的每個文件、上傳並在登台上進行測試,然後再次回憶這些文件是什麼,並在實時伺服器上再次執行此操作,對我來說是一件痛苦的事。我已經多次「成功失敗」地做到了這一點。

我現在想使用SVN。我已經設法使用 SSH(我可以完全訪問它)和存儲庫(在 中)安裝 SVN,/var/www/vhosts/example.com/svn/repos但進一步的設定對我來說似乎不明確。我希望設定是這樣的:

  1. SVN 伺服器(運行於svn.example.com- 已完成)
  2. 'master' 副本 at staging.example.com, at /var/www/vhosts/example.com/staging(不確定 'master' 在 SVN 中是否有特定含義。我只是指主副本)
  3. 工作目錄位於www.example.com, at ,/var/www/vhosts/example.com/httpdocs以便我可以 svn update 使我的更改生效
  4. 我的電腦上的另一個工作目錄,我將在其中進行實際工作。

我的計劃是,我將在我的計算機上完成工作,提交它,以便可以在分階段進行測試,如果一切正常,則從實時站點更新以使我的更改生效。

請指導我如何實現這個目標。另請注意,我是一名程式設計師,而不是系統管理員,因此我的計劃可能存在一些問題。如果您這麼認為,請指出替代解決方案。我已經使用 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 管理技能,才能讓所有工作正常進行並了解幕後流程

你必須有:

  • 一個儲存庫
  • 儲存庫中(至少)有兩個分支( feSTAGINGLIVE
  • 具有嵌入式業務邏輯的提交後掛鉤“在 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 刪除,共同的進程似乎更複雜/對我來說/)

相關內容