2016-03-28 52 views
1

我正在託管服務器上開發我的Web應用程序。我使用自動下載/上傳正在編輯的文件的IDE。我想建立第二個服務器(即development.domain.com),我將用它來處理更新。一旦我完成並測試了一個更新,如何將所有更改推送到發佈服務器(數據庫方案更改,文件更改/添加/刪除,系統更改爲cron等)?是否有任何軟件可以通過一個按鈕爲我執行此操作,還是必須跟蹤我所做的所有更改,然後複製這些文件並逐個更改生產服務器上的方案? 謝謝設置開發/生產PHP/MYSQL服務器

+1

git用於源代碼跟蹤,您的數據庫更新應該由您正在編寫的軟件管理。 –

回答

0

我會看看使用源代碼管理的持續集成或持續部署解決方案。

3

這是一個很好的問題,許多早期的開發者都面臨着這個問題。我們在StrollUp上使用tomcat和Elastic beanstalk,並在生產機器上部署。所以我們很容易將war文件從我們的開發環境上傳到prod。你也可以試試Elastic beanstalk。一些php框架如Laravel提供了這些功能比較RoR。但隨着自己的PHP代碼和單一實例PROD服務器,你可以遵循以下原則:

  1. 推代碼爲正式服務器

    1. 一旦你測試你的開發代碼,上傳整個目錄/ var/www/html/YOUR_PROJECT(壓縮即。YOUR_PROJECT.gz或YOUR_PROJECT.phar)到您的prod服務器(不要逐個上傳,有可能某些文件上傳成功,有些失敗)
    2. 解壓縮產品服務器上的壓縮上傳文件
  2. Transfering分貝改變

    1. Db的變化可能包含DDL和DML兩者。在prod上傳輸它們的最佳方法是根據我的要求保存sqld ,順序爲,您可以在開發環境中運行它們,並在解壓縮prod服務器上的壓縮項目之前運行它們。
    2. 另一種方式(不建議,但它適用於我)是將整個dev數據庫(顯然不是用戶或日誌表)轉儲到您的prod數據庫。
  3. 轉移Crons

    1. 我剛纔的所有的cron複製從開發到刺。你可以在bash腳本中完成。

      的crontab -r #remove目前所有的cron作業
      的crontab cron.txt#放在cron.txt列出的所有cronjobs

關於上面的最好的部分步驟:你可以把所有上述步驟都在bash腳本中並在一行中執行。這將像你自己的軟件,只需點擊一下按鈕;) 我爲自己製作了「一鍵式」腳本,但它們只針對tomcat和Elastic Beanstalk。你可以看看它可能給你如何進行的一些想法:AWS Deploy

最重要的:取兩個數據庫的數據庫備份第一督促服務器上運行SQL查詢之前。請使用VCS(git,bitbucket是一個不錯的選擇)來保證所有更改的安全。