ubuntu搭建git服务器和心得体会

通过一翻谷歌和度娘,终于把git服务器成功搭建起来,这里简要记录下搭建的过程和自己搭建过程中的心得体会,以便日后查看,文章内容参考网络上大部分相关文章:(http://www.linuxidc.com/Linux/2011-05/35639p3.htm)

1、Git服务端

1.1.请使用apt-get update和apt-get upgrade命令更新当前系统,如果不更新,在后面安装一些程序的时候可能会出现某些依赖包没安装的现象。

1.2.安装OpenSSH Server( ubuntu) (当前用户为wirror800)

首先,使用ps -e|grep ssh命令,检查本机上是否已经运行ssh服务。如果没有,继续;否则,跳过此步骤。

执行命令:

sudo apt-get install openssh-server
  1. 1.3.修改ssh服务端配置文件 /etc/ssh/sshd_config
  2. <pre lang="shell">
  3. Port 22 # 修改成你想要的登陆端口,如1212
  4.  
  5. PermitRootLogin Yes # 允许root用户登陆,如果不允许,后面可能无法git clone project内容
  6.  
  7. StrictModes yes # 检查密钥的用户和权限是否正确,默认打开的
  8.  
  9. RSAAuthentication yes # 启用 RSA 认证
  10.  
  11. PubkeyAuthentication yes # 启用公钥认证
  12.  
  13. PasswordAuthentication Yes # 允许密码认证,如果不允许,后面可能无法git clone project内容
  14.  
  15. ServerKeyBits 1024 # 修改后变为此状态,将ServerKey强度改为1024比特
  16.  
  17. PermitEmptyPasswords no # 修改后变为此状态,禁止空密码进行登录
  18.  
  19. 修改完成后,重启ssh服务:
  20.  
  21. sudo /etc/init.d/ssh restart

2、安装git和gitosis:

  1. sudo apt-get install git-core gitosis

3、为gitosis创建用户

  1. sudo useradd -m git  //创建新用户并创建家目录
  2.  
  3. sudo password git

4、运行gitosis

  1. scp ~/.ssh/id_rsa.pub wuxinxinggg@remothost:/home/wuxinxinggg //这里要注意的是一定要把管理员生成的id_rsa.pub放到git服务器操作的用户的家目录,比如我的是/home/wuxinxinggg/.ssh 否则将Permission denied (public)

5、初始化gitosis

  1. cd /home/wuxinxinggg #切换到上传的id_rsa.pub目录下
  2.  
  3. sudo -H -u git gitosis-init &lt; id_rsa.pub (或者切换到git用户下执行gitosis-init &lt; id_rsa.pub也可以,记得exit切换回当前用户)

6、安装配置gitweb

安装gitweb

sudo apt-get install gitweb
  1. 安装apache2
  2. <pre lang="shell">
  3. sudo apt-get install apache2

配置gitweb
(1)默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:

  1. cd /var/ www/
  2.  
  3. sudo ln -s / usr/ share/ gitweb/* . //(注意后面的点)

(2)修改配置:

  1. sudo vi /etc/ gitweb.conf
  2.  
  3. 将 $projectroot 改为gitosis-admin.git所在目录: /home/git/repositories

(3)修改 /home/git/repositories权限,默认情况下,gitosis将 repositories权限设置为不可读的

  1. sudo chmod 777 -R /home/git/repositories
  2.  
  3. 编辑apache2配置文件,建立web站点 (默认情况下可以忽略此步骤)

(1) 编辑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:

SetEnv GITWEB_CONFIG /etc/gitweb.conf
gitweb.conf配置文件形如:(可自行修改,这里不做详细介绍)

  1.  
  2. Options FollowSymlinks ExecCGI
  3. Allow from all
  4. AllowOverride all
  5. Order allow,deny
  6.  
  7. SetHandler cgi-script
  8.  
  9. RewriteEngine on
  10. RewriteCond %{REQUEST_FILENAME} !-f
  11. RewriteCond %{REQUEST_FILENAME} !-d
  12. RewriteRule ^.* /gitweb.cgi/$0 [L,PT]

重新启动apache:sudo /etc/init.d/apache2 restart,访问http://localhost/cgi-bin/gitweb.cgi

7、git管理员客户端配置

生成密钥:ssh-keygen -t rsa

安装msysgit //安装过程保持默认

从服务器 克隆gitosis-admin.git

首先选定目录,如G盘:cd /g/

然后,新建一个目录mkdir gitproject

  1. git clone git@YOUR_SERVER:gitosis-admin.git
  2.  
  3. ( YOUR_SERVER可以是你的服务器名称或者ip,我这里的ubuntu的ip为192.168.1.102 )

编辑 gitosis.conf

cd gitosis-admin

你将看到以下文件gitosis.conf和keydir/,gitosis.conf是gitosis的配置文件,用于配置用户和权限,keydir/是所有组成员的

公钥。

vi gitosis.conf, 打开gitosis.conf文件,内容为:

[group gitosis-admin]
writable = gitosis-admin
members = Administrator@LILIN

这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。

把内容修改为:

  1. [gitosis]
  2. gitweb = yes
  3.  
  4. [group gitosis-admin]
  5. writable = gitosis-admin
  6. members = Administrator@LILIN wirror800@192.168.1.102
  7.  
  8. [group apps ]
  9. writable = apps
  10. members = Administrator@LILIN wirror800@192.168.1.102
  11.  
  12. 其中 gitweb = yes表示启用对gitweb的支持。 这里定义了一个叫apps的组,授予Administrator@LILIN和wirror800@192.168.1.102
  13.  
  14. 两个用户写“apps ”这个repo的权限

然后push到服务端后,服务器端就立刻生效。

  1. git commit -a -m “created a new repository”
  2.  
  3. git push

这样就 更新了服务端的权限。

创建一个app的repo

mkdir apps

cd apps

git init

创建、编辑 .gitignore , 用于忽略某些不需要进行代码管理的内容,如rails的应用可能如下:

.DS_Store
log/*.log
tmp/**/*
config/database.yml
db/*.sqlite3

编辑 .git/description 内容, 加上apps 的说明

提交代码

  1. git remote add origin git@YOUR_SERVER:apps.git
  2.  
  3. git add .
  4.  
  5. git commit -am “imitial import”
  6.  
  7. git push origin master:refs/heads/master

增加成员的公钥到系统中

cd ../gitosis-admin

cp member_1.pub keydir/

cp member_2.pub keydir/ git

add keydir/member_1.pub keydir/member_2.pub

修改gitosis.conf,并提交

  1. [group apps]
  2. members = wirror800
  3. members = wirror800 member_1 member_2
  4. writable = apps
  5.  
  6. git commit -a -m “Granted new members commit rights to apps”
  7. git push

其它成员获取apps的代码

git clone git@YOUR_SERVER:apps.git

wuxinxinggg使用总结:

1、上传代码到git服务器:

①修改gitosis-admin下的gitosis.conf,添加工程配置,如下所示:

  1. [group git-test]
  2. members = wuxinxinggg@wuxinxinggg.com //其中members的名要和gitosis-admin目录下的keydir目录中的key名对应上
  3. writable = git-test //此处的git-test和上面group中的git-test一样,都是你上传代码的工程文件夹名

②在gitosis-admin同级目录下创建git-test目录,并将代码拷贝到该目录

③进入git-test,依次执行:

git init
  1. git remote add origin git@host:git-test.git
  2. git add . //此处的点别忘记了
  3. git commit -a -m "www.wuxinxinggg.com" //其中www.wuxinxinggg.com为你上传代码的comment
  4. git push origin master //或者 git push origin master:refs/heads/master

2、更新代码后push到git服务器流程:

更新代码后如果直接git push,系统会提示Everything Up-to-date,但是实际上服务器并没有做对应修改,所有必须要按照下面的流程走,以保证代码成功push到服务器

  1. git add .
  2. git commit -a -m "update something by www.wuxinxinggg.com"
  3. git push

3、git服务器端clone和push工程代码

网上搜索关于git服务器既做服务器,同时做服务器代码的管理员,但是没有找到,今天在一篇博文上看到了,其实git服务器没有服务器端和客户端的说法,只是clone的时候要指明工程的详细路径罢了,如下所示:

"客户端"clone工程代码:

  1. git clone git@wuxinxinggg.com:gitosis-admin.git
  2.  
  3. "服务器端"clone工程代码
  4.  
  5. git clone git@localhost:/home/git/repositories/gitosis-admin.git

4、git服务器clone非默认端口代码

  1. git clone ssh://user@host:port/home/git/repositories/gitosis-admin.git

错误总结:
1、添加新项目代码到服务器报Repository read access denied

查看服务器上的gitosis-admin.git目录下的gitosis.conf是否软连接到repositories目录下的gitosis.conf文件,并查看其中的内容是否和客户端管理员的配置文件相同,如若不是,请按照上面的更新代码后push到git服务器流程重新更新gitosis-admin到服务器

转自:

http://www.wuxinxinggg.com/ubuntu%E6%90%AD%E5%BB%BAgit%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%E5%BF%83%E5%BE%97%E4%BD%93%E4%BC%9A

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值