摘要:要求實(shí)現(xiàn)直接完成代碼部署到服務(wù)器的目錄實(shí)現(xiàn)方式利用的中的來(lái)實(shí)現(xiàn)代碼提交完成之后的動(dòng)作。對(duì)于代碼部署目錄和倉(cāng)庫(kù)我們已經(jīng)通過(guò)進(jìn)行了關(guān)聯(lián)了,因?yàn)槲覀円坏⒋a到倉(cāng)庫(kù),那么會(huì)自動(dòng)檢出到目錄下。
要求
實(shí)現(xiàn)git push 直接完成代碼部署到服務(wù)器的目錄
實(shí)現(xiàn)方式利用git的hooks中的post-receive來(lái)實(shí)現(xiàn)代碼提交完成之后的動(dòng)作。將倉(cāng)庫(kù)指定一個(gè)--work-tree然后進(jìn)行檢出操作checkout --force
目錄結(jié)構(gòu)我自己的項(xiàng)目結(jié)構(gòu)是這樣的,每一個(gè)倉(cāng)庫(kù)對(duì)應(yīng)一個(gè)項(xiàng)目,例如public/wx項(xiàng)目對(duì)應(yīng)repo/wx.git倉(cāng)庫(kù)
. ├── public │?? └── wx // 這是我們的web代碼部署目錄 │?? ├── index.php │?? ├── test2.php │?? ├── test3.php │?? └── test.php └── repo // 這個(gè)是我們的倉(cāng)庫(kù)目錄 └── wx.git // 這個(gè)對(duì)應(yīng)wx項(xiàng)目的倉(cāng)庫(kù) ├── branches ├── config ├── description ├── HEAD ├── hooks // post-receive鉤子代碼寫(xiě)在這里面 ├── index ├── info ├── objects └── refs
再看下hooks文件目錄
. ├── applypatch-msg.sample ├── commit-msg.sample ├── post-commit.sample ├── post-receive ├── post-receive.sample ├── post-update.sample ├── pre-applypatch.sample ├── pre-commit.sample ├── prepare-commit-msg.sample ├── pre-rebase.sample └── update.sample
我們將post-receive.sample復(fù)制一份post-receive,并且編寫(xiě)代碼如下
# 指定我的代碼檢出目錄 DIR=/www/public/wx git --work-tree=${DIR} clean -fd # 直接強(qiáng)制檢出 git --work-tree=${DIR} checkout --force如何生成目錄
上面看到的repo目錄中的wx.git實(shí)際上是一個(gè)裸倉(cāng)庫(kù),我們用下面的命令來(lái)生成這樣一個(gè)倉(cāng)庫(kù)。
cd /www/repo git init --bare wx.git
對(duì)于代碼部署目錄和倉(cāng)庫(kù)我們已經(jīng)通過(guò)post-receive進(jìn)行了關(guān)聯(lián)了,因?yàn)槲覀円坏⒋apush到倉(cāng)庫(kù),那么會(huì)自動(dòng)檢出到publish/wx目錄下。
遠(yuǎn)程部署在本地電腦上,我們添加遠(yuǎn)程倉(cāng)庫(kù)
git init git remote add origin root@xxx.xxx.xxx.xxx:/www/repo/wx.git
這個(gè)時(shí)候我們添加了遠(yuǎn)程倉(cāng)庫(kù),那么我們來(lái)測(cè)試下push操作
touch index.php git add . git commit -m "test" git push
可能會(huì)提示一個(gè)--set-upstream,直接執(zhí)行下就好了。執(zhí)行完之后我們登陸服務(wù)器,會(huì)發(fā)現(xiàn)文件已經(jīng)出現(xiàn)在public/wx/index.php
注意點(diǎn)如果我們沒(méi)有配置ssh免密碼登陸的話(huà),我們需要在push代碼的時(shí)候輸入密碼
如果我們添加的遠(yuǎn)程倉(cāng)庫(kù)不是root@xxx.xxx.xx.xx,例如是abc@xx.xx.xx.xx,那么我們要確保abc用戶(hù)對(duì)wx.git目錄下的文件有777權(quán)限。
新增倉(cāng)庫(kù)需要登陸遠(yuǎn)程服務(wù)器進(jìn)行初始化repo_name.git倉(cāng)庫(kù)
需要手動(dòng)創(chuàng)建public/repo_name文件夾,并且修改權(quán)限為777
需要重新編寫(xiě)hooks/post-recieve文件,修改里面的DIR路徑為public/repo_name
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/23255.html
摘要:以上命令表示到網(wǎng)站目錄,并更新。隨后還要把改成可執(zhí)行本地環(huán)境提交代碼至服務(wù)器 原理和流程 1、git用戶(hù)執(zhí)行 git push 操作 2、遠(yuǎn)程倉(cāng)庫(kù)發(fā)現(xiàn)有用戶(hù)執(zhí)行了push操作,就會(huì)執(zhí)行一個(gè)腳本 post-receive(鉤子) 3、在 post-receive 腳本中,將git倉(cāng)庫(kù)的代碼拷貝到web站點(diǎn)目錄下 1、進(jìn)入服務(wù)器安裝git,并建立倉(cāng)庫(kù) sudo yum install g...
摘要:搭建服務(wù)器編寫(xiě)自動(dòng)部署腳本今天試了下在服務(wù)器上搭建服務(wù)器,并且編寫(xiě)一個(gè)簡(jiǎn)單的自動(dòng)部署腳本。好了,試試吧原文連接搭建服務(wù)器編寫(xiě)自動(dòng)部署腳本更多分享知識(shí)點(diǎn)請(qǐng)掃碼關(guān)注 搭建Git服務(wù)器、編寫(xiě)自動(dòng)部署腳本 showImg(https://segmentfault.com/img/bVbs9fB?w=675&h=221); 今天試了下在linux服務(wù)器上搭建Git服務(wù)器,并且編寫(xiě)一個(gè)簡(jiǎn)單的自動(dòng)部...
原文鏈接 隨著Vateral主題的開(kāi)發(fā)接近了尾聲,在對(duì)主題速度優(yōu)化的時(shí)候發(fā)現(xiàn)之前用的githubpage問(wèn)題多多:首先就是因?yàn)樵趪?guó)內(nèi)的原因,訪(fǎng)問(wèn)速度本身就很慢,曾經(jīng)有次加載一張16kb的圖標(biāo)時(shí)間耗費(fèi)了26s?。??其次,在對(duì)資源做CDN托管加速時(shí),域名是需要備案的,顯然githubpage也是做不了的;所以果斷舍棄了這個(gè)把hexo搭建到了我的阿里云服務(wù)器上 總體來(lái)說(shuō)還是比把hexo搭建到github...
摘要:博客的架構(gòu)先搞明白博客從搭建到自動(dòng)發(fā)布的架構(gòu),才能更好的理解我們每一步進(jìn)行的操作。整個(gè)搭建流程第一部分服務(wù)器環(huán)境搭建,包括安裝配置創(chuàng)建用戶(hù)。在裸庫(kù)的文件夾中,新建文件。 1. 博客的架構(gòu) 先搞明白Hexo博客從搭建到自動(dòng)發(fā)布的架構(gòu),才能更好的理解我們每一步進(jìn)行的操作。不然只跟著步驟過(guò)了一遍,卻不知道為什么這么做。 首先看這張架構(gòu)圖:showImg(https://segmentfaul...
閱讀 2541·2021-11-18 10:02
閱讀 2025·2021-10-13 09:40
閱讀 3066·2021-09-07 10:07
閱讀 2190·2021-09-04 16:48
閱讀 1076·2019-08-30 13:18
閱讀 2511·2019-08-29 14:03
閱讀 2994·2019-08-29 12:54
閱讀 3215·2019-08-26 11:41