1.sudo apt-get install git-core openssh-server openssh-client python-setuptools
2.创建git用户
sudo useradd -d /app/git -m git
sudo passwd git
3.创建git用户密钥
su git
ssh-keygen -t rsa -b 4096
git config --global user.name "git"
git config --global user.email "git@test.com"
4.install gitosis
cd /tmp
#git clone https://github.com/res0nat0r/gitosis.git
git clone https://github.com/tv42/gitosis
cd gitosis
sudo python setup.py install
5.配置 gitosis
su git
gitosis-init < ~/.ssh/id_rsa.pub
Initialized empty Git repository in /mnt/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /mnt/git/repositories/gitosis-admin.git/
cd ~
mkdir myrepo
cd myrepo
git clone git@localhost:gitosis-admin.git
将git用户的 ssh key 的 pub 文件复制到 gitosis-admin/keydir/ 目录下。然后编辑 gitosis.conf 文件,将 pub 文件名加到gitosis-admin 的members中,
然后提交修改,新用户就有了远程clone gitosis-admin的权限,然后可以添加新的仓库。
git add keydir/xxx.pub
git commit -am "add new user xxx."
git push origin master
6.回到用户机器上,
git clone git@xxxx:gitosis-admin.git
克隆完毕。
创建工程
cd gitosis-admin
vim gitosis.conf
添加内容:
[group dev]
members = xxx
writable = proj1
然后保存文件提交上库。
mkdir proj1
cd proj1
git init
echo "1st time create." > readme.txt
git add .
git commit -am "1st time create."
git remote add origin master git@xxxx:proj1.git
git push origin master
这样就提交到服务器上内容了。
7.gitweb 配置
sudo apt-get install gitweb apache2
sudo vim /etc/gitweb.conf
修改 $projectroot = "/app/git/repositories";
$projects_list = $projectroot;
8.服务器修改apache 配置
sudo cp /etc/apache2/conf.d/gitweb /etc/apache2/conf-available/gitweb.conf
cd /etc/apache2/conf-enabled
sudo ln -s ../conf-available/gitweb.conf
sudo vim /etc/apache2/conf-available/gitweb.conf
注意唯一修改就是下面的红色 + 号:
Alias /gitweb /usr/share/gitweb
<Directory /usr/share/gitweb>
Options +FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
</Directory>
然后保存退出
sudo a2enmod cgid
sudo service apache2 restart
然后客户机浏览器打开 http://xxxx/gitweb/就可以看到工程列表了。
如果出现 404 错误,那是权限问题
sudo chmod -R 775 /app/git/repositories
然后重启 apache 刷新浏览器即可看到创建的工程了。
如果想让某些工程不显示在 gitweb 中,则需要修改
sudo vim /etc/gitweb.conf
$projects_list = "/app/git/gitosis/projects.list";
然后编辑 gitosis-admin 中的 gitosis.conf文件,编辑工程:
[repo proj1]
daemon = yes
gitweb = yes
或者
[repo proj1]
daemon = yes
gitweb = no
然后重启 apache2 即可。
要美化gitweb显示,更换主题:http://kogakure.github.io/gitweb-theme/