zoukankan      html  css  js  c++  java
  • Centos6.8/7.0搭建Git服务http访问方式

    安装Git版本:git 2.10.0

    Git访问方式:基于http的基本验证(非SSL)

    1. 安装Apache软件:

    [root@localhost ~]# yum install httpd

    设置Apache在服务器启动时运行(centos7:systemctl enable httpd):

    [root@localhost ~]# chkconfig --levels 235 httpd on

    2. 安装依赖库:

    [root@localhost ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
    [root@localhost ~]# yum install  gcc perl-ExtUtils-MakeMaker

    3. 卸载旧版git:

    [root@localhost ~]# yum remove git

    4. 安装git, 先进入需要安装git的目录、下载git、解压和编译安装:

    [root@localhost ~]# cd /usr/local/src
    [root@localhost src]# wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz
    [root@localhost src]# tar -zvxf git-2.10.0.tar.gz
    [root@localhost src]# cd git-2.10.0
    [root@localhost git-2.10.0]# make prefix=/usr/local/git all
    [root@localhost git-2.10.0]# make prefix=/usr/local/git install

    5. 将git目录加入PATH:

    [root@localhost git-2.10.0]# echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
    [root@localhost git-2.10.0]# source /etc/bashrc

    安装成功后就可以查看到git版本了:

    [root@localhost git-2.10.0]# git --version
    git version 2.10.0

    6. 创建git仓库并初始化:

    [root@localhost git-2.10.0]# mkdir -p /home/git/repositories/test.git
    [root@localhost git-2.10.0]# cd /home/git/repositories/test.git
    [root@localhost test.git]# git --bare init
    Initialized empty Git repository in /home/git/repositories/test.git/

    7. 给git仓库设置apache用户和用户组并设置权限:

    [root@localhost test.git]# chown -R apache:apache /home/git/repositories/test.git
    

     (如果已经执行6、7步,此处忽略!)一条命令建仓库,方便以后执行一步完成:

    [root@localhost ~]# mkdir -p /home/git/repositories/ssm-master.git && cd /home/git/repositories/ssm-master.git && git --bare init && chown -R apache:apache /home/git/repositories

    8.Apache的配置

    创建新用户

    [root@localhost test.git]# htpasswd -m -c /etc/httpd/conf.d/git-team.htpasswd <username>

    注意:以后再分配用户的时候,此命令为:

    [root@localhost test.git]# htpasswd -m /etc/httpd/conf.d/git-team.htpasswd <username>

    然后输入该用户要使用的密码。

    修改git-team.htpasswd文件的所有者与所属群组

    [root@localhost test.git]# chown apache:apache /etc/httpd/conf.d/git-team.htpasswd

    设置git-team.htpasswd文件的访问权限

    [root@localhost test.git]# chmod 640 /etc/httpd/conf.d/git-team.htpasswd

    修改apache配置文件httpd.conf

    [root@localhost test.git]# vi /etc/httpd/conf/httpd.conf

    将光标移至文件结尾(Shift+g),添加如下的内容:

    <VirtualHost *:80>
            ServerName 127.0.0.1
            SetEnv GIT_HTTP_EXPORT_ALL
            SetEnv GIT_PROJECT_ROOT /home/git/repositories
            ScriptAlias /git/ /usr/local/git/libexec/git-core/git-http-backend/
            <Location />
                    AuthType Basic
                    AuthName "Git"
                    AuthUserFile /etc/httpd/conf.d/git-team.htpasswd
                    Require valid-user
            </Location>
    </VirtualHost>

    ServerName是git服务器的域名或ip地址(填127.0.0.1)

    /home/git/repositories是代码库存放的文件夹

    ScriptAlias是将以/git/开头的访问路径映射至git的CGI程序git-http-backend

    AuthUserFile是验证用户帐户的文件

    保存并退出

    9.gitweb的安装和配置

    (1).安装gitweb

    [root@localhost test.git]# yum install gitweb

    (2). 修改git.conf

    [root@localhost test.git]# vi /etc/httpd/conf.d/git.conf

    Centos6.8的配置:

    Alias /gitweb /var/www/git
    
    <Directory /var/www/git>
      Options +ExecCGI
      AddHandler cgi-script .cgi
      DirectoryIndex gitweb.cgi
      Order allow,deny
      Allow from all
    </Directory>

    Centos7.0的配置:

    Alias /gitweb /usr/local/git/share/gitweb
    
    <Directory /usr/local/git/share/gitweb>
      Options +ExecCGI
      AddHandler cgi-script .cgi
      DirectoryIndex gitweb.cgi
      Order allow,deny
      Allow from all
    </Directory>

    其中:/usr/local/git/share/gitweb为安装git时自带的gitweb,就配置它。查看此目录方法:

    [root@iZbp1ap7v4yegqdgzrh7cuZ /]# ls -F $(dirname $(dirname $(git --html-path)))/gitweb
    gitweb.cgi*  static/
    [root@iZbp1ap7v4yegqdgzrh7cuZ /]# echo $(dirname $(dirname $(git --html-path)))/gitweb
    /usr/local/git/share/gitweb
    [root@iZbp1ap7v4yegqdgzrh7cuZ /]# 

    (3). 修改gitweb.conf

    [root@localhost test.git]# vi /etc/gitweb.conf

    (Shift+g到末尾),添加的一些内容,这样:

    # 版本库的根目录
    our $projectroot = "/home/git/repositories";
    
    # 设置克隆每个版本库的URL地址,一个版本库可以设置多个地址(逗号隔开)
    #our @git_base_url_list= ("git://www.jsxfd.com/git");
    
    # 菜单定制:tree view文件旁显示追溯(blame)链接
    $feature{'blame'}{'default'} = [1];
    $feature{'blame'}{'override'} = 1;
    
    # 菜单定制:tree添加快照(snapshot)下载链接
    $feature{'snapshot'}{'default'} = ['zip', 'tgz'];
    $feature{'snapshot'}{'override'} = 1;

     重启apache使设置生效(centos7命令为:/bin/systemctl restart  httpd.service)

    [root@localhost test.git]# service httpd restart

     

    (4). 用浏览器访问gitweb: http://服务器ip地址或者域名/gitweb

    附加:

    clone地址为:

    http://服务器ip地址/git/test.git

    注意git代码库所在的文件夹不要配置到这个路径中,  /git/ 已经配置过转向到代码库。

    这样每次pull、push都要输入用户名和密码。所以要设置用户名密码到http路径中,如:

    http://用户名:密码@服务器ip地址/git/test.git

    如果用户名是邮箱地址,需要把邮箱地址中的@改为 %40

    http://xxx%40qq.com:密码@服务器ip地址/git/test.git

    至于用户名是中文的话,直接去看看url编码。

    以后如果想增加git项目,直接执行上面的第6、7步即可。

    搞定!

  • 相关阅读:
    基础架构:一条SQL查询语句是如何执行的?
    常用的字符串转换日期格式
    JSONObject.fromObject(map)(JSON与JAVA数据的转换)
    ModelAndView的介绍
    Springmvc常用注解
    @PathVariable注解
    @ModelAttribute运用详解
    struts2将servlet对象注入到Action中
    为什么要继承ActionSupport?
    mysql中like用法
  • 原文地址:https://www.cnblogs.com/007sx/p/6079620.html
Copyright © 2011-2022 走看看