首頁  >  文章  >  後端開發  >  PHP專案版本控制和發布流程

PHP專案版本控制和發布流程

不言
不言原創
2018-04-26 14:39:074763瀏覽

這次的這篇文章給大家分享的內容是關於PHP專案版本控制和發布流程,有需要的小夥伴可以看一下




#一、【 本地==> GIT倉庫==>測試服】提交GIT倉庫完成時,GIT觸發測試服鉤子腳本自動PULL更新程式碼:

  1. #測試服

    1. 執行原則
    2. PHP腳本:/home/git/hook/

      www.xxx.com.php
    3. ##,註:需在php.ini將disable_function裡的system刪除(即啟用腳本執行權限)
    4. git push時,觸發倉庫POST呼叫PHP腳本,PHP腳本的URL:

      http://XXX.XXX.COM/hook/www.xxx.com.php

    5. #PHP腳本再延時執行SHELL腳本,該SHELL腳本實作從倉庫拉取程式碼
    6. 查看目前remote url與協定: git remote -v

    7. 複製oschina中專案的git ssh的位址:git@git.oschina.net:echobar/test.git

    8. 修改為ssh協定與位址:git remote set-url origin git@git.oschina.net: echobar/test.git

    9. git pull

    10. #為www使用者建立home目錄(公鑰、GIT屬主全部設為www,否則可能造成權限不足,無法自動執行SHELL腳本)

    11. 產生公鑰

    12. 查看公鑰:cat ~/.ssh/id_rsa. pub

    13. 將其拷貝到git.oschina.net的公鑰設定裡

    14. mkdir /home/www && chown -R www: www /home/www

    15. sudo -u www ssh-keygen -t rsa -C "15516026@qq.com"

    16. #yum - y insall git

    17. cd /home

      #sudo -u www git clone git@git.oschina.net:echobar/test.git
    18. 安裝git,用www用戶複製專案

設定公鑰

測試手動拉取程式碼

寫出拉取GIT程式碼的鉤子腳本

    ##

    $params = $_GET + $_POST + $_SERVER;if (isset($params['HTTP_USER_AGENT']) && $params['HTTP_USER_AGENT'] == 'git-oschina-hook') {sleep(10);

    $cmd = "/home/git/hook/www.xxx.com.sh";

system($cmd, $ rs);

}

SHELL腳本:/home/git/hook/

www.xxx.com.sh
  1. ,註:別忘記執行權限chmod a+x *.sh

  2. #!/bin/bash
    1. cd /home/www.xxx.com && git pull

      #log
    2. echo "`date +%Y%m%d_%H%M%S`,Pull code success[Master]" >> "/home/git /hook/log/pull_www.xxx.com_`date +%Y%m`.log"

      GIT倉庫託管程式碼:https://git.oschina.net
  3. 建立私有項目www.xxx.com

    1. #設定webhook位址為以上測試服的php腳本URL:
    2. http://XXX.XXX.COM/hook/www.xxx.com.php

      ####加入公鑰至專案或個人使用者設定裡(建議個人使用者設定裡,所有專案即可以全域使用同一個公鑰)###############本機##############git clone ###https://git.oschina.net/echobar/www.xxx.com.git#######
    3. 注意.gitignore,設定排除不需同步的檔案和目錄

    4. #增加/修改檔案

    5. git add .

    6. #git commit -m test

    7. ## git pull

    8. git rebase master

    9. #git push

    10. ##sudo -Hu www git config --global user.name "echobar"
    11. sudo -Hu www git config --global user.email "15516026@qq.com" # 信箱請與oschina上一致
    12. git配置
    13. git提交本地程式碼到倉庫
    14. 查看oschina上查看專案檔案是否更新成功
    15. 查看測試服程式碼是否更新,如更新,即表示配置成功;如有時成功有時失敗,則可能是鉤子呼叫的延時問題,需要修改PHP腳本延遲時間,或手動執行以下程式碼來拉取:
    16. http://xxx.xxx.com/hook/www.xxx.com.php?HTTP_USER_AGENT=git-oschina-hook

    #二、【 測試服==> 正式服】編寫遠端同步腳本,發佈時手動執行,同步方式:RSYNC+SSH

      ssh
      1. yum -y install ssh
      2. ##測試服產生公鑰:ssh-keygen
      3. 測試服拷貝公鑰到正式服務:ssh-copy-id -i ~/.ssh/id_rsa.pub 目標伺服器IP(需輸入遠端伺服器密碼)
      4. rsync
    1. #yum -y install rsync
      1. 建立同步腳本:touch /home/rsync_
      www.xxx.com_from_test_to_prod.sh
    2. ,註:--exclude-from排除檔案清單裡,注意排除不需要同步的檔案

      #!/bin/sh
    # backup

    ssh root@10.10.10.10 "/bin/sh /root/scripts/ backup_html.sh"

    # rsync

    rsync -rlptDvz --exclude-from=exclude_www.xxx.com -e ssh /home/www.xxx.com/ root@

    10.10 .10.10

    :/home/wwwdata/www.xxx.com

    #執行測試服到正式服的同步(rsync+ssh)
      #/home/rsync_
    1. www.xxx.com_from_test_to_prod.sh


    附註:以上黃色部分,即分別為本地發佈到測試服、以及測試服發佈到正式服需要操作的程式碼

    #

    以上是PHP專案版本控制和發布流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn