zoukankan      html  css  js  c++  java
  • centos 6.3 搭建git/gitosis/gitweb

    1. git的安装和配置

    (1)使用yum源安装git
    1. yum install git

    (2)创建git用户并设置密码

    1. #useradd --home /home/git git
    2.  #passwd git 
    3. //注意这里要设置一个密码,建议不要不设密码,网上很多资料都不设密码
    (3)创建一个git仓库,验证git是否可用
    • 在使用git之前,要设置git的两个全局变量,设置方式为:
      1. # git config --global user.name "dylan"
      2. # git config --global user.email "ustc.dylan@email.com"
    • 设置git仓库目录的权限
      1. # su - git                           //切换到git用户
      2. $ chmod -R 755 /home/git             //修改目录的权限
    • 创建并初始化一个repository
      1. $ mkdir /home/git/repo   //假设要创建的repository放在/home/git/repo目录下
      2. $ cd /home/git/repo
      3. $ mkdir test_repo
      4. $ cd test_repo
      5. $ git init --bare
    • 测试新创建的repository是否可用
      1. su - test (test为另外一个user或者exit,使用root用户)
      2. $ cd /home/test
      3. $ mkdir repos
      4. $ cd repos
      5. $ git clone /home/git/repo/test_repo
      如果显示" Initialized empty Git repository in /home/git/repo/test_repo/.git/",则说明成功的clone了一个local repository。之后就可以在此repository下进行开发了,比如,添加一个readme.txt文件。
      1. $ cd test_repo
      2. $ vim readme.txt (创建一个文件)
      3. $ git add . (注意后面有一个[.])
      4. $ git commit -a
      5. $ git push origin master
         注意:如果此时报错,最大的原因是test_repo的refs和objects目录的权限不够,执行如下操作即可(git server端的repository下的这两个目录)。
    1. $ chmod -R 777 refs/
    2. $ chmod -R 777 objects/
     
    2. gitosis的安装
     (1)python-setuptools的安装(因为gitosis的安装脚本是用python写的)
    1. #yum install python-setuptools
    (2)gitosis的安装
    1. #git clone git://github.com/res0nat0r/gitosis.git//下载gitosis到你想存放的目录下
    2. #cd gitosis
    3. #python setup.py install    //如果没有报错,则说明安装成功

    (3)创建是用这个git server的用户的公钥

       因为gitosis的访问是通过ssh访问的,所以我们还需要创建一个ssh的访问公钥。找另外一台机器(如果条件允许)作为git server的客户端机器创建公钥,然后传到git服务器上。(如果为了简便,也可在git服务器上创建公钥,使用git用户或者其他用户都行。为了方便,这里采用git服务器,并且使用git用户。

    1. # su - git
    2. $ ssh-keygen -t rsa
     公钥生成了,默认放在/home/git/.ssh/id_rsa.pub下,如果生成公钥时设置了密码,注意记住密码,为了简单,我这里没有设置密码。
     
    (4)配置gitosis
        gitosis对git的各种管理通过gitosis-admin.git这个项目来完成,gitosis-admin.git项目本身又被置于git下管理,所以需要先在client端clone gitosis-admin.git, 根据需求修改后,将修改提交到git server即可生效。
        此处的含义就是:你想在哪对gitosis进行配置,就需要在哪clone到gitosis-admin.git.
    • 假设在于gitosis不同的另外一台机器上,使用git用户将gitosis-admin.git clone到本地。
      1. git clone git@192.168.x.xx:/home/git/repositories/gitosis-admin.git
    • 修改gitosis配置文件gitosis.conf
      1. $ vim gitosis.conf
      2. //会看到如下内容
      3. [gitosis]
      4. [group gitosis-admin]
      5. writable = gitosis-admin
      6. members = git@compute-29-01.local
      gitosis.conf 文件是用来设置用户、仓库和权限的控制文件(对于gitosis.conf文件的详细含义,以及keydir目录下公钥的作用,将会另写文档说明,在此不再详述),只需知道gitosis仓库是可写的,支持的用户有git
    (5)新添加repository
         修改gitosis-admin的配置文件gitosis.conf,新添加一个repository,例如:

    1. [gitosis]
    2. [group gitosis-admin]
    3. writable = gitosis-admin
    4. members = git@compute-29-01.local
    5. [group test_repo]                        //新添加的仓库名称
    6. writable = test_repo                     //此仓库的读写权限,此处为可写
    7. members  = user1@host1 user2@host2       //可以访问此仓库的用户名@主机名
    假设当user1,来访问这个test_repo仓库时,需要输入如下命令:
    1. git clone user1@git_server_ip:/home/git/repo/test_repo.git

    此时会要求输入user1的密码,此密码就是创建user1的公钥时输入的密码。那么gitosis又是怎么来确定user1的身份的呢? 这就要求必须事先将user1产生的公钥传给管理员,即对gitosis-admin有权限操作的管理人员,然后由他将公钥拷贝到keydir目录下,然后,执行git add,git push即可。

    3. gitweb安装

        注意:redhat的iso源是没有gitweb安装包,但是centos的源中有,在上一篇文章中给出了如何让redhat使用centos的源,那么,只需采用如下命令即可安装。
    1. # yum install gitweb

    4. gitweb配置

      gitweb默认安装到了/var/www/git下,其配置文件在/etc/gitweb.conf下,另外,httpd的配置文件/etc/httpd/conf.d/git.conf。
    (1)修改/etc/gitweb.conf

    1. $projectroot = "/var/www/git" //将projectroot修改为/var/www/git
    (2)修改/etc/httpd/conf.d/git.conf

    1. Alias /git /var/www/git
    2. <Directory /var/www/git>
    3. Allow from all
    4. AllowOverride all
    5. Order allow,deny
    6. Options +ExecCGI
    7. AddHandler cgi-script .cgi
    8. DirectoryIndex gitweb.cgi
    9. SetEnv GITWEB_CONFIG /etc/gitweb.conf
    10. Dav On
    11. RewriteEngine Off
    12. </Directory>
     
    (3)重启httpd
    1. /etc/init.d/httpd restart
    (4)将gitosis仓库连接到/var/www/git下,完成web显示
    1. ln -s /home/git/repositories/test_repo.git /var/www/git/
    (5)通过浏览器浏览
    http://xxxx/git/
     
    注意:  如果git clone  http://xxx/git/test_repo.git时出现git update-server-info错误,则在test_repos.git目录下执行 git update-server-info 命令即可(gitosis服务器的相应仓库下)。
     
    5. 创建新的git repository
    在git server的/home/git/repository目录下,执行如下命令:

    1. mkdir test.git
    2. cd test.git
    3. git init --bare
    4. //可以在这里添加源文件,也可以在client端clone之后添加
  • 相关阅读:
    代替gets()的新操作
    前缀和(一维与二维) 差分
    高精度(高精加,高精减,高精乘,高精除)
    提高cin cout的速度
    二分算法(以 数的范围 为例)
    归并排序(merge_sort)
    快速排序(quick_sort)
    由后缀表达式题目:stoi atoi 函数新发现
    Redis(二)
    每日算法练习(2020-1-11)
  • 原文地址:https://www.cnblogs.com/zhepama/p/3821541.html
Copyright © 2011-2022 走看看