这两天在折腾搭建组内的git服务器环境,刚开始本来想尝试使用gitlab的,但是安装起来对于我这样的linux来说有点困难,折腾了半天gitlab没弄好就果断放弃了。
然后网上找了些文章来照着弄,可能是由于服务器的版本、软件的版本不同等原因,总之我就没找到一篇文章能按照它上面说的完全顺利的安装成功,再加上自己没怎么接触过git,所以期间费了不少力气。
我是已一篇文章为主,按照它的说法安装下来,出现问题了就问谷歌大叔,找到解决方法再回到安装流程继续下去,最后终于成功了。
由于自己对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 |
——————————————————————————————————————
如果安装时报错如下:
Traceback (most recent call last):
File “setup.py“, line 2, in
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 [email protected]:/tmp #上传公钥到服务器(默认SSH端口22) 或 scp -P 3600 ~/.ssh/id_rsa.pub [email protected]:/tmp |
5、服务器上生成git用户,使用git用户并初始化gitosis
代码如下 | 复制代码 |
adduser -m git #删除密钥 |
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 #提交修改 |
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 克隆代码到本机了。