前言
在管理自己的代碼的時(shí)候鸠蚪,我一直使用github今阳。有的時(shí)候,私有項(xiàng)目不想公開(kāi)茅信,如果還要放到GitHub上盾舌,那就必須要花錢。解決這個(gè)問(wèn)題的方法其實(shí)也很簡(jiǎn)單:在自己電腦上用虛擬機(jī)(VirtualBox)跑一個(gè)服務(wù)器(CentOS)蘸鲸,配置好ssh和git server妖谴。正所謂:史上距離你最近的服務(wù)器。
配置SSH
SSH是程序員鏈接服務(wù)器的居家必備之花露水白靡 膝舅!因此在VirtualBox中安裝好CentOS(最小化安裝)后,首要工作就是配置它的SSH窑多。
安裝SSH
- 更新系統(tǒng):
yum update
- 安裝openssh-server:
yum install -y openssl openssh-server
- 啟動(dòng)SSH服務(wù):
systemctl start sshd.service
- 設(shè)置開(kāi)機(jī)啟動(dòng)ssh服務(wù):
systemctl enable sshd.service
配置免密登錄
1.在客戶端系統(tǒng)(我的是Mac)終端中生成密鑰:
ssh-keygen -t rsa -C "gitopen@gmail.com"
注意輸入自己的郵箱
2.會(huì)提示輸入密碼仍稀,但也可以留空(至少我是留空,輸入密碼太麻煩)埂息。
3.完成后會(huì)在.ssh
目錄下生成id_rsa
和id_rsa.pub
兩個(gè)密鑰文件技潘。
注意保存這兩個(gè)文件,哪怕你換了電腦千康,重做了系統(tǒng)享幽,也要記得備份。
4.查看VirtualBox中CentOS的ip地址:
?運(yùn)行CentOS吧秕,?root用戶登錄?后輸入:
ip addr
如圖所示:5.在客戶端中用ssh連接CentOS:
ssh root@xxx.xxx.xxx.xxx -p 22
xxx.xxx.xxx.xxx是CentOS的ip地址琉闪,此時(shí)還需要輸入CentOS的root賬戶密碼。?此時(shí)?之所用SSH登錄砸彬,是為了方便拷貝密鑰到authorized_keys颠毙。
6.在VirtualBox中的CentOS
服務(wù)器中進(jìn)行配置:
//創(chuàng)建.ssh文件夾:
mkdir .ssh
//創(chuàng)建authorized_keys文件:
touch .ssh/authorized_keys
//修改authorized_keys的權(quán)限:
chmod 600 .ssh/authorized_keys
7.在客戶端(Mac)中查看id_rsa.pub斯入,并復(fù)制其中的密鑰。
cat .ssh/id_rsa.pub
8.在CentOS中打開(kāi)?authorized_keys蛀蜜,將剛才復(fù)制的密鑰粘貼進(jìn)去刻两。
vi .ssh/authorized_keys
9.配置完畢了。
客戶端(Mac)配置CentOS別名
1.為VirtualBox中CentOS的網(wǎng)絡(luò)設(shè)置端口轉(zhuǎn)發(fā)
設(shè)置網(wǎng)絡(luò)類型為NAT滴某,如圖所示:
設(shè)置端口轉(zhuǎn)發(fā)磅摹,如圖所示:
?以上操作是為了在客戶端(Mac)中設(shè)置別名登錄的時(shí)候,將ip地址寫為127.0.0.1霎奢,避免每次啟動(dòng)CentOS自動(dòng)獲取ip?的變化户誓,需要修改太麻煩。
2.客戶端(Mac)配置CentOS的別名
vi .ssh/config
輸入以下:
Host cent
HostName 127.0.0.1
User root
Port 4444
cent為別名幕侠,可以自由設(shè)置帝美。
很方便的連接CentOS
ssh cent
配置和安裝git服務(wù)器
所有操作可在客戶機(jī)(Mac)上用SSH連接CentOS進(jìn)行
1.CentOS安裝最新git,依賴庫(kù)安裝
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
2.卸載低版本Git
yum remove git
3.創(chuàng)建git目錄并進(jìn)入
?cd /usr/local
mkdir git
cd git
4.下載最新版Git 2.13.2
wget https://github.com/git/git/archive/v2.13.2.tar.gz
截至目前最新版是2.13.2晤硕,可以到https://github.com/git/git/releases 復(fù)制最新版鏈接進(jìn)行下載悼潭。
5.解壓到git目錄中
tar -xzvf v2.13.2.tar.gz
6.安裝v2.13.2版Git
cd git-2.13.2
make prefix=/usr/local/git all
make prefix=/usr/local/git install
編譯過(guò)程稍微較長(zhǎng),耐心等待
7.添加到環(huán)境變量中
打開(kāi)/etc/profile
vi /etc/profile
加入
export PATH="/usr/local/git/bin:$PATH"
使?配置立即生效
source /etc/profile
8.查看?git版本
git --version
9.將最新版git設(shè)置為系統(tǒng)默認(rèn)舞箍,避免克隆時(shí)出錯(cuò)
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
10.最新版v2.13.2 Git安裝成功
創(chuàng)建git用戶組和添加用戶
1.添加用戶組合用戶?舰褪,并設(shè)置密碼
groupadd git
useradd git -g git
passwd git
切換到git賬戶
su -git
2.證書(shū)登錄,免密碼?使用git
創(chuàng)建
.ssh
目錄和.ssh/authorized_keys
文件疏橄,將?客戶端(Mac)的id_rsa.pub中的密鑰添加到authorized_keys
文件中
修改目錄和文件的權(quán)限
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
初始化Git倉(cāng)庫(kù)
1.我的所有倉(cāng)庫(kù)都放在gitrepos目錄下占拍,因此我創(chuàng)建了這個(gè)目錄
cd /home/git
mkdir gitrepos
cd gitrepos
2.初始化第一個(gè)test倉(cāng)庫(kù)
git init --bare test.git
本地客戶端克隆倉(cāng)庫(kù)
在客戶端(Mac)上克隆CentOS?上的test.git庫(kù)
git clone git@cent:/gitrepos/test.git
cent
是章節(jié)2.3中設(shè)置的CentOS的SSH連接別名,也可以換成?相應(yīng)的ip地址
禁止Shell登錄
如果你是在遠(yuǎn)程的VPS服務(wù)器上配置git服務(wù)器捎迫,那么為了安全考慮刷喜,可以禁止Shell登錄;如果像本文的初衷那樣立砸,是為了構(gòu)建?
?史上距離你最近的服務(wù)器
,那么這一步就可以不做初茶。
切換到root賬戶:
su
編輯/etc/passwd
文件:
vi /etc/passwd
將這一行:
git:x:502:502::/home/git:/bin/bash
替換為:
git:x:502:502::/home/git:/usr/local/git/bin/git-shell
結(jié)語(yǔ)
通過(guò)用Virtualbox在本機(jī)上構(gòu)建CentOS颗祝,方便于開(kāi)發(fā)人員進(jìn)行測(cè)試;通過(guò)在CentOS上搭建自己的Git服務(wù)器恼布,可以將自己獨(dú)立開(kāi)發(fā)的代碼很好的管理與備份螺戳。