您的位置:首页 > 运维架构 > Linux

redhat/centos 6.3 搭建git/gitosis/gitweb详细过程(1)

2012-12-23 14:47 471 查看
近来,需要向开源项目提交代码,终于意识到了git的重要性,原因就不用多说了(人家都采用git来进行代码版本管理)。

于是,花了上午的时间自己搭建了一个git服务器,并把搭建的详细步骤和注意事项与大家分享。

主机环境: RedHat 6.3, 并配置了本地iso源和centos 6.3的源(RedHat使用CentOS源的方法,参见博文《Redhat
使用CentOS的yum源进行升级或软件安装 》)

1. git的安装和配置

(1)使用yum源安装git

yum install git

(2)创建git用户并设置密码

#useradd --home /home/git
git

#passwd git

//注意这里要设置一个密码,建议不要不设密码,网上很多资料都不设密码

(3)创建一个git仓库,验证git是否可用

在使用git之前,要设置git的两个全局变量,设置方式为:

# git config --global user.name "dylan"

# git config --global user.email "ustc.dylan@email.com"

设置git仓库目录的权限

# su - git //切换到git用户

$ chmod -R 755 /home/git //修改目录的权限

创建并初始化一个repository

$ mkdir /home/git/repo //假设要创建的repository放在/home/git/repo目录下

$ cd /home/git/repo

$ mkdir test_repo

$ cd test_repo

$ git init --bare

测试新创建的repository是否可用

su - test (test为另外一个user或者exit,使用root用户)

$ cd /home/test

$ mkdir repos

$ cd repos

$ git clone /home/git/repo/test_repo

如果显示" Initialized empty Git repository in /home/git/repo/test_repo/.git/",则说明成功的clone了一个local repository。之后就可以在此repository下进行开发了,比如,添加一个readme.txt文件。

$ cd test_repo

$ vim readme.txt (创建一个文件)

$ git add . (注意后面有一个[.])

$ git commit -a

$ git push origin master

注意:如果此时报错,最大的原因是test_repo的refs和objects目录的权限不够,执行如下操作即可(git server端的repository下的这两个目录)。

$ chmod -R 777 refs/

$ chmod -R 777 objects/

2. gitosis的安装

(1)python-setuptools的安装(因为gitosis的安装脚本是用python写的)

#yum install python-setuptools

(2)gitosis的安装

#git clone git://github.com/res0nat0r/gitosis.git//下载gitosis到你想存放的目录下

#cd gitosis

#python setup.py install //如果没有报错,则说明安装成功

(3)创建是用这个git server的用户的公钥

因为gitosis的访问是通过ssh访问的,所以我们还需要创建一个ssh的访问公钥。找另外一台机器(如果条件允许)作为git server的客户端机器创建公钥,然后传到git服务器上。(如果为了简便,也可在git服务器上创建公钥,使用git用户或者其他用户都行。为了方便,这里采用git服务器,并且使用git用户。

# su - git

$ ssh-keygen -t rsa

公钥生成了,默认放在/home/git/.ssh/id_rsa.pub下,如果生成公钥时设置了密码,注意记住密码,为了简单,我这里没有设置密码。

(4)配置gitosis

gitosis对git的各种管理通过gitosis-admin.git这个项目来完成,gitosis-admin.git项目本身又被置于git下管理,所以需要先在client端clone gitosis-admin.git, 根据需求修改后,将修改提交到git server即可生效。

此处的含义就是:你想在哪对gitosis进行配置,就需要在哪clone到gitosis-admin.git.

假设在于gitosis不同的另外一台机器上,使用git用户将gitosis-admin.git clone到本地。

git clone git@192.168.x.xx:/home/git/repositories/gitosis-admin.git

修改gitosis配置文件gitosis.conf

$ vim gitosis.conf

//会看到如下内容

[gitosis]

[group gitosis-admin]

writable = gitosis-admin

members = git@compute-29-01.local

gitosis.conf 文件是用来设置用户、仓库和权限的控制文件(对于gitosis.conf文件的详细含义,以及keydir目录下公钥的作用,将会另写文档说明,在此不再详述),只需知道gitosis仓库是可写的,支持的用户有git

(5)新添加repository

修改gitosis-admin的配置文件gitosis.conf,新添加一个repository,例如:

[gitosis]

[group gitosis-admin]

writable = gitosis-admin

members = git@compute-29-01.local

[group test_repo] //新添加的仓库名称

writable = test_repo //此仓库的读写权限,此处为可写

members = user1@host1 user2@host2 //可以访问此仓库的用户名@主机名

假设当user1,来访问这个test_repo仓库时,需要输入如下命令:

git clone user1@git_server_ip:/home/git/repo/test_repo.git

此时会要求输入user1的密码,此密码就是创建user1的公钥时输入的密码。那么gitosis又是怎么来确定user1的身份的呢? 这就要求必须事先将user1产生的公钥传给管理员,即对gitosis-admin有权限操作的管理人员,然后由他将公钥拷贝到keydir目录下,然后,执行git add,git push即可。

到此, gitosis配置完成了,由于本篇文章已经很长了,所以将gitweb的安装配置单独整理成一篇文章,具体参见《redhat/centos 6.3 搭建git/gitosis/gitweb详细过程(1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: