前端需要進行系統(tǒng)開發(fā)時,需要做版本控制,所以打算使用Git進行協(xié)同開發(fā),但是工作內(nèi)容不好放在github公有倉庫托管,也沒有資金購買私有托管服務(wù),所以需要自己搭建一個Git私有倉庫。
搭建環(huán)境為:CentOS7。
yum源倉庫里的Git版本比較老,是1.8.3.1,而Git最新版本已經(jīng)到2.17.0了,所以使用yum源安裝的Git版本不是最新的,如果有需要安裝最新版本的需要進行源碼安裝。本文只記錄使用yum源安裝的過程,不討論源碼安裝。
1、首先確保服務(wù)器能上外網(wǎng)。
2、安裝Git
切換到root用戶下進行安裝操作
[root@localhost ~]# su root
安裝Git
[root@localhost ~]# yum install git
一路默認(rèn)安裝,完成后使用git --version可以查看git版本
[root@localhost ~]# git --version
git version 1.8.3.1
[root@localhost ~]#
3、添加git管理的賬戶并設(shè)置密碼
[root@localhost ~]# adduser git
[root@localhost ~]# passwd git
輸入git密碼后確認(rèn)
4、git倉庫權(quán)限管理
由于開發(fā)團隊很小,所以通過ssh公鑰進行管理。
4.1 配置服務(wù)端的ssh訪問
- 切換到
git用戶[root@localhost ~]# su - git - 進入
git賬戶的主目錄[git@localhost ~]# cd /home/git - 創(chuàng)建
.ssh的配置,如果此文件夾已經(jīng)存在,則忽略該步驟[git@localhost git]# mkdir .ssh - 進入
.ssh目錄,并創(chuàng)建authorized_keys文件,此文件存放客戶端遠程訪問ssh的公鑰[git@localhost git]# cd /home/git/.ssh [git@localhost .ssh]# touch authorized_keys - 設(shè)置權(quán)限
如果不設(shè)置這些權(quán)限,在客戶端連接該倉庫時,不能免密登錄[git@localhost .ssh]# chmod 700 /home/git/.ssh [git@localhost .ssh]# chmod 600 /home/git/.ssh/authorized_keys
至此,服務(wù)端的配置基本已經(jīng)完成,接下來就需要在客戶端生成公鑰文件,并將該文件拷貝到服務(wù)器端。
4.2、配置客戶端私鑰,并將其上傳到服務(wù)器端
- 檢查是否已經(jīng)有
ssh公鑰和私鑰
我們開發(fā)環(huán)境是Windows,所以在C:\Users\用戶名\.ssh下查找是否已經(jīng)有id_rsa和id_rsa.pub文件。其中,id_rsa是私鑰,id_rsa.pub是公鑰。如果沒有,則需要創(chuàng)建ssh公鑰和私鑰:
在打開的cmd窗口中,使用如下命令創(chuàng)建密鑰對
接下來,三個回車默認(rèn)即可。ssh-keygen -t rsa - 拷貝公鑰到
git服務(wù)器
將id_rsa.pub拷貝到服務(wù)器的/home/git/.ssh/目錄下
4.3 在服務(wù)端天劍客戶端的 ssh公鑰
- 在服務(wù)器端,將剛才拷貝的公鑰添加進
authorized_keys文件中
現(xiàn)在,在客戶端可以直接使用[git@localhost ssh]# cat id_rsa.pub >> authorized_keysssh的方式登錄服務(wù)器了(這樣不安全,所以接下來要禁止該賬號的shell登錄)
在客戶端測試用ssh登錄服務(wù)器:ssh git@192.168.100.10
4.4 在服務(wù)端創(chuàng)建測試git倉庫
進入服務(wù)器終端
切換到git用戶
[root@localhost ~]# su - git
進入git賬號的用戶主目錄
[git@localhost ~]# cd /home/git
創(chuàng)建測試倉庫文件夾test.git,然后進入test.git目錄下
[git@localhost git]# mkdir test.git
[git@localhost git]# cd test.git
初始化該測試倉庫
[git@localhost test.git]# git init --bare
現(xiàn)在,客戶端就可以clone或者remote add此倉庫了
4.4 在客戶端連接git遠程倉庫
建一個空文件夾,叫git-test
在該目錄下執(zhí)行
git init
向該目錄下添加一張圖片,名為test.jpg,繼續(xù)執(zhí)行
git add "test.jpg"
git commit -m "add an image"
此時,已經(jīng)將該圖片添加到本地倉庫,接下來就需要將本地倉庫和遠程倉庫進行連接并同步
git remote add origin git@192.168.100.10:test.git
git push -u origin master
4.5 禁用客戶端的ssh登錄
雖然,現(xiàn)在已經(jīng)可以使用git私服了,但是客戶端可以使用ssh登錄,這樣很不安全,接下來就要禁用客戶端的ssh登錄
- 給
/home/git下創(chuàng)建一個git-shell-commands目錄,并把目錄的擁有者設(shè)置為git賬戶。
[root@localhost ~]# su - git
[git@localhost ~]# mkdir /home/git/git-shell-commads
- 修改
/etc/passwd文件
[root@localhost ~]# vi /etc/passwd
找到下面這句,將其注釋掉(1000可能為別的數(shù)字,在前面加一個‘#’符號即為注釋)
git:x:1000:1000::/home/git:/bin/bash
然后在后面添加一行
git:x:1000:1000::/home/git:/bin/git-shell
然后退出保存,此時客戶端再使用ssh登錄,便會提示如下信息:
$ ssh git@192.168.10.10
Last login: Wed May 9 22:49:57 2018
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 192.168.100.10 closed.
5 結(jié)尾
現(xiàn)在,Git私服搭建基本已經(jīng)完成,但是還有好多問題自己沒有摸索明白,在以后的使用中,可能會不斷學(xué)習(xí)各種操作,到時候再繼續(xù)完善這個搭建過程!