這次的這篇文章給大家分享的內容是關於PHP專案版本控制和發布流程,有需要的小夥伴可以看一下
#一、【 本地==> GIT倉庫==>測試服】提交GIT倉庫完成時,GIT觸發測試服鉤子腳本自動PULL更新程式碼:
#測試服
執行原則-
PHP腳本:/home/git/hook/
www.xxx.com.php ##,註:需在php.ini將disable_function裡的system刪除(即啟用腳本執行權限)
- git push時,觸發倉庫POST呼叫PHP腳本,PHP腳本的URL:
http://XXX.XXX.COM/hook/www.xxx.com.php
#PHP腳本再延時執行SHELL腳本,該SHELL腳本實作從倉庫拉取程式碼
- 查看目前remote url與協定: git remote -v
- 複製oschina中專案的git ssh的位址:git@git.oschina.net:echobar/test.git
- 修改為ssh協定與位址:git remote set-url origin git@git.oschina.net: echobar/test.git
- git pull
- #為www使用者建立home目錄(公鑰、GIT屬主全部設為www,否則可能造成權限不足,無法自動執行SHELL腳本)
- 產生公鑰
- 查看公鑰:cat ~/.ssh/id_rsa. pub
- 將其拷貝到git.oschina.net的公鑰設定裡
- mkdir /home/www && chown -R www: www /home/www
- sudo -u www ssh-keygen -t rsa -C "15516026@qq.com"
- #yum - y insall git
- cd /home
#sudo -u www git clone git@git.oschina.net:echobar/test.git
-
安裝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
- ,註:別忘記執行權限chmod a+x *.sh
#!/bin/bash- cd /home/www.xxx.com && git pull#log
- 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
- 建立私有項目www.xxx.com
#設定webhook位址為以上測試服的php腳本URL: - http://XXX.XXX.COM/hook/www.xxx.com.php
####加入公鑰至專案或個人使用者設定裡(建議個人使用者設定裡,所有專案即可以全域使用同一個公鑰)###############本機##############git clone
###https://git.oschina.net/echobar/www.xxx.com.git#######
注意.gitignore,設定排除不需同步的檔案和目錄
#增加/修改檔案
git add .
#git commit -m test
- ## git pull
- git rebase master
#git push
##sudo -Hu www git config --global user.name "echobar" sudo -Hu www git config --global user.email "15516026@qq.com" # 信箱請與oschina上一致 git配置 git提交本地程式碼到倉庫 查看oschina上查看專案檔案是否更新成功 查看測試服程式碼是否更新,如更新,即表示配置成功;如有時成功有時失敗,則可能是鉤子呼叫的延時問題,需要修改PHP腳本延遲時間,或手動執行以下程式碼來拉取:- http://xxx.xxx.com/hook/www.xxx.com.php?HTTP_USER_AGENT=git-oschina-hook
#二、【 測試服==> 正式服】編寫遠端同步腳本,發佈時手動執行,同步方式:RSYNC+SSH
ssh
yum -y install ssh-
##測試服產生公鑰:ssh-keygen
-
測試服拷貝公鑰到正式服務:ssh-copy-id -i ~/.ssh/id_rsa.pub 目標伺服器IP(需輸入遠端伺服器密碼)
rsync
#yum -y install rsync
建立同步腳本:touch /home/rsync_
www.xxx.com_from_test_to_prod.sh-
,註:--exclude-from排除檔案清單裡,注意排除不需要同步的檔案
#!/bin/sh
# backupssh root@10.10.10.10 "/bin/sh /root/scripts/ backup_html.sh"# rsyncrsync -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_www.xxx.com_from_test_to_prod.sh
附註:以上黃色部分,即分別為本地發佈到測試服、以及測試服發佈到正式服需要操作的程式碼
。
#以上是PHP專案版本控制和發布流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!