日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
git自動化部署php腳本怎么實現(xiàn)

本文操作環(huán)境:linux5.9.8系統(tǒng)、Git 2.30.0版、DELL G3電腦

創(chuàng)新互聯(lián)長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為豐縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站建設(shè),豐縣網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

git自動化部署php腳本怎么實現(xiàn)?

git+php部署webhook自動化腳本 實現(xiàn)代碼同步

本文將介紹git+php部署webhook自動化腳本 實現(xiàn)代碼同步
git配合webhook自動化部署不算是個高深的技術(shù),但是第一次自己部署中走了很多彎路,主要自己在linux方面算是個菜雞,本文記錄一下容易出錯的問題點,遇到的坑
準(zhǔn)備
lnmp環(huán)境下部署可訪問的web域名,服務(wù)端php腳本,倉庫碼云gitee

自動化流程,本地push->gitee倉庫webhook->linux服務(wù)器php腳本pull
首先在gitee碼云上創(chuàng)建倉庫
本地使用ssh協(xié)議與倉庫進(jìn)行通訊,我的本地是windows,這里就不介紹怎么生成ssh公鑰,下面linux下將會介紹

1.安裝git

yum install git

2.克隆倉庫代碼《注意一定要使用ssh協(xié)議,后面都是基于ssh》

git initgit clone git@gitee.com:zhuyanbin/HiAdmin.git

3.更改linux權(quán)限,修改配置
因為我們webhook去通知服務(wù)端屬于外部訪問,所以這里的管理員用戶默認(rèn)是www用戶,所以要給定www足夠的權(quán)限才行

vim /etc/passwd
添加下面的一行
www:x:1001:1001::/home/www:/bin/bash

1001是用戶組的id,使用以下命令可查看用戶www的id

cat /etc/group

將www用戶加入sudoers并可以無密碼執(zhí)行shell

#(1)為當(dāng)前用戶添加寫入sudoers的權(quán)限

chmod u+w /etc/sudoers

#(2)編輯sudoers

vim /etc/sudoers

#(3)搜索Allow root to run any commands anywhere,在root用戶對應(yīng)行下寫入如下內(nèi)容:

www     ALL=(ALL)       NOPASSWD:/usr/bin/git

#(4)收回對sudoers的寫入權(quán)限

chmod u-w /etc/sudoers


修改php-fpm.conf配置設(shè)置訪問者,我這里是www,也就是php已經(jīng)默認(rèn)的配置


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

將生成好的公鑰復(fù)制到gitee碼云倉庫公鑰填寫處
https://gitee.com/profile/sshkeys

補充:gitee填寫公鑰的地方有兩個,一個是倉庫的公鑰,如果填寫到倉庫的公鑰,服務(wù)端git權(quán)限將只有pull的權(quán)限,另一個是賬號的公鑰,如果填寫到個人賬號的公鑰,將會有pull,push等權(quán)限,我這里直接使用的個人賬號公鑰
5.最后填寫webhook域名,上php腳本
填寫webhook通知地址域名(密碼設(shè)置的空,后面php中沒有密碼驗證,如果考慮安全,請在后面設(shè)置密碼)

上php腳本處理程序hook.php(執(zhí)行l(wèi)inux命令)

    chdir("/home/wwwroot/default/HiAdmin");
    exec("git pull origin master 2>&1", $out);
    foreach($out as $v)
    {
        echo iconv( 'GB2312','UTF-8', $v)."
"; }

到此,配置完以上服務(wù)端代碼可自動同步,完成自動化部署

出現(xiàn)問題

1.php腳本不執(zhí)行
原因php.ini中php很多函數(shù)是默認(rèn)沒打開包括執(zhí)行l(wèi)inux腳本函數(shù)exec(),shell_exec()等等
找到php.ini,找到disable_functions那一行刪除相應(yīng)的函數(shù)即可,或者整行注釋掉

2.無法執(zhí)行g(shù)it pull命令

問題一

Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

歸根結(jié)底還是因為linux權(quán)限的問題,我遇到的是出現(xiàn)一下問題

到這里的原因是因為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

這個還是沒有權(quán)限執(zhí)行g(shù)it命令,只需要執(zhí)行以下

第一步:cd .git/objects  定位到git下的objects文件下
第二步: ls -al 查看git庫的所有者(git用戶 git組)
第三步: chown -R yourname:yourgrounp * 或者sudo chmod 777 -R .git/objects 提交

最后解決完以上問題,大功告成,上一張成功的截圖

自己的后端語言是php,這里可以用多種方式去實現(xiàn)執(zhí)行l(wèi)inux腳本,nodejs,python等等


分享標(biāo)題:git自動化部署php腳本怎么實現(xiàn)
URL地址:http://www.5511xx.com/article/dpsdosc.html