CentOS 安装 git 服务器 CentOS + Git 1.8.5 + gitosis(手记)

作者:袖梨 2022-11-14

这两天在折腾搭建组内的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
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

解决方法:

代码如下 复制代码
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
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 克隆代码到本机了。

相关文章

精彩推荐