安装软件
sudo apt-get install git git-core
sudo apt-get install apache2
sudo apt-get install Git-core openssh-server openssl-client Python-setuptools
#启用相应模块
sudo a2enmod dav_fs
#sudo a2enmod dav
添加git用户用于管理所有代码仓库和用户权限
ivan@ubuntu:~$ sudo useradd -m git
设置git用户密码:
ivan@ubuntu:~$ sudo passwd git
第三步: 安装gitosis
ivan@ubuntu:~$ git clone git://eagain.NET/gitosis.git
ivan@ubuntu:~$ cd gitosis
ivan@ubuntu:~$python setup.py install
第四步: 切换到git用户并创建git仓库目录
ivan@ubuntu:~$ su git
Password:
$ cd ../git
$ ls
examples.desktop
$ pwd
/home/git
$ mkdir sample.git
$ cd sample.git
$ git --bare init
Initialized empty Git repository in /home/git/sample.git/
#设置apache2
sudo htpasswd -c /etc/apache2/dav_git.passwd dav
>New password: 123
>Re-type new password: 123
>Adding password for user dav
配置apache2:/etc/apache2/sites-available/000-default.conf,使用8001端口
<VirtualHost *:8001>
ServerName localhost
ScriptAlias /cgi-bin /var/www/gitweb 这是给/var/www/gitweb取个别名,叫做/cgi-bin
Alias /gitweb /var/www/gitweb 这是给/var/www/gitweb取个别名,叫做/gitweb
<Directory /var/www/gitweb>
Options +ExecCGI
Options +FollowSymLinks
Options +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script .cgi .pl .py
DirectoryIndex /gitweb.cgi
</Directory>
</VirtualHost>
Alias /icons/ "/usr/local/www/icons/" Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all
Alias参数用于将URL与服务器文件系统中的真实位置进行直接映射,一般的文档将在DocumentRoot 中进行查询,然而使用Alias定义的路径将直接映射到相应目录下,而不再到DocumentRoot 下面进行查询。因此Alias可以用来映射一些公用文件的路径,例如保存了各种常用图标的icons路径。这样使得除了使用符号连接之外,文档根目录(DocumentRoot)外的目录也可以通过使用了Alias映射,提供给浏览器访问。
定义好映射的路径之后,应该需要使用Directory语句设置访问限制。
ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/" AllowOverride None Options None Order allow,deny Allow from all
ScriptAlias也是用于URL路径的映射,但与Alias的不同在于,ScriptAlias是用于映射CGI程序的路径,这个路径下的文件都被定义为CGI程序,通过执行它们来获得结果,而非由服务器直接返回其内容。缺省情况下CGI程序使用cgi-bin目录作为虚拟路径。
sudo vim /etc/apache2/ports.conf
添加监听行:Listen 8001
重启apache server
/etc/init.d/apache2 restart
安装GitWeb
第一步: 安装必备软件模块
ivan@ubuntu:~$ sudo apt-get install gitweb apache2
第二步:修改gitweb.conf文件中$projectroot值
ivan@ubuntu:~$ sudo vim /etc/gitweb.conf(让git与apache2关联的设置)
# path to git projects (<project>.git)
$projectroot = "/home/git";
第三步:修改git仓库文件夹的权限
ivan@ubuntu:~$ sudo chmod 777 -R /home/git
更多细节参考:(https://review.openstack.org/Documentation/config-gitweb.html,主要是让git与apache2建立关系!通过cgi脚本程序)
Table of Contents
Gitweb Integration
Internal/Managed gitweb
External/Unmanaged gitweb
Alternatives to gitweb
SEE ALSO
Gitweb Integration
Gerrit Code Review can manage and generate hyperlinks to gitweb,allowing users to jump from Gerrit content to the same information,but shown by gitweb.
Internal/Managed gitweb
In the internal configuration,Gerrit inspects the request,enforces its project level access controls,and directly executesgitweb.cgi
if the user is authorized to view the page.
To enable the internal configuration,setgitweb.cgiwith the path of the installed CGI. This defaults to/usr/lib/cgi-bin/gitweb.cgi
,which is a common installation path for the 'gitweb' package on Linux distributions.
git config --file $site_path/etc/gerrit.config gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi git config --file $site_path/etc/gerrit.config --unset gitweb.url
Alternatively,if Gerrit is served behind reverse proxy,it can generate different URLs for gitweb’s links (they need to be rewritten to<gerrit>/gitweb?args
on the web server). This allows for serving gitweb under a different URL than the Gerrit instance. To enable this feature,set both:gitweb.cgi
andgitweb.url
.
git config --file $site_path/etc/gerrit.config gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi git config --file $site_path/etc/gerrit.config gitweb.url /pretty/path/to/gitweb
After updating'$site_path'/etc/gerrit.config
,the Gerrit server must be restarted and clients must reload the host page to see the change.
Configuration
Most of the gitweb configuration file is handled automatically by Gerrit Code Review. Site specific overrides can be placed in'$site_path'/etc/gitweb_config.perl
,as this file is loaded as part of the generated configuration file.
Logo and CSS
If the package-manager installed CGI (/usr/lib/cgi-bin/gitweb.cgi
) is being used,the stock CSS and logo files will be served from either/usr/share/gitweb
or/var/www
.
Otherwise,Gerrit expectsgitweb.css
andgit-logo.png
to be found in the same directory as the CGI script itself. This matches with the default source code distribution,and most custom installations.
Access Control
Access controls for internally managed gitweb page views are enforced using the standard project READ +1 permission.
Also,in order for a user to be able to view any gitweb information for a project,the user must be able to read all references (including refs/meta/config,refs/meta/dashboards/*,etc.). If you have exclusive read permissions for any references,make sure to include all parties that should be able to read the gitweb info for any of the branches in that project.
External/Unmanaged gitweb
For the external configuration,gitweb runs under the control of an external web server,and Gerrit access controls are not enforced. Gerrit provides configuration parameters for integration with GitWeb.
Linux Installation
Install GitWeb
On Ubuntu:
sudo apt-get install gitweb
With Yum:
$ yum install gitweb
Configure GitWeb
Update/etc/gitweb.conf
,add the public GIT repositories:
$projectroot = "/var/www/repo/"; # directory to use for temp files $git_temp = "/tmp"; # target of the home link on top of all pages #$home_link = $my_uri || "/"; # html text to include at home page $home_text = "indextext.html"; # file with project list; by default,simply scan the projectroot dir. $projects_list = $projectroot; # stylesheet to use # I took off the prefix / of the following path to put these files inside gitweb directory directly $stylesheet = "gitweb.css"; # logo to use $logo = "git-logo.png"; # the favicon $favicon = "git-favicon.png";