git自動化部署php腳本怎麼實現
git自動化部署php腳本的實作方法:1、安裝git;2、複製倉庫程式碼;3、更改linux權限,修改設定;4、將www使用者加入sudoers;5、產生金鑰;6 、填寫webhook域名,上傳php腳本即可。
本文操作環境:linux5.9.8系統、Git 2.30.0版、DELL G3電腦
##git自動化部署php腳本怎麼實現?
git php部署webhook自動化腳本實現程式碼同步
本文將介紹git php部署webhook自動化腳本實現程式碼同步
git配合webhook自動化部署不算是個高深的技術,但第一次自己部署走了很多彎路,主要自己在linux方面算是個菜雞,本文記錄一下容易出錯的問題點,遇到的坑
準備
lnmp環境下部署可訪問的web域名,服務端php腳本,倉庫碼雲gitee
自動化流程,本地push->gitee倉庫webhook->linux伺服器php腳本pull
首先在gitee碼雲端上建立倉庫
yum install git
git initgit clone git@gitee.com:zhuyanbin/HiAdmin.git
因為我們webhook去通知服務端屬於外部訪問,所以這裡的管理員用戶預設是www用戶,所以要給定www足夠的權限才行
vim /etc/passwd 添加下面的一行 www:x:1001:1001::/home/www:/bin/bash
1001是用戶群組的id,使用以下命令可查看用戶www的id
cat /etc/group
將www用戶加入sudoers並且可以無密碼執行shell
#(1)為目前使用者新增寫入sudoers的權限
chmod u+w /etc/sudoers
#(2)編輯sudoers
vim /etc/sudoers
#(3)搜尋Allow root to run any commands anywhere,在root使用者對應行下寫入如下內容:
www ALL=(ALL) NOPASSWD:/usr/bin/git
#(4)收回對sudoers的寫入權限
chmod u-w /etc/sudoers
# 修改php-fpm. conf配置設定訪問者,我這裡是www,也就是php已經預設的設定
4.最後產生金鑰(此步必須是www使用者產生金鑰,ps:在這個地方卡了兩天,一直使用root管理員帳號生成,百度了好幾天,嘗試各種方法,後來切換到www用戶生成密鑰之後一切ok)
#生成公鑰密鑰
mkdir -p /home/www/.ssh
chown -R www.www /home/www/.ssh
ssh-keygen -t rsa
查看公鑰金鑰
cat /home/www/.ssh/id_rsa.pub

https://gitee.com/profile/sshkeys 補充:gitee填寫公鑰的地方有兩個,一個是倉庫的公鑰,如果填寫到倉庫的公鑰,服務端git權限將只有pull的權限,另一個是帳號的公鑰,如果填寫到倉庫的公鑰,服務端git權限將只有pull的權限,另一個是帳號的公鑰鑰,如果填寫到個人帳號的公鑰,將會有pull,push等權限,我這裡直接使用的個人帳號公鑰
5.最後填寫webhook域名,上php腳本 填寫webhook通知地址域名(密碼設定的空,後面php中沒有密碼驗證,如果考慮安全,請在後面設定密碼)
# 上php腳本處理程序hook.php(執行linux指令)
chdir("/home/wwwroot/default/HiAdmin"); exec("git pull origin master 2>&1", $out); foreach($out as $v) { echo iconv( 'GB2312','UTF-8', $v)."<br>"; }
到此,配置完以上服務端程式碼可自動同步,完成自動化部署

出現問題1.php腳本不執行
原因php. ini中php很多函數是預設沒開啟包含執行linux腳本函數exec(),shell_exec()等等
找到php.ini,找到disable_functions那一行刪除對應的函式即可,或是整行註解掉
归根结底还是因为linux权限的问题,我遇到的是出现一下问题
到这里的原因是因为root生成git公钥密钥,而切换到www后生成公钥密钥后就成功了(上述第四小步生成公钥,一定使用www生成公钥密钥)
问题二
error: insufficient permission for adding an object to repository database .git/objects
fatal: failed to write object
fatal: unpack-objects failed
这个还是没有权限执行git命令,只需要执行以下
第一步:cd .git/objects 定位到git下的objects文件下 第二步: ls -al 查看git库的所有者(git用户 git组) 第三步: chown -R yourname:yourgrounp * 或者sudo chmod 777 -R .git/objects 提交
最后解决完以上问题,大功告成,上一张成功的截图
自己的后端语言是php,这里可以用多种方式去实现执行linux脚本,nodejs,python等等
推荐学习:《PHP视频教程》
以上是git自動化部署php腳本怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

更新 git 代碼的步驟:檢出代碼:git clone https://github.com/username/repo.git獲取最新更改:git fetch合併更改:git merge origin/master推送更改(可選):git push origin master

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

解決 Git 下載速度慢時可採取以下步驟:檢查網絡連接,嘗試切換連接方式。優化 Git 配置:增加 POST 緩衝區大小(git config --global http.postBuffer 524288000)、降低低速限制(git config --global http.lowSpeedLimit 1000)。使用 Git 代理(如 git-proxy 或 git-lfs-proxy)。嘗試使用不同的 Git 客戶端(如 Sourcetree 或 Github Desktop)。檢查防火

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

在開發一個電商網站時,我遇到了一個棘手的問題:如何在大量商品數據中實現高效的搜索功能?傳統的數據庫搜索效率低下,用戶體驗不佳。經過一番研究,我發現了Typesense這個搜索引擎,並通過其官方PHP客戶端typesense/typesense-php解決了這個問題,大大提升了搜索性能。
