問題描述
我正在想出兩個 (現在) 人的工作流程。其中一人正在做主題工作,另一個將在寫內容。我們不是 co-located 將不會很快。
作者對源代碼管理非常陌生,最好是第二階段的事情。我可以把 MAMP 放在她的盒子上,讓她寫在那裏,如果是這樣的方法,最好將這兩個解決方案進行整合?
我已經看過這個問題:How to best setup for development for a two person bi-coastal team?,但由於它是兩歲,我以為我會看到有什麼變化。
最佳解決方案
注意:非常 mac /linux /unix 為中心的想法。包括很多命令行 fu 。
將所有代碼放在版本控制下
我喜歡 git Mark Jaquith 對於使用 Git 和子模塊的 WordPress 核心的 k eeping an entire site under version control 有一些很好的建議。您也可以將插件作為 git 子模塊。
團隊的開發人員結束將在本地工作,測試和提交任何更改,然後將代碼推送到中央存儲庫 (Github 與私人備份,Beanstalk,您的服務器,沒關係) 。從那裏您可以使用部署工具 (Capistrano 等) 或簡單的 SSH 到您的開發服務器 (參見步驟 2) 和 git pull 在您的更改。
確保將您的靜態文件目錄 (例如上傳的圖像和內容) 添加到.gitignore 文件中。
設置開發服務器
例如。在主站點的子域上安裝 WordPress,如 staging.yoursite.com 或 dev.yoursite.com 。這是新代碼的測試基礎,您的內容製作者將在哪裏工作。我建議完全保持在一個獨立的服務器上。
為您的內容產品提供登錄站點的用户名和密碼,並讓他們生成並寫入所有內容。您還將把最新的代碼更改提交到此網站,以便在將其推送到生產 (即時) 站點之前進行測試。
從開發服務器,您可以進行硬數據庫導出,並將其用於將所有內容放在即時站點上。
在 dev 服務器上:
shell$ mysqldump -p -u your_dbuser yourdatabase > the-file.sql
通過生產服務器發送文件和…
shell$ mysql -p -u your_dbuser your_database < the-file.sql
還有另一個選擇,我剛剛很高興與所謂的 RAMP by Crowd Favorite 合作。它會將內容從一個服務器部署到另一個服務器。太棒了。強烈推薦。
當一切準備就緒時,將內容和代碼推送到即時網站。
作為最後的警告:IP 限制您的開發站點,所以不是每個人都可以訪問它。
同步您的本地開發網站
顯然,如果您要在本地工作,您希望讓本地站點與開發和生產站點同步。所有的代碼都將被版本控制,所以沒有問題。但是同步數據庫和靜態文件是另一回事。
同步數據庫
這裏有兩個選擇。
-
您可以一次不間斷地將 SSH 登錄到 dev 服務器中,並將數據庫轉儲到可以下載並導入到本地計算機的文件中。使用上面的命令。
-
如果您的主機允許外部數據庫連接,請創建一個只能訪問您的開發站點數據庫的用户。然後,您可以使用本地機器上的 mysqldump 命令指定主機參數,並將數據庫直接轉儲到計算機上 – 我使用 media temple 進行操作。
mysqldump 與宿主的實例。
shell$ mysqldump -p -u your_dbuser -h the-externa.db.host.com the_database > the-file.sql
您還可以登錄到您的主機 PHPMyAdmin 並從那裏導出。
同步靜態文件 (上傳的圖像等)
rsync 是你的朋友。它允許您從一個位置到另一個位置進行增量更新,包括通過 SSH 。換句話説,您可以使用它來僅下載您沒有本地機器的文件。
例:
shell$ rsync -avze ssh your_user@yoursite.com:/path/to/static/files/ /path/to/your/local/static/files/
假設您的主機使用密碼進行 SSH 訪問,則在運行該命令後將提示您輸入密碼。如果你的主機不這樣做,例如使用無密碼的公鑰 SSH 訪問,您需要通過一些使用 ssh-agent 的 shell 腳本跳過一些環:
#! /bin/bash
eval "$(ssh-agent)" # start ssh-agent user daemon
ssh-add /path/to/your/id_rsa # add your public key
rsync -avze ssh your_user@yoursite.com:/path/to/static/files/ /path/to/your/local/static/files/
kill $SSH_AGENT_PID # kill the ssh agent
您還可以使用 rsync 來保持生產和開發服務器之間的靜態文件同步。
以上是我如何與我的個人網站和幾個客户的網站合作。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。