摘要:搭建服務器編寫自動部署腳本今天試了下在服務器上搭建服務器,并且編寫一個簡單的自動部署腳本。好了,試試吧原文連接搭建服務器編寫自動部署腳本更多分享知識點請掃碼關注
搭建Git服務器、編寫自動部署腳本
今天試了下在linux服務器上搭建Git服務器,并且編寫一個簡單的自動部署腳本。
主要參考 廖雪峰-GIT教程-搭建Git服務器
現(xiàn)在開始吧!
創(chuàng)建一個git用戶,用來運行git服務
adduser git
創(chuàng)建證書登錄
收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。
初始化Git倉庫
先選定一個目錄作為Git倉庫,假定是/home/git/sample.git,在/home/git目錄下輸入命令:
git init --bare sample.git
Git就會創(chuàng)建一個裸倉庫,裸倉庫沒有工作區(qū),因為服務器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到服務器上去改工作區(qū),并且服務器上的Git倉庫通常都以.git結(jié)尾。然后,把owner改為git
chown -R git:git sample.git
禁用git用戶shell登錄
通過編輯/etc/passwd文件完成,找到你的git用戶的一行,例如:
git:x:1001:1001:,,,:/home/git:/bin/bash
把/bin/bash改為/usr/bin/git-shell,例如:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們?yōu)間it用戶指定的git-shell每次一登錄就自動退出。
克隆遠程倉庫
git clone git@server:sample.git
server是你的服務器域名或ip地址
如果git倉庫和web目錄在同一臺服務器主機上:
git clone /home/git/sample.git
如果不是在git用戶的家目錄中創(chuàng)建的,比如/srv/gits/sample.git:
git clone git@server:/srv/gits/sample.git
如果clone成功,那么你的git服務器就搭建成功了。
接下來:
自動同步鉤子腳本
因為我是web目錄和git是同一臺服務器
編輯 /home/git/sample.git/hooks/post-receive, post-receive就是在git服務器收到代碼推送后(push完成之后)執(zhí)行的腳本。
#!/bin/sh while read oldrev newrev refname do branch=$(git rev-parse --symbolic --abbrev-ref $refname) if [ "master" == "$branch" ]; then # Do something echo "post-receive in branch master" >> /tmp/git-sample.log unset GIT_DIR wwwPath=/var/www/html/sample cd $wwwPath && /usr/bin/git pull origin master exit 0 fi done
從腳本內(nèi)容可以看出,我們在判斷當前push的分支是master時執(zhí)行git pull origin master操作。
給執(zhí)行權(quán)限:
chown -R git:git /home/git/sample.git/hooks/post-receive chmod +x /home/git/sample.git/hooks/post-receive
因為是git倉庫和web目錄在同一臺服務器主機上,這里clone使用的是:
git clone /home/git/sample.git
因為同步腳本的執(zhí)行用戶是git,所以要保證項目目錄要賦予git寫權(quán)限。容易出問題的也是權(quán)限問題。
好了,試試吧~
原文連接:
搭建Git服務器-編寫自動部署腳本
?
更多分享知識點,請掃碼關注:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/31579.html
摘要:從到再到搭建編寫構(gòu)建一個前端項目選擇現(xiàn)成的項目模板還是自己搭建項目骨架搭建一個前端項目的方式有兩種選擇現(xiàn)成的項目模板自己搭建項目骨架。使用版本控制系統(tǒng)管理源代碼項目搭建好后,需要一個版本控制系統(tǒng)來管理源代碼。 從 0 到 1 再到 100, 搭建、編寫、構(gòu)建一個前端項目 1. 選擇現(xiàn)成的項目模板還是自己搭建項目骨架 搭建一個前端項目的方式有兩種:選擇現(xiàn)成的項目模板、自己搭建項目骨架。 ...
摘要:從到再到搭建編寫構(gòu)建一個前端項目選擇現(xiàn)成的項目模板還是自己搭建項目骨架搭建一個前端項目的方式有兩種選擇現(xiàn)成的項目模板自己搭建項目骨架。使用版本控制系統(tǒng)管理源代碼項目搭建好后,需要一個版本控制系統(tǒng)來管理源代碼。 從 0 到 1 再到 100, 搭建、編寫、構(gòu)建一個前端項目 1. 選擇現(xiàn)成的項目模板還是自己搭建項目骨架 搭建一個前端項目的方式有兩種:選擇現(xiàn)成的項目模板、自己搭建項目骨架。 ...
摘要:從到再到搭建編寫構(gòu)建一個前端項目選擇現(xiàn)成的項目模板還是自己搭建項目骨架搭建一個前端項目的方式有兩種選擇現(xiàn)成的項目模板自己搭建項目骨架。使用版本控制系統(tǒng)管理源代碼項目搭建好后,需要一個版本控制系統(tǒng)來管理源代碼。 從 0 到 1 再到 100, 搭建、編寫、構(gòu)建一個前端項目 1. 選擇現(xiàn)成的項目模板還是自己搭建項目骨架 搭建一個前端項目的方式有兩種:選擇現(xiàn)成的項目模板、自己搭建項目骨架。 ...
摘要:而利用的功能,能夠讓我們省去這一步,下面我就以碼云的為例,實現(xiàn)服務端的代碼自動同步部署。查看是哪個用戶執(zhí)行該命令參考文章使用腳本遠程部署項目利用實現(xiàn)自動部署代碼碼云通過實現(xiàn)自動同步代碼部署執(zhí)行系統(tǒng)外部命令函數(shù) 當進行開發(fā)的環(huán)境在本地,而運行的環(huán)境要在服務端時,每一次提交代碼都需要在服務端pull一次。而利用git的hooks功能,能夠讓我們省去這一步,下面我就以碼云的webhooks為...
摘要:持續(xù)集成正是針對這一類問題的一種軟件開發(fā)實踐。持續(xù)集成的原則業(yè)界普遍認同的持續(xù)集成的原則包括需要版本控制軟件保障團隊成員提交的代碼不會導致集成失敗。 第一集 hudson+gradle+git+maven(非必選)持續(xù)集成編譯,打包,發(fā)布到倉庫集成 前言 什么是持續(xù)集成 隨著軟件開發(fā)復雜度的不斷提高,團隊開發(fā)成員間如何更好地協(xié)同工作以確保軟件開發(fā)的質(zhì)量已經(jīng)慢慢成為開發(fā)過程中不可回避的...
閱讀 1230·2023-04-26 00:47
閱讀 3585·2021-11-16 11:53
閱讀 805·2021-10-08 10:05
閱讀 2759·2021-09-22 15:19
閱讀 2990·2019-08-30 15:55
閱讀 2768·2019-08-29 16:55
閱讀 2938·2019-08-29 15:20
閱讀 1121·2019-08-23 16:13