设为首页 收藏本站
查看: 965|回复: 0

[经验分享] Git配置手册

[复制链接]

尚未签到

发表于 2018-9-18 11:42:04 | 显示全部楼层 |阅读模式
  Git服务器配置
  1.部署环境:
  (1)系统版本:CentOS 5.5
  (2)服务端 IP:172.16.34.235   Hostname:CentOS5-A
  客户端1 IP:172.16.34.236  Hostname:CentOS5-B
  客户端2 IP:172.16.34.237  Hostname:CentOS5-C
  (3)所需包下载地址:
  wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tar.bz2
  wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
  wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
  2. python 安装
  ----------------
  查看python版本
  python -V
  显示结果:
  Python 2.4.3
  升级到Python 2.7.1
  cd /data/softs
  tar xvjf Python-2.7.1.tar.bz2
  cd Python-2.7.1/
  ./configure --enable-shared
  make
  make install
  ldconfig
  3.setuptools 安装 为安装gitosis做准备
  cd /data/softs
  tar -zxvf setuptools-0.6c11.tar.gz
  cd setuptools-0.6c11
  python setup.py build
  python setup.py install
  4.Git 安装
  ----------------
  首先需要安装git的依赖包
  yum install curl
  yum install curl-devel
  yum install zlib-devel
  yum install openssl-devel
  yum install perl
  yum install cpio
  yum install expat-devel
  yum install gettext-devel
  cd /data/softs
  tar -zxvf git-latest.tar.gz
  cd git-2012-11-13
  autoconf
  ./configure --with-python=/usr/local/bin/python2.7
  make
  make install
  git --version
  5.添加用户git
  useradd -r -s /bin/sh -c 'git version control' -d /home/git git
  passwd git
  mkdir -p /home/git
  chown git:git /home/git
  注:步骤2-5  三台机器上均需要安装
  6.安装gitosis(服务端)
  cd /data/softs
  git clone git://github.com/res0nat0r/gitosis.git
  Cloning into 'gitosis'...
  remote: Counting objects: 727, done.
  remote: Compressing objects: 100% (217/217), done.
  remote: Total 727 (delta 510), reused 690 (delta 494)
  Receiving objects: 100% (727/727), 110.70 KiB | 53 KiB/s, done.
  Resolving deltas: 100% (510/510), done.
  cd gitosis
  python setup.py install
  7.生成本机密钥,上传密钥到服务器临时目录
  (1)切换到客户端1
  # su git
  sh-3.2$ ssh-keygen -t rsa
  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/git/.ssh/id_rsa):
  Created directory '/home/git/.ssh'.
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:

  Your>  Your public key has been saved in /home/git/.ssh/id_rsa.pub.
  The key fingerprint is:
  50:93:2a:dd:50:b2:dd:c2:aa:a6:f9:a6:9f:55:82:b9 git@CentOS5-B
  sh-3.2$  scp /home/git/.ssh/id_rsa.pub 172.16.34.235:/tmp/id_rsa_client1.pub
  The authenticity of host '172.16.34.235 (172.16.34.235)' can't be established.
  RSA key fingerprint is 0f:92:64:29:ab:02:4a:33:b2:8b:39:b4:8f:0d:88:40.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added '172.16.34.235' (RSA) to the list of known hosts.
  git@172.16.34.235's password:
  id_rsa.pub                                              100%  395     0.4KB/s   00:00
  sh-3.2$
  (2)客户端2作同样操作
  8.初使化gitosis,生成管理库
  sh-3.2$ gitosis-init  master
  sh-3.2$
  回到服务端:
  cat /home/git/.ssh/authorized_keys
  sh-3.2$ cat authorized_keys
  ### autogenerated by gitosis, DO NOT EDIT
  command="gitosis-serve hanxiaoqi",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA02vPejh7OfzHtFc3dlA+k55X9kttJ/8WgK2YiXObAElXJ+CAzZKayciUfbY4A3Xl55kV***YhvfxdndBWXAj2za8iSCW535XMgFBXH/gtD2+Ecql2oUu0TOoAldgZ6jJ03hon+B0T4znWZTmfNKY4GauWgj65Z+ex+VZoO357089mTGMnoOZx1sblC+7vr9TnFoSh1hOqdYlaBjvB8BtcXrU4OVbZphPE1BxmT6OSDWx677M157uWsyZFxH5ocr8hqZ88+zpVZe1i5VEZpnXETHlXb6Ix/4mEutscJ5WGWjZEJgUNGv+jYTSvtDS+7z/A9ot93kze46RxPFuRB6Cyw== hanxiaoqi@CentOS5-C
  command="gitosis-serve song",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAqhgzC2oi8JrYNZcyZ//ojddJCqalKJ0mBtMCfq9VEHPh0YjaZqdNd4HeqHrtFoRe3C+6zQwqAesd+q01gMyOTAyAI76d5b4j81MNCyvGbzbhzc/xOOxCpnT9H5ZKoChzoh88Tah1pjsZDW6spBHW/HRtaLRKB3k6fAGyctE5heJJUqGOknnDfzw+ZyzfFxynNiYvgDgWW5MfALFz/ltzo41QwL30Lfj6ZuHF2kV4Olc7jK1vHzm0/riU3a6BeYf5NAmATNlP94QbThUBdq/MpKJ7OFDXCNXuFBBJ9RANtwA3m8pFb48cZ4ebuMfd8YQ0I2Rb+OvVxVDT0XGYU/uNAw== song@CentOS5-B
  command="gitosis-serve git@CentOS5-C",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0pO/1EcLPBZOL8zPASs85srQGBz4QHv3aV0SR/zJw/ViuUwY8toMtRp0OsQ8VaqqkP3RIh6J49ZgtmDnbrrcLIkpnTgHEqU+s7WoHmZWnttMEYs8aMoSvFT5pxR9k54baHKaA2TmUtTmCJnVCqPx2uSP5tb+Cww18dj9+LzdJ/fCllcwuGfg9z0G8seedgq/Iv22XIMH045ciUNC7P02kSq2tjCctJtDtP8Cb2MYhurySOVBqjAx+GISrXJXUqRI1Gsr1CjlxazsoRwnHUz217btE+xnpwkQ7lxPMNyPS2fMbR+chU/Pg7Yfx43xxhePhsPqCmYFLaX87gyBRV/GVw== git@CentOS5-C
  command="gitosis-serve git@CentOS5-B",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1o68X0/pVW3HM3CZTZhSASOhjj3lI1s0Txzt8Yg1NoEVY/NAW7oFCENxu0Wg2Cxrb93w0HfSTHb/2dXtzhzb4Oq7XaxDYpy+i5M3y1xiQkZoqL30qh7n++RWjpMwObgs00PzcV4kiZ+UCU2gnDlJl+t8rc6CwlEcphoN9IPexiGUJIeJeRWA0c+BGJH0ds3I/D+TGX3Jr92R7k2zsn3pmD6i9px6EtDK/QKFzPnnBQ9psCRiHJk3qu33sghJuUlp7vQU6zKylxMZ9ypevo9nJnA/gUf0PLQKSgvj39/k5PIGVrLOt4o3xu/Z8PeM/dd8cpDEd3hHhFmw+Y0Ev+CaXw== git@CentOS5-B
  到此客户端用户公钥已经添加到/home/git/.ssh/authorized_keys文件中。
  10.创建空仓库
  在服务端创建空仓库,并初始化。
  sh-3.2$ cd /home/git/repositories/
  sh-3.2$ mkdir project.git
  sh-3.2$ cd project.git/
  sh-3.2$ git init --bare
  Initialized empty Git repository in /home/git/repositories/project.git/
  sh-3.2$ ls
  branches  config  description  HEAD  hooks  info  objects  refs
  sh-3.2$
  在客户端直接clone该仓库就可以了
  1.客户端1:
  切换到git用户
  sh-3.2$ cd /home/git
  sh-3.2$ git clone git@172.16.34.235:project.git
  Cloning into 'project'...
  warning: You appear to have cloned an empty repository.
  sh-3.2$ ls
  gitosis-admin  project
  sh-3.2$ cd project/
  sh-3.2$ vi hello
  编辑文件
  -----------------
  hello
  --------------------
  sh-3.2$ git add .
  sh-3.2$ git commit -am "add hello file"
  [master (root-commit) 8c6f80f] add hello file
  1 file changed, 1 insertion(+)
  create mode 100644 hello
  sh-3.2$ git push origin master
  Counting objects: 3, done.
  Writing objects: 100% (3/3), 214 bytes, done.
  Total 3 (delta 0), reused 0 (delta 0)
  To git@172.16.34.235:project.git
  * [new branch]      master -> master
  sh-3.2$
  2.客户端2:
  切换到hanxiaoqi用户
  [root@CentOS5-C home]# su hanxiaoqi
  [hanxiaoqi@CentOS5-C home]$ pwd
  /home
  [hanxiaoqi@CentOS5-C home]$ cd hanxiaoqi/
  [hanxiaoqi@CentOS5-C ~]$ ls
  [hanxiaoqi@CentOS5-C ~]$ pwd
  /home/hanxiaoqi
  [hanxiaoqi@CentOS5-C ~]$ git clone git@172.16.34.235:project.git
  正克隆到 'project'...
  remote: Counting objects: 3, done.
  remote: Total 3 (delta 0), reused 0 (delta 0)
  接收对象中: 100% (3/3), done.
  [hanxiaoqi@CentOS5-C ~]$ ls
  project
  [hanxiaoqi@CentOS5-C ~]$ cd project/
  [hanxiaoqi@CentOS5-C project]$ ls
  hello
  [hanxiaoqi@CentOS5-C project]$ vi hello2
  hello2
  ~
  ~
  "hello2" [新] 1L, 7C 已写入
  [hanxiaoqi@CentOS5-C project]$ ls
  hello  hello2
  [hanxiaoqi@CentOS5-C project]$ git add .
  [hanxiaoqi@CentOS5-C project]$ git commit -am "add hello2 file by hanxiaoqi"
  *** Please tell me who you are.
  Run
  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

  to set your account's default>
  Omit --global to set the>
  fatal: empty>  [hanxiaoqi@CentOS5-C project]$ git config --global user.email "hanxiaoqi@xqhan.com"
  [hanxiaoqi@CentOS5-C project]$ git config --global user.name "hanxiaoqi"
  [hanxiaoqi@CentOS5-C project]$ git commit -am "add hello2 file by hanxiaoqi"
  [master fd9c5fa] add hello2 file by hanxiaoqi
  1 file changed, 1 insertion(+)
  create mode 100644 hello2
  [hanxiaoqi@CentOS5-C project]$ git push origin master
  Counting objects: 4, done.
  Compressing objects: 100% (2/2), done.
  Writing objects: 100% (3/3), 278 bytes, done.
  Total 3 (delta 0), reused 0 (delta 0)
  To git@172.16.34.235:project.git
  8c6f80f..fd9c5fa  master -> master
  [hanxiaoqi@CentOS5-C project]$
  3.客户端1:
  切换到song用户
  [root@CentOS5-B .ssh]# su song
  [song@CentOS5-B .ssh]$ cd /home/song
  [song@CentOS5-B ~]$ ls
  [song@CentOS5-B ~]$ git clone git@172.16.34.235:project.git
  正克隆到 'project'...
  remote: Counting objects: 6, done.
  remote: Compressing objects: 100% (3/3), done.
  remote: Total 6 (delta 0), reused 0 (delta 0)
  接收对象中: 100% (6/6), done.
  [song@CentOS5-B ~]$ ls
  project
  [song@CentOS5-B ~]$ cd project/
  [song@CentOS5-B project]$ ls
  hello  hello2
  [song@CentOS5-B project]$ vi hello3
  hello3
  ~
  "hello3" [新] 1L, 7C 已写入
  [song@CentOS5-B project]$ git add .
  [song@CentOS5-B project]$ git commit -am "add hello3 file by song"
  *** Please tell me who you are.
  Run
  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

  to set your account's default>
  Omit --global to set the>
  fatal: empty>  [song@CentOS5-B project]$ git config --global user.email "hanxiaoqi@xqhan.com"
  [song@CentOS5-B project]$ git config --global user.name "hanxiaoqi"
  [song@CentOS5-B project]$ git commit -am "add hello3 file by song"
  [master f645290] add hello3 file by song
  1 file changed, 1 insertion(+)
  create mode 100644 hello3
  [song@CentOS5-B project]$ git push origin master
  ERROR:gitosis.serve.main:Repository write access denied
  fatal: Could not read from remote repository.
  Please make sure you have the correct access rights
  and the repository exists.
  [song@CentOS5-B project]$
  4.客户端2
  切换到git用户
  [root@CentOS5-C home]# su git
  sh-3.2$ cd /home/git/
  sh-3.2$ ls
  gitosis-admin
  sh-3.2$ cd gitosis-admin/
  sh-3.2$ ls
  gitosis.conf  keydir
  sh-3.2$ vi gitosis.conf 开通song用户写权限
  [gitosis]
  [group gitosis-admin]
  members = git@CentOS5-B git@CentOS5-C hanxiaoqi song
  writable = gitosis-admin
  [group project]
  writable = project
  members = git@CentOS5-B git@CentOS5-C hanxiaoqi song
  #[group project_ro]
  #readonly = project
  #members = song
  ~
  "gitosis.conf" 11L, 256C written
  sh-3.2$ git add .
  sh-3.2$ git commit -am "user song writer"
  [master 1c80b8d] user song writer
  1 file changed, 4 insertions(+), 4 deletions(-)
  sh-3.2$ git push origin master
  Counting objects: 5, done.
  Compressing objects: 100% (3/3), done.
  Writing objects: 100% (3/3), 361 bytes, done.
  Total 3 (delta 1), reused 0 (delta 0)
  To git@172.16.34.235:/gitosis-admin.git
  e1503c4..1c80b8d  master -> master
  sh-3.2$
  5.回到客户端1到song用户
  再次执行:
  [song@CentOS5-B project]$ git push origin master
  ERROR:gitosis.serve.main:Repository write access denied
  fatal: Could not read from remote repository.
  Please make sure you have the correct access rights
  and the repository exists.
  [song@CentOS5-B project]$ git push origin master
  Counting objects: 4, done.
  Compressing objects: 100% (2/2), done.
  Writing objects: 100% (3/3), 304 bytes, done.
  Total 3 (delta 0), reused 0 (delta 0)
  To git@172.16.34.235:project.git
  fd9c5fa..f645290  master -> master
  [song@CentOS5-B project]$
  11.viewgit
  viewGit 是一个 Git 版本控制系统的 Web 接口,用来查看资源库中的信息,viewGit 安装和升级都非常简单。
  首先安装nginx+php,因为viewgit是php环境开发
  viewGit安装
  [root@CentOS5-A repositories]# git clone git://repo.or.cz/viewgit.git
  Cloning into 'viewgit'...
  remote: Counting objects: 1675, done.
  remote: Compressing objects: 100% (503/503), done.
  remote: Total 1675 (delta 1114), reused 1675 (delta 1114)
  Receiving objects: 100% (1675/1675), 1.30 MiB | 5 KiB/s, done.
  Resolving deltas: 100% (1114/1114), done.
  [root@CentOS5-A repositories]# cd viewgit/
  [root@CentOS5-A viewgit]# ls
  default.css  favicon.png  inc        light.css  templates
  doc          images       index.php  plugins
  将viewgit文件夹所有内容复制到网站根目录(/data/htdocs/www)
  [root@CentOS5-A viewgit]# cd /data/htdocs/www
  [root@CentOS5-A www]# ls
  default.css  favicon.png  inc         index.php  plugins    viewgit
  doc          images       index.html  light.css  templates  viewgit.tag.gz
  [root@CentOS5-A www]# cd inc
  [root@CentOS5-A inc]# ls
  auth_drupal_user.php  config.php               functions.php
  auth_simple.php       example-localconfig.php  plugins.php
  [root@CentOS5-A inc]# cp config.php localconfig.php
  [root@CentOS5-A inc]# vi localconfig.php
  查找到以下内容:
  $conf['projects'] = array(
  // 'name' => array('repo' => '/path/to/repo/.git'), // path to GIT_DIR
  );
  更改为:
  $conf['projects'] = array();
  $git_repos_path = '/home/git/repositories';
  $git_repos_folders = scandir($git_repos_path);
  foreach ($git_repos_folders as $folder) {
  if (preg_match('/^.*\.git$/', $folder) === 1) {
  $conf['projects'][$folder] = array('repo' => $git_repos_path . '/' . $folder);
  }
  }
  创建仓库描述文件
  [root@CentOS5-A www]# cd /home/git/
  [root@CentOS5-A git]# ls

  gitosis >  [root@CentOS5-A git]# cd repositories/
  [root@CentOS5-A repositories]# ls
  gitosis-admin.git  project.git  viewgit
  [root@CentOS5-A repositories]# cd project.git/
  [root@CentOS5-A project.git]# ls
  branches  config  description  HEAD  hooks  info  objects  refs
  [root@CentOS5-A project.git]# cat description
  project 1.0 by hanxiaoqi
  [root@CentOS5-A project.git]#
  测试:
  在浏览器里访问http://172.16.34.235
  显示如下如果:
  Project Description Last Commit Last Change Actions
  gitosis-admin.git gitosis-admin manage all project's user permissions.  add git237.pub 2012-11-15 06:26 tree tar/gz zip
  project.git project 1.0 by hanxiaoqi  new file hello3 2012-11-16 04:34 tree tar/gz zip
  ViewGit


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-589792-1-1.html 上篇帖子: 教你如何搭建git 服务器 下篇帖子: git在linux上的安装配置包括设置不同用户的权限
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表