服务搭建

一、服务搭建方式
1、本地文件系统搭建,利用NFS共享存储
   --git clone /xxxx/testproj.git
   --默认会建立本地分支master 并追踪远程仓库 origin/master
   --git remote -v 查看远程仓库
   --添加其它的本地分支到远程仓库的其它分支并切换到当前分支
     git fetch origin/hotfix 获取远程分支更新
     git checkout -b  hotfix origin/hotfix
   --git pull/push
  !!缺点回家可能无法访问,比ssh慢
2、ssh搭建
 =====服务端====建立一个用户 git
 1)在服务器上建立共享目录 mkdir hello.git ,设置目录的所有者是git
 2) cd hello.git
 3) git --bare init
 4) 限定登陆shell为git-shell --/usr/bin/git-shell
    git:x:1000:1000::/home/git:/usr/bin/git-shell
 =====客户端
 1)ssh-keygen生成密钥对
 2)ssh-copy-id 提交密钥给服务器,添加到authorized_keys文件中
 3)git clone xxxxxxxxx
 4) git pull/push
3、git协议
无授权机制、要么所有人都可以下载或push,9418守护进程,可以配置gitosis来添加授权模块
搭建服务
4、http协议只读服务
   1)建立bare仓库,放到web目录
     --纯粹git clone --bare xxxxxx.git,放到web目录
   2)配置特定的挂勾即可允许客户端克隆
     $ cd /var/www/htdocs/
     $ git clone --bare /path/to/git_project gitproject.git
     $ cd gitproject.git
     $ mv hooks/post-update.sample hooks/post-update
     $ chmod a+x hooks/post-update
     post-update
    挂钩会默认运行合适的命令( git update-server-info )来确保通过
    HTTP 的获取和克隆正常工作。这条命令在你用 SSH 向仓库推送内容时运行;
    3)!!!!!进行过push操作后,库才可以被通过http克隆
5、GitWeb
 1)源码安装
 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/www/
 2)配置
     <VirtualHost *:80>
      ServerName gitserver
      DocumentRoot /var/www/gitweb
      <Directory /var/www/gitweb>
          Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
          AllowOverride All
          order allow,deny
          Allow from all
          AddHandler cgi-script cgi
          DirectoryIndex gitweb.cgi
      </Directory>
    </VirtualHost>
6、git协议加权限控制,守护进程加权限控制gitosis
   1) 服务器上安装python-setuptools
   2)服务器上下载git clone https://github.com/tv42/gitosis.git
      cd gitosis/
      python setup.py install
      useradd git
   3) 复制管理员的共钥到服务器上
      scp id_rsa.pub  root@192.168.4.42:/tmp/a.pub
   4)初始化权限管理项目gitosis-admin.git
      su - git
      gitosis-init < /tmp/a.pub
      在/home/git/下建立里两个目录 gitosis   repositories
   5)修改gitosis-admin.git中post-update钩子为执行权限
     chmod a+x repositories/gitosis-admin.git/hooks/post-update
   6)管理员机器克隆管理项目到本地机器
    git clone git@192.168.4.42:gitosis-admin.git
   !!!!添加新的成员
   ===在客户机ssh-keygen 生成密钥对,把公钥交给管理员
   管理员通过gitosis-admin库,把公钥文件进行用户的命名,复制到keydir下,如:jy.pub
   修改配置文件:
   [group test]
    members=root@gitvm jy------jy就是公钥的文件的名字,注意空格分割。
    writable=test
  7)通过自定义gitosis.conf文件,添加新的
    [group test2]
     members=root@gitvm jy------jy就是公钥的文件的名字,注意空格分割。
     writable=test2---
    git clone时每若test2不存在,那么就自动创建git库

posted @ 2019-09-14 19:36  FromScratch  阅读(386)  评论(0编辑  收藏  举报