php脚本实现git自动化,使用PHP脚本远程部署git项目
準備工作:
1.coding.net創建私有項目
2.安裝了Web服務 Git服務的服務器
服務器端:
1.nginx、php-fpm統一用www用戶 www 目錄,這個可以通過修改配置文件實現。
[root@yz_test www]# ps -ef|grep nginx
root 7826 1 0 Jul01 ? 00:00:00 nginx: master process nginx
www 7827 7826 0 Jul01 ? 00:00:01 nginx: worker process
root 9482 9437 0 06:33 pts/0 00:00:00 grep nginx
[root@yz_test www]# ps -ef|grep php-fpm
root 7800 1 0 Jul01 ? 00:00:00 php-fpm: master process (/usr/local/php-5.6.22/etc/php-fpm.conf)
www 7801 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7802 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7803 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7804 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7805 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7806 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7807 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7808 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7809 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7810 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7811 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7812 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7813 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7814 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7815 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7816 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7817 7800 0 Jul01 ? 00:00:01 php-fpm: pool www
www 7818 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7819 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
www 7820 7800 0 Jul01 ? 00:00:00 php-fpm: pool www
root 9484 9437 0 06:34 pts/0 00:00:00 grep php-fpm
2.生成Git用戶公鑰:用于clone時認證權限
ssh-keygen -t rsa -C "wangzhenxian@foxmail.com"
# 然后一直回車就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請查看提示上的路徑
3.生成部署公鑰
sudo -Hu www ssh-keygen -t rsa # 請選擇 "no passphrase",一直回車下去
sudo cat /home/www/.ssh/id_rsa.pub # 查看生成的密鑰內容,復制全部
4.準備鉤子目錄 項目目錄
chown -R www:www /www/hook
chown -R www:www /www/repos
sudo -Hu www touch /mnt/www/hook/index.php
error_reporting(1);
// 生產環境web目錄
$target = '/home/wwwroot/website.com';
$token = '您在coding填寫的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';
$json = json_decode(file_get_contents('php://input'),true);
if (empty($json['token'])||$json['token']!==$token) {
exit('error request');
}
$repo = $json['repository']['name'];
$cmd = "sudo -Hu www cd $target && git pull";
shell_exec($cmd);
5.修改git配置和保存git用戶名密碼
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "wangzhenxian"
sudo -Hu www git config --global user.email "wangzhenxian@foxmail.com" # 郵箱請與conding上一致
在Coding.net
1.添加用戶公鑰
2.添加部署公鑰
3.添加hook
個人感悟:
1.nginx .php-fpm 執行的用戶組、用戶保持統一
2.生產www用戶的公鑰,確保www用戶在執行操作時 能從/home/www/.ssh 目錄下到到公鑰。
參閱:
http://blog.csdn.net/liu510817387/article/details/51594699
http://overtrue.me/articles/2015/01/how-to-deploy-project-with-git-hook.html
使用idea來部署git項目
使用idea來部署git項目 一).將項目交由git管理 VCS ---->import into Version Cntorl ------>create Git Repository ...
idea遠程部署SpringBoot項目到Docker
安裝docker服務或者系統學習docker參考這篇文檔:https://shimo.im/docs/fE0eJCx8IIojQXzB/ 1.配置docker的遠程端口 vim /usr/lib/sy ...
Jenkins與Git持續集成&;&;Linux上遠程部署Java項目
一.環境搭建 1.安裝所需軟件 Jdk Maven Jenkins Tomcat Xshell git 以上軟件去官網下載,比較簡單,不一一描述了 2.安裝所需的jenkins插件 Git plugi ...
腳本:將git項目下載到本地并啟動
大致思路:從git上clone源代碼到本地:使用mvn package將源代碼達成war/jar包:將打好的包放到tomcatpath/webapps/下:到tomcatpath/bin/下執行res ...
ant+Jacoco 統計tomcat遠程部署后項目接口自動化測試或者功能測試代碼覆蓋率
1.安裝ant 環境,https://ant.apache.org/bindownload.cgi 2.下載jacoco包 ?https://www.eclemma.org/jacoco/ ,解壓后, ...
利用WebHook實現PHP自動部署Git代碼
平時項目代碼都托管在Coding,然后每次提交了代碼之后都要SSH到服務器上去git pull一次,很是繁瑣,在看了OverTrue的后就嘗試在自己服務 ...
Jenkins部署git+python項目實現持續集成
目錄 1. 創建 item 2. 配置 3. 構建 1. 創建 item 接下來填寫創建任務的名字,并選擇創建一個 Freestyle project ,點擊確認. 2. 配置 接下來進入到項目相關配 ...
圖文詳解遠程部署ASP.NET MVC 5項目
話外篇: 由于感覺自己的機器比較慢,配置不好,所以最近想把之前的項目部署到實驗室的服務器上,但是由于常不在實驗室,所以在想能不能遠程部署.因此今天專門研究了一下具體的過程,下面和大家分享一下.本人新手 ...
圖文詳解遠程部署ASP.NET MVC 5項目 [轉載]
話外篇: 由于感覺自己的機器比較慢,配置不好,所以最近想把之前的項目部署到實驗室的服務器上,但是由于常不在實驗室,所以在想能不能遠程部署.因此今天專門研究了一下具體的過程,下面和大家分享一下.本人新手 ...
隨機推薦
zynq中uboot的qspi啟動報錯及解決辦法
問題描述: 用u-boot-xlnx-v2016.3版本編譯的uboot通過qspi flash啟動出現如下錯誤: 嘗試在uboot命令行輸入"sf probe 0 0 0"掛載q ...
node.js調試
用了幾天node.js感覺很新奇,但是調試問題實在是愁煞人,開始的時候懶的學習調試方法,看看異常內容就可以了,但隨著代碼復雜程度的上升,并不是所有錯誤都是語法錯誤了,不調試搞不定了,只好搜搜資料,學習 ...
增加oracle數據庫最大連接數
這幾天碰到系統不能登陸的情況,初步判斷可能是數據庫連接滿了,(后來檢查不是這個原因),做了一次增加數據庫最大連接數操作.操作步驟如下 操作系統:Red Hat Enterprise Linux Ser ...
postal.js使用
requirejs.config({ //默認情況下模塊所在目錄為js/lib baseUrl: './', //當模塊id前綴為app時,他便由js/app加載模塊文件 //這里設置的路徑是相對與b ...
【Android進階】在開發中Application到底用來做什么
首先,在一個Android程序中,有且只有一個Application對象,在程序開始跑起來的時候,首先執行Application的onCreate方法,這是一個Android應用的入口,在開發中,我們 ...
iOS學習——Quartz2D學習之UIKit繪制
iOS學習——Quartz2D學習之UIKit繪制 1.總述 在IOS中繪圖技術主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...
lvs介紹
1Linux集群及系統擴展的方式概述 集群是有多臺服務器組織在一起,一起工作,因為單臺服務器的并發響應能力是有限的,響應處理能力也是有限的所有有了集群的出現 在系統擴展有2種方法: 1 向上擴展:是指 ...
array_udiff_uassoc
PHP array_udiff_uassoc 函數 一.函數功能: 計算出第一個數組與其他數組的差集(考慮鍵名和鍵值,對鍵名和鍵值的比較都使用自定義函數).比較兩到多個數組,找出第一個數組中不包含在其 ...
python---方法解析順序MRO(Method Resolution Order)<;以及解決類中super方法>;
MRO了解: 對于支持繼承的編程語言來說,其方法(屬性)可能定義在當前類,也可能來自于基類,所以在方法調用時就需要對當前類和基類進行搜索以確定方法所在的位置.而搜索的順序就是所謂的「方法解析順序」(M ...
總結
以上是生活随笔為你收集整理的php脚本实现git自动化,使用PHP脚本远程部署git项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 维度建模基本流程总结
- 下一篇: 笔刷为何是php文件,知乎JohnPar