這兩天在折騰搭建組內的git伺服器環境,剛開始本來想嘗試使用gitlab的,但是安裝起來對於我這樣的linux菜鳥來說有點困難,折騰了半天gitlab沒弄好就果斷放棄了。
然後網上找了些文章來照著弄,可能是由於伺服器的版本、軟體的版本不同等原因,總之我就沒找到一篇文章能按照它上面說的完全順利的安裝成功,再加上自己沒怎麼接觸過git,所以期間費了不少力氣。
我是已一篇文章為主,按照它的說法安裝下來,出現問題了就問Google大叔,找到解決方案再回到安裝流程繼續下去,最後終於成功了。
由於自己對git的不瞭解,在建立其他使用者公用一個項目的時候繞了很大個圈子,差不多搞了一晚上才明白,??~~
Anyway,皇天不負有心人呐,最後還是基本上弄好了。明天和小夥伴們一起測測試試看~ Good night~~
安裝手記如下:
1、安裝 git
代碼如下 |
複製代碼 |
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel |
2、下載git源碼(http://code.google.com/p/git-core)
代碼如下 |
複製代碼 |
cd /usr/local/src wget https://git-core.googlecode.com/files/git-1.8.5.tar.gz tar -zvxf git-1.8.5 cd git-1.8.5 make prefix=/usr/local/git all make prefix=/usr/local/git install
|
———————————————————
如果編譯時間提示錯誤:
LINK git-credential-store
libgit.a(utf8.o): In function `reencode_string_iconv’:
/opt/git-master/utf8.c:530: undefined reference to `libiconv’
libgit.a(utf8.o): In function `reencode_string_len’:
/opt/git-master/utf8.c:569: undefined reference to `libiconv_open’
/opt/git-master/utf8.c:588: undefined reference to `libiconv_close’
/opt/git-master/utf8.c:582: undefined reference to `libiconv_open’
collect2: ld 返回 1
make: *** [git-credential-store] 錯誤 1
解決辦法:
代碼如下 |
複製代碼 |
cd /usr/local/src/ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz tar -zxvf libiconv-1.14.tar.gz cd libiconv-1.14 ./configure –prefix=/usr/local/libiconv && make && sudo make install |
然後回到git繼續編譯:
代碼如下 |
複製代碼 |
cd /usr/local/src/git-1.8.5 make configure ./configure –-prefix=/usr/local –with-iconv=/usr/local/libiconv make make install |
此時,git應該編譯安裝成功了,可以測試下:
代碼如下 |
複製代碼 |
cd /usr/local/bin ./git –version git version 1.8.5 |
可能你會發現為什麼直接在命令列輸入git卻提示無效呢,這裡還需要做點設定,編輯/etc/profile, 將/usr/local/bin加入到系統路徑:
代碼如下 |
複製代碼 |
export PATH=$PATH:/usr/local/bin
|
儲存退出,再重新整理一下系統路徑:
代碼如下 |
複製代碼 |
source /etc/profile |
在終端直接輸入 git –-version
如能正確顯示版本,git version 1.8.5,則大功告成。
———————————————————
3、安裝 gitosis
代碼如下 |
複製代碼 |
yum install python python-setuptools cd /usr/local/src git clone git://github.com/res0nat0r/gitosis.git cd gitosis python setup.py install |
———————————————————
如果安裝時報錯如下:
Traceback (most recent call last):
File “setup.py“, line 2, in <module>
from setuptools import setup, find_packages
ImportError: No module named setuptools
解決方案:
代碼如下 |
複製代碼 |
cd /usr/local/src wget http://python-distribute.org/distribute_setup.py python distribute_setup.py |
然後再運行
代碼如下 |
複製代碼 |
python setup.py install
|
如果顯示Finished processing dependencies for gitosis==0.2 表示安裝成功
———————————————————
4、在開發機上產生密鑰並上傳到伺服器上
代碼如下 |
複製代碼 |
ssh-keygen -t rsa #一路斷行符號,不需要設定密碼 scp ~/.ssh/id_rsa.pub root@192.168.103.10:/tmp #上傳公開金鑰到伺服器(預設SSH連接埠22) 或 scp -P 3600 ~/.ssh/id_rsa.pub root@192.168.103.10:/tmp |
5、伺服器上產生git使用者,使用git使用者並初始化gitosis
代碼如下 |
複製代碼 |
adduser -m git su – git gitosis-init < /tmp/id_rsa.pub #顯示以下資訊即表示成功 #Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/ #Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/ #刪除密鑰 su – root rm -rf /tmp/id_rsa.pub |
6、在開發機上匯出管理
代碼如下 |
複製代碼 |
mkdir -p /repo cd /repo git clone git@xxx:gitosis-admin.git 或 git clone ssh://git@xxx:3600/gitosis-admin.git |
7、增加及設定管理項目
代碼如下 |
複製代碼 |
cd /repo/gitosis-admin vim gitosis.conf #在檔案尾增加以下內容 [group test] # 組名稱 writable = test # 項目名稱 members = jankerli #密鑰使用者名稱 #提交修改 git add . git commit -a -m “add test repo” git push |
8、初始,增加及使用項目test-git
代碼如下 |
複製代碼 |
cd /repo mkdir test-git cd test-git git inti touch readme git add . git commit -a -m “init test-git” git remote add origin git@xxx:test.git git push origin master |
9、在 test 項目新增使用者
①在新增使用者的本機輸入ssh-keygen -t rsa產生私密金鑰公開金鑰;
②把產生的公開金鑰id_rsa.pub上傳或複製到 gitosis-admin/keydir檔案夾下,並重名,如:jankerli.pub;
③vim gitosis.conf
代碼如下 |
複製代碼 |
#在檔案尾增加以下內容 [group test] writable = test members = jankerli (此處增加新使用者的名稱,名稱必須與上面重名的jankerli.pub一致,去掉.pub) ④#提交修改 git add . git commit -a -m “add test repo” git push
|
⑤新使用者便可通過 git clone git@xxx:test.git 複製代碼到本機了。