【www.bbyears.com--linux】
这两天在折腾搭建组内的git服务器环境,刚开始本来想尝试使用gitlab的,但是安装起来对于我这样的linux菜鸟来说有点困难,折腾了半天gitlab没弄好就果断放弃了。
然后网上找了些文章来照着弄,可能是由于服务器的版本、软件的版本不同等原因,总之我就没找到一篇文章能按照它上面说的完全顺利的安装成功,再加上自己没怎么接触过git,所以期间费了不少力气。
我是已一篇文章为主,按照它的说法安装下来,出现问题了就问谷歌大叔,找到解决方法再回到安装流程继续下去,最后终于成功了。
由于自己对git的不了解,在创建其他用户公用一个项目的时候绕了很大个圈子,差不多搞了一晚上才明白,??~~
Anyway,皇天不负有心人呐,最后还是基本上弄好了。明天和小伙伴们一起测测试试看~ Good night~~
安装手记如下:
1、安装 git
代码如下 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel2、下载git源码(http://code.google.com/p/git-core)
代码如下 cd /usr/local/srcwget 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
解决办法:
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.5make 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
from setuptools import setup, find_packages
ImportError: No module named setuptools
解决方法:
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 /repocd /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 /repomkdir 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 克隆代码到本机了。