Git服务器Gitosis安装设置-git权限管理

来源:互联网 发布:php在线音乐网站源码 编辑:程序博客网 时间:2024/05/20 06:55
目录[-]


1. 准备环境,安装更新
2. 安装 openssh服务器
3. 安装 git服务器
4. 配置 git服务器
5. 安装python的setup tool
6. 获取并安装gitosis
7. 配置gitosis
8.创建个人公钥和私钥,另外一台pc机(git客户端)
9. 管理gitosis配置
10. 安装apache2 
11. 安装gitweb
12. 配置 gitweb
13. 配置apache2
1. 准备环境,安装更新
1 sudo apt-get update 
2 sudo apt-get upgrade
2. 安装 openssh服务器
1 sudo apt-get install openssh-server openssh-client
3. 安装 git服务器
1 sudo apt-get install git-core
4. 配置 git服务器
创建git服务器管理用户


1 sudo useradd -m git
2 sudo passwd git
用户名和密码均为git


创建git仓库存储目录


1 sudo mkdir /home/git/repositories
设置git仓库权限


1 sudo chown git:git /home/git/repositories
2 sudo chmod 755 /home/git/repositories
初始化全局设置


1 git config --global user.name "myname"
2 git config --global user.email "myname@server"
5. 安装python的setup tool
1 sudo apt-get install python-setuptools
6. 获取并安装gitosis
1 cd /tmp
2 git clone https://github.com/res0nat0r/gitosis.git
3 cd gitosis
4 sudo python setup.py install
7. 配置gitosis
1 cp ~/.ssh/id_rsa.pub /tmp
2 sudo -H -u git gitosis-init < /tmp/id_rsa.pub
3 sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
8.创建个人公钥和私钥,另外一台pc机(git客户端)
在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥


1 ssh-keygen -t rsa
默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:


1 id_rsa  id_rsa.pub  known_hosts
9. 管理gitosis配置
在git客户端


1 cd ~
2 git clone git@hostname:用户名/gitosis-admin.git
3 cd gitosis-admin/
各个用户按照前面提到的办法生成各自的ssh公钥文件后,服务器管理员把所有人的 ssh公钥文件都拿来,拷贝到keydir目录下。修改gitosis.conf文件,如下所示


01 [gitosis]
02  
03 [group gitosis-admin]
04 writable = gitosis-admin
05 members = a@server1
06  
07 [group developers]
08 writable = helloworld
09 members = a@server1 b@server2
10  
11 [group test]
12 readonly = helloworld
13 members = c@server3
这个配置文件表达了如下含义:gitosis-admin组成员有a,该组对gitosis-admin仓库有读写权限; developers组有a,b两个成员,该组对helloworld仓库有读写权限; test组有c一个成员,对helloworld仓库有只读权限。 当然目前这些配置文件的修改只是在你的本地,你必须推送到gitserver上才能真正生效。 加入新文件、提交并push到git服务器:


1 git add .
2 git commit -am "add helloworld project and users"
3 git remote add origin ssh://git@hostname/helloworld.git
4 git push origin master
10. 安装apache2 
1 sudo apt-get install apache2
11. 安装gitweb
1 sudo apt-get install gitweb
12. 配置 gitweb
默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:


1 cd /var/www/
2 sudo ln -s /usr/share/gitweb/* .
修改配置:


1 sudo vi /etc/gitweb.conf
将 $projectroot 改为git仓库存储目录(例如:/home/git/repositories),保存后刷新浏览器。 
如果没有找到项目,你需要将$projectroot/*.git 的属性改为755,让apache用户有可读权限。可以只改你需要让别人通过web访问的那个git。 http://localhost/cgi-bin/gitweb.cgi


修改/etc/gitweb.conf 内容:


01 # path to git projects (<project>.git)
02 #$projectroot = "/var/cache/git";
03 $projectroot = "/home/git/repositories";
04  
05 # directory to use for temp files
06 $git_temp = "/tmp";
07  
08 # target of the home link on top of all pages
09 $home_link = $my_uri || "/";
10  
11 # html text to include at home page
12 $home_text = "indextext.html";
13  
14 # file with project list; by default, simply scan the projectroot dir.
15 $projects_list = $projectroot;
16  
17 # stylesheet to use
18 @stylesheets = ("/gitweb/static/gitweb.css");
19  
20 # javascript code for gitweb
21 $javascript = "/gitweb/static/gitweb.js";
22  
23 # logo to use
24 $logo = "/gitweb/static/git-logo.png";
25  
26 # the 'favicon'
27 $favicon = "/gitweb/static/git-favicon.png";
28  
29 # git-diff-tree(1) options to use for generated patches
30 #@diff_opts = ("-M");
31 @diff_opts = ();
13. 配置apache2
ubuntu中默认的web目录是/var/www,默认的cgi目录是 /usr/lib/cgi-bin/,安装完成gitweb后,gitweb的gitweb.cgi会自动放置到该目录下。


如果你的cgi路径不是默认的/usr/lib/cgi-bin/,需要将gitweb安装在/usr/lib/cgi-bin中的 gitweb.cgi复制到原来配置的cgi-bin路径,并在apache的配置文件/etc/apache2/apache.conf末尾加上以下内 容:


01 SetEnv  GITWEB_CONFIG   /etc/gitweb.conf
02 <Directory "/srv/www/cgi-bin/gitweb">          
03     Options FollowSymlinks ExecCGI         
04     Allow from all                         
05     AllowOverride all                      
06     Order allow,deny                       
07     <Files gitweb.cgi>
08          SetHandler cgi-script
09     </Files>                   
10     RewriteEngine on
11     RewriteCond %{REQUEST_FILENAME} !-f
12     RewriteCond %{REQUEST_FILENAME} !-d
13     RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
14 </Directory>
重新启动apache:sudo /etc/init.d/apache2 restart,访问http://localhost/cgi-bin/gitweb.cgi


转自:


http://my.oschina.net/mercury5/blog/146171
0 0
原创粉丝点击