胖蔡说技术
随便扯扯

Git 服务器配置

SSH连接

1、git下载

$sudo apt-get update
$sudo apt-get install git

2、生成SSH公钥(开发端)

       大多数Git服务器都会选择使用SSH公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的就要需要生成一个。一般SSH公钥默认存储在账户的主目录下的~/.ssh目录。
$ssh-keygen
第一次是让你设置公钥文件的位置和公钥文件名,后面两次是让你甚至公钥连接的密码,可以不设置密码则默认不设置密码。

3、架构服务器(Ubuntu远程服务器端)

     1)创建一个操作git仓库的用户
        $sudo adduser git
      2)创建存放SSH公钥的管理文件
        $su git
        $mkdir ~/.ssh
        $cd ~/.ssh
        $touch authorized_keys
      3)将开发者的SSH公钥添加到git用户的authorized_keys文件中。
        $cat /tmp/id_rsa.pub >> ~/.ssh/authorized
      4)创建一个git裸库
         $mkdir /opt/git
         $cd /opt/git
         $mkdir project.git
         $cd project.git
         $git --bare init
       5)开发者操作提交(管理员)
         $cd project
         $git init
         $git commit -a -m "initial project"
         $git remote add origin git@servername:/opt/git/project.git
         $git push origin master
        6)一般开发者
          $git clone git@servername:/opt/git/project.git
          将项目clone下来就可以对其进行操作了。
        7)限制git用户的活动范围
           若是未禁止git的shell登录权限的话,开发者可通过git用户权限(ssh协议)直接访问服务器
            $ssh git@servername
           $vi /etc/passwd
            会看到git的用户信息git:x:1002:1002:git,,,,git:/home/git:/bin/bash,将其改为
            git:x:1002:1002:git,,,,git:/home/git:/usr/bin/git-shell
             如此,git用户就只能用ssh连接来推送和获取git仓库,而不能直接使用主机shell.尝试普通SSH登录,会直接拒绝。

公共访问

      可以通过匿名的方式对git仓库进行读操作。或许对小型的配置来说最简单的办法就是运行一个静态的web服务。把他的根目录设定为Git仓库所在的位置,然后开启post-update挂钩(每当当前的仓库进行提交更新的时候,server就会执行hooks/post-update脚本命令)。基本步骤如下所示:

1、建立一个git 裸仓库

     $mkdir publicaccess.git
     $cd publicaccess.git
     $git --bare init

2、打开post-update挂钩

     $mv hooks/post-update.sample hooks/post-update
     $sudo chmod a+x hooks/post-update
    git1.6之前版本,可省略mv操作,挂钩加后缀名.sample是之后版本才添加的

3、安装apache2,搭建web环境

     $sudo apt-get install apache2
     $vi /etc/apache2/apache2.conf
      添加一个git裸仓库目录,如:
      +
      +  Options Indexes FollowSymLinks
      +    AllowOverride None
      +    Require all granted
      +
     $vi /etc/apache2/sites-enabled/000-default.conf
     修改网页根目录,修改如下:
   

       ServerAdmin webmaster@localhost
  +    ServerName enjoytoday.cn
  +     DocumentRoot /home/git
       ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined

4、设置git仓库权限,并重启apache服务

   $sudo chown -R git:www-data publicaccess.git
   $/etc/init.d/apache2 restart
   重启apache2服务

5、读取git项目

  $git clone http://enjoytoday.cn/publicaccess.git
如此就可成功让人读取你的git项目了

GitWeb

  为了使得我们可以得到一个更好的访问方式,我们可以通过gitweb实现一个简单的web界面的访问。具体的实现有两种方式,一种是通过git自带的gitweb的CGI脚本来实现,还有一种是通过网页服务软件(gitweb软件包)来实现,具体实现方法如下:

1、通过git命令实现

      此种方法需要先下载一个lighttpd工具
$sudo apt-get install lighttpd
       安装过后,该服务会自动启动,然后就是开启gitweb服务,在git项目下
$git instaweb
      会自动开启一个当前网页1234端口的一个gitweb网页,如果是本地即http://127.0.0.1:1234展示git项目
      关闭服务可使用
$git instaweb --stop
2、安装gitweb软件包
      如果需要为团队或者某个开源项目长期运行 GitWeb,可以使用gitweb安装包安装实现网页服务。
      $git clone git://git.kernel.org/pub/scm/git/git.git
      $cd git/
      $make GITWEB_PROJECTROOT="/opt/git" \
        prefix=/usr gitweb/gitweb.cgi
      $sudo cp -Rf gitweb /var/ww/
     通过指定 GITWEB_PROJECTROOT 变量告诉编译命令 Git 仓库的位置。然后,设置 Apache 以 CGI 方式运行该脚本,添加一个 VirtualHost 配置:
   ServerName gitserver                                                                  
   DocumentRoot /var/www/gitweb                                                                                    
       Options ExecCGI FollowSymLinks SymLinksIfOwnerMatch  
       AllowOverride All order allow,deny                                       
       Allow from all                                                                          
       AddHandler cgi-script cgi                                                       
       DirectoryIndex gitweb.cgi
注意需要在apache2的端口配置文件/etc/apache2/ports.conf中添加对8080端口的监听。添加如下:
Listene    8080
赞(1) 打赏
转载请附上原文出处链接:胖蔡说技术 » Git 服务器配置
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏