Linux快速搭建Git服務

2021-08-20 08:21:06 字數 3013 閱讀 7492

我們將git服務部署到linux伺服器上,往往出於以下的目的:

那麼可以依照下面的步驟搭建乙個簡單使用的git伺服器

一,安裝git服務

這裡以centos系統為例,執行命令

yum install git -y
ubuntu/debian系統下執行命令

apt-get install git -y
檢視版本可以看到成功安裝

[root@centos74 pyx]# git --version

git version 1.8.3.1

二,準備git賬戶

git服務不同於apache,mysql一樣需要在後台不停執行

它基於ssh協議,任何賬號都可以使用,比如使用者foo在伺服器example.com的家目錄(home/foo)下建立了乙個倉庫bar,那麼可以使用下面的命令轉殖這個倉庫

git clone [email protected]:bar
這裡通常使用git作為預設賬戶,使用下面的命令新增賬戶,並設定密碼

useradd git

passwd git

切換到git賬戶並回到家目錄

su git

cd ~

執行下面的命令生產公私鑰,並將公鑰的內容複製到檔案 authorized_keys 中,目的是讓git賬戶可以訪問自己簡歷的倉庫

如果是從其他賬號或者外部主機訪問該倉庫,同樣也需要將其他賬戶的公鑰追加到authorized_keys檔案中

ssh-keygen -t rsa -c [email protected]

git config --global user.name lich4ung

git config --global user.email [email protected]

touch ~/.ssh/authorized_keys

cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

chmod 0600 ~/.ssh/authorized_keys

我寫了乙個一鍵建立倉庫的指令碼 mkrepo.sh,接受兩個引數: 

倉庫名稱,執行後會在家目錄(/home/git)建立乙個同名資料夾,這就是倉庫

鉤子指定的分支名稱,當有更新推送到該分支時,會自動更新該分支**

其內容如下:

#!/usr/bin/env bash

repository_name=$1

branch_name=$2

if [ "" = "$" ]; then

branch_name="master"

ficd ~

mkdir $

cd $

git --bare init

cd hooks

echo "#!/usr/bin/env bash

# 專案所在目錄

basedir=/srv/webroot/# 專案名稱

name=$

# post-receive 分支

branch_name=$

workspace=\$/\$/

git_dir=\$/.git

git_work_tree=\$

if [ ! -d \$ ]; then

cd \$

git clone [email protected]:\$

cd \$

git checkout \$

else

cd \$

figit pull origin \$

" >> post-receive

chmod a+x post-receive

使用示例:

# demo 是倉庫名, 更新分支 master

./mkrepo.sh demo

# 同上

./mkrepo.sh demo master

# 執行更新 feature 分支

./mkrepo.sh demo feature

檢視demo倉庫下的鉤子檔案 ~/demo/hooks/post-receive ,可以看到下面的內容,可以知道鉤子的本質就是shell指令碼

[git@centos74 ~]$ cat /home/git/demo/hooks/post-receive 

#!/usr/bin/env bash

# 專案所在目錄

basedir=/srv/webroot/

# 專案名稱

name=dede

# post-receive 分支

branch_name=master

workspace=$/$/

git_dir=$/.git

git_work_tree=$

if [ ! -d $ ]; then

cd $

git clone [email protected]:$

cd $

git checkout $

else

cd $

figit pull origin $

三,準備部署資料夾

在上面提到的指令碼中,我們看到了乙個資料夾(/srv/webroot),這就是乙個部署資料夾,

當給demo倉庫推送feature分支時更新乙份**到, /srv/webroot/demo 就會自動更新乙份源**

但在使用前需保證該目錄存在,且git賬戶具有所有權,使用root賬戶執行下面的指令碼

mkdir -p /srv/webroot

chown -r git.git /srv/webroot

Linux下搭建git服務

第一步,安裝git sudo apt get install git 第二步,初始化git倉庫 先選定乙個目錄作為git倉庫,假定是 srv gitstock mylinuxgittest.git,在 srv gitstock目錄下輸入命令 sudo git init bare mylinuxgit...

Git 伺服器搭建(Linux)

ubuntu debian sudo apt get install git 二 建立乙個單獨的 git使用者 sudo useradd m git sudo passwd git yourpassword 三 然後,在新建的git使用者主目錄下建立乙個資料夾作為git的倉庫,並為這個倉庫配備最基本...

Linux搭建git伺服器

總結本人在linux伺服器上搭建git伺服器遇到的 問題,ps 基於centos 在伺服器上安裝git伺服器 yum install git 建立git使用者 useradd d home git git passwd git 給git使用者設定密碼 zhangmx520 賦予ssh許可權 vi e...