`
032615
  • 浏览: 61008 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Git服务器在Ubuntu中的搭建

    博客分类:
  • Git
 
阅读更多

 公司最近准备启用git来管理公司项目,在CTO张头的带领下,历经挫折,终于完成了git服务器的配置工作。在使用Git之前,大家首先要明确几个概念:git服务器、git客户端和git服务器管理员。本文中使用ubuntu当作git服务器,pcA和pcB分别作为服务器管理员和git客户端。通常,git服务器上需要安装OpenSSH Server、Git、Gitosis和Apache2(如果想使用Gitweb的话)。

    本文将主要介绍git服务端和管理员相关的一些配置方法,客户端及管理员的git操作方法将在另一篇文章中作详细介绍。

(一)   Git服务端

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

 

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

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

    执行命令:

    sudo apt-get install openssh-server

 

3.修改ssh服务端配置文件 /etc/ssh/sshd_config (当前用户为wirror800)

   Port 22 # 修改成你想要的登陆端口,如2222

   PermitRootLogin no # 禁止root用户登陆

   StrictModes yes # 检查密钥的用户和权限是否正确,默认打开的

   RSAAuthentication yes # 启用 RSA 认证

   PubkeyAuthentication yes # 启用公钥认证

   PasswordAuthentication no # 禁止密码认证,默认是打开的

   ServerKeyBits 1024 # 修改后变为此状态,将ServerKey强度改为1024比特

   PermitEmptyPasswords no # 修改后变为此状态,禁止空密码进行登录

 

   修改完成后,重启ssh服务:

   sudo /etc/init.d/ssh restart

   注意:至此,服务端SSH的操作就已经结束了。网上说的“ id_rsa文件拷贝到Client端的~/.ssh/目录下,将id_rsa.pub拷贝到

Server端的~/.ssh/目录下,改名为authorized_keys ”其实都是不准确的。id_rsa是使用 ssh-keygen生成的rsa私钥, id_rsa.pub

是同时生成的公钥,服务器端通信使用的秘钥可以应该由服务器管理员来创建和管理,如果你想把当前用户wirror800作为管理

员也是可以的,相关管理员的操作见本文第二部分。不推荐在ubuntu服务器端建立管理员帐号。

    建议大家参考一下OpenSSH的相关内容:http://www.freebsd.org/doc/zh_CN/books/handbook/openssh.html

 

4.安装git (当前用户为wirror800)

    sudo apt-get install git-core

    安装git过程中可能会遇到一些依赖包下载失败的情况,主要是由于ubuntu的中文站点访问的问题,我们可以到其英文站点

上下载相关文件并进行手动安装。给大家一个链接地址:

     http://archive.ubuntu.com/ubuntu/pool/main/

 

5.安装gitosis(为什么要使用gitosis是大家首先需要明确的问题) (当前用户为wirror800)

    (1)在你喜欢的位置下,新建一个文件夹,用来存放下载的gitosis文件,如

    mkdir ~/gitosis_setup

    (2)安装gitosis

    cd ~/ gitosis_setup

    git clone git://eagain.net/gitosis

    cd gitosis

    sudo python setup.py install

    注意:如果python setup.py install失败,需要安装python-setuptools.py

    sudo apt-get install python-setuptools.py

 

6. 为gitosis创建系统用户 (当前用户为wirror800)

     sudo adduser --system --shell /bin/sh --gecos ''git SCM user'' --group --disabled-password --home /home/git  git

     这种方法是网上比较常见的方法,创建的是一个禁用密码的git用户,但在使用su命令切换git用户的时候,空密码老是

验证失败,大家可以使用下面的方法来创建git用户:

      sudo useradd -m git

      sudo password git

 

7. 运行gitosis(当前用户为wirror800)

      (1)将管理员生成的公钥上传或拷贝到服务器上。这里的公钥需要在git服务器管理员下使用ssh-keygen -t rsa命令来创建,

网上流传的方法是scp /your pub_path/id_rsa.pub ${SERVER_IP}:id_rsa.pub。我们这里使用的是直接U盘拷贝的方法。

      (2)初始化gitosis

      进入到拷贝过来的id_rsa.pub所在目录:cd /tmp

      sudo chmod 777 id_rsa.pub

      sudo -H -u git gitosis-init < id_rsa.pub (或者切换到git用户下执行gitosis-init < id_rsa.pub也可以,记得exit切换回当前用户)

      此时,会在/home/git目录下生成一些目录,如果想要别人能够clone gitosis-admin.git,需要执行以下操作:

      sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

 至此,gitosis的安装工作已完成,其相关配置可以有管理员来操作,然后再提交到服务器上。以下是关于gitweb的安装配置,

不需要的同学,请跳过下面的8~10步。

 

8.安装gitweb (当前用户为wirror800)

   sudo apt-get install gitweb

 

9.安装apache2

  sudo apt-get install apache2

 

10.配置gitweb (当前用户为wirror800) 
(1)默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:
   cd /var/ www/ 
   sudo ln -s / usr/ share/ gitweb/* .

   (注意后面的点)

(2)修改配置:

   sudo vi /etc/ gitweb.conf

   将 $projectroot 改为gitosis-admin.git所在目录: /home/git/repositories

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

    sudo chmod 777 -R /home/git/repositories

 

11.编辑apache2配置文件,建立web站点 (当前用户为wirror800,默认情况下可以忽略此步骤)

(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配置文件形如:(可自行修改,这里不做详细介绍)
<Directory "/srv/www/cgi-bin/gitweb">           
      Options FollowSymlinks ExecCGI          
      Allow from all                          
      AllowOverride all                       
      Order allow,deny                        

      <Files gitweb.cgi>
           SetHandler cgi-script
      </Files>                    
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
</Directory>

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

 gitweb

 

(二)   Git 管理员(git bash下运行)

1.安装msysgit,

    下载地址:http://code.google.com/p/msysgit/downloads/list

     缺省安装。

 

2.生成服务器管理员公钥。

    执行命令ssh-keygen -t rsa,操作时刻参照第一部分第7步,用于提供给服务器端初始化gitosis。

 

3.从服务器 克隆gitosis-admin.git

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

    然后,新建一个目录mkdir gitproject

    git clone git@YOUR_SERVER:gitosis-admin.git

    ( YOUR_SERVER可以是你的服务器名称或者ip,我这里的ubuntu的ip为192.168.1.102 )


4. 编辑 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中的用户名就是刚才上传的公钥里面的用户名。

     

     把内容修改为:

     [gitosis]
     gitweb = yes

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

     [group apps ]
     writable = apps
     members = Administrator@LILIN wirror800@192.168.1.102

     其中 gitweb = yes表示启用对gitweb的支持。 这里定义了一个叫apps 的组,授予Administrator@LILIN和wirror800@192.168.1.102

两个用户写“apps ”这个repo的权限

    

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

     git commit -a -m “created a new repository”

     git push

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

 

5.创建一个app的repo

     mkdir apps

     cd apps

     git init


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

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

   

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

8. 提交代码

    git remote add origin git@YOUR_SERVER:apps.git

     git add .

     git commit -am "imitial import"

    git push origin master:refs/heads/master


9.增加成员的公钥到系统中

    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,并提交

    [group apps]
    - members = wirror800
    + members = wirror800 member_1 member_2
    writable = apps

 

    git commit -a -m "Granted new members commit rights to apps"
    git push

 

10. 其它成员获取apps的代码

    git clone git@YOUR_SERVER:apps.git

 

  在windows下安装git服务器也是可以的,我们开始尝试使用Cygwin来操作,但在使用gitweb的时候遇到困难。git毕竟诞生于

linux,还是建议大家使用linux来搭建git服务器吧。Mr. Zhang也提供了一个可以在windows下安装git服务器的方法,链接地址奉献

给大家:http://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/ 。再次感谢CTO Mr. Zhang 这几天

执着的奉献精神,让我受益匪浅。

分享到:
评论

相关推荐

    搭建git服务器

    而在团队协作中,搭建自己的Git服务器不仅可以更好地控制代码的安全性,还能根据实际需求定制服务,提升团队的开发效率。 本文将以Ubuntu系统为例,详细介绍如何搭建一个基于Gitolite的Git服务器。通过本教程的学习...

    Ubuntu下Git服务器搭建

    Ubuntu下Git服务器打搭建 客户端的使用教程和git学习资料等,资源分虽然要了10分但是这是我一周总结的,现在没分了想坑一点积分。有积分后我就免费下载了,下载的人不要为要积分而喷。也谢谢大家给我积分

    git服务器的搭建

    在搭建Git服务器的过程中,可能会遇到各种各样的问题,其中一种常见的问题是由于使用错误的命令(`adduser` 和 `useradd`)导致后续无法正常切换到Git用户。本文将详细介绍如何正确地搭建Git服务器,并解决在搭建...

    ubuntu12.04 git服务器的搭建

    在ubuntu 12.04 上完成的git服务器搭建步骤。

    ubuntu 完整安装git服务器

    ### Ubuntu 完整安装 Git 服务器知识点解析 ...这对于初学者来说是一份非常实用且详尽的指南, 可以帮助他们在 Ubuntu 系统中快速搭建起一套完整的 Git 服务器环境, 并能有效地管理用户对各个仓库的访问权限。

    Ubuntu下git服务器的搭建和基本使用[参考].pdf

    本文详细介绍了在Ubuntu系统下搭建和使用Git服务器的步骤,包括准备环境、安装ssh-server、安装git-core、安装gitosis、创建系统用户、运行gitosis、Git服务器管理员克隆仓库和修改gitosis.conf权限文档等方面的知识...

    git基础(git服务器搭建+git教程+git廖雪峰)

    1. **安装Git服务器**:在服务器上安装Git,通常使用`sudo apt-get install git`(Ubuntu/Debian)或`yum install git`(CentOS/RHEL)。 2. **初始化仓库**:在服务器上选择合适的位置创建空仓库,使用`git init --...

    Ubuntu下用Gitosis搭建GIT代码服务器及Eclipse下的Git操作

    Ubuntu下用Gitosis搭建GIT代码服务器及Eclipse下的Git操作

    liunx下搭建git服务器

    在Linux系统中搭建Git服务器是开发团队协作的重要一环,它可以帮助团队成员高效地管理和版本控制代码。Git作为分布式版本控制系统,其强大的功能和灵活性深受程序员喜爱。本篇将详细介绍如何在Linux环境下设置一个...

    搭建git服务器.docx

    1. 安装 Git 工具:在服务器上安装 Git 工具,Ubuntu 使用 apt install git,Centos 使用 yum install git。 2. 创建 Git 用户和组:使用 useradd git 和 passwd git 命令创建 Git 用户和组,以便与其他用户隔离。 3...

    git+ubuntu+ssh服务器搭建过程.pdf

    在本次搭建过程中,我们将使用 Ubuntu 作为操作系统, Git 作为版本控制系统,OpenSSH 作为远程访问工具。整个搭建过程可以分为七个步骤:安装 Ubuntu 系统、更新系统、安装 OpenSSH 服务器端、修改 SSH 配置文件、...

    在 Ubuntu 下搭建 git gitosis.docx

    在Ubuntu系统中搭建Git服务器,特别是使用gitosis作为版本控制系统管理工具,是一个常见的需求,尤其对于软件开发团队来说。Gitosis允许你集中管理和控制多个Git仓库,并为不同的用户或用户组设置权限。以下是一个...

    在 Ubuntu 下搭建 git gitosis.pdf

    在Ubuntu系统中搭建Git服务器,特别是使用gitosis作为版本控制系统管理工具,是一个常见的做法,尤其适合小型团队或个人开发者协作项目。以下将详细介绍这个过程。 首先,我们需要进行一些准备工作。在Mac上安装...

    ubuntu自己搭建服务器代码

    在Ubuntu系统上搭建自己的服务器是许多开发者和系统管理员经常进行的操作。这涉及到多个技术环节,包括Web服务器的配置、FastCGI的设置以及代码的部署。以下是对标题和描述中涉及知识点的详细解释: 1. **Ubuntu...

    git代码服务器搭建步骤.pdf

    - 这些工具是搭建Git服务器的基础,其中`git-core`包含了Git版本控制系统的各个工具,`openssh-server`允许远程通过SSH协议访问,`openssh-client`是客户端工具,用于连接远程服务器。 2. **Gitosis的安装与配置**...

    ubuntu上搭建jenkins

    在Ubuntu系统上搭建Jenkins是构建自动化服务器的一个常见选择,尤其对于开源软件和Java项目而言。Jenkins是一款功能丰富的持续集成工具,可以帮助开发者自动化构建、测试和部署代码,提高开发效率。下面我们将详细...

    Amlogic在UBUNTU环境搭建.pdf

    -Amlogic 在 UBUNTU 环境搭建中,首先需要安装 ubuntu 系统,然后安装 ssh、ftp 等工具链。接下来,需要安装 JDK、git-core 等开发工具,并配置环境变量。然后,可以编译 an droid、uboot 和 kernel。 一、 系统...

    git服务搭建文档说明

    在Ubuntu或Debian系统中,可以运行以下命令来安装基础组件: ```bash sudo apt-get update sudo apt-get install curl openssh-server ca-certificates postfix ``` 这里,`curl`用于下载文件,`openssh-server`是...

    Windows下Gitblit服务器搭建教程.docx

    本教程指导您在 Windows 下搭建 Gitblit 服务器,包括 JDK 的安装配置、Gitblit 的下载和安装、Gitblit 文件的配置、Gitblit 服务的安装等步骤。按照这些步骤,您可以成功搭建一个 Gitblit 服务器,用于管理和查看 ...

Global site tag (gtag.js) - Google Analytics