• Ubuntu Git Server 搭建(Gitosis)


    测试环境:Ubuntu Server 18.04

    1. 安装git-core

    apt-get install git-core

    2. 安装openssh

    apt-get install openssh-server openssh-client

    3. 安装 Gitosis

    使用git之前需要先设置用户名和邮箱,如果已经设置请忽略:

    git config --global user.name "your_name"   
    git config --global user.email "your_e-mail"

    下载源码:

    git clone https://github.com/res0nat0r/gitosis.git

    Gitosis 依赖于 Python库,先安装 setuptools 包,

    注意:这里一定要使用 python2.x 的版本,否则后续 init 时会出现如下错误:

    Traceback (most recent call last):
      File "/usr/local/bin/gitosis-init", line 11, in <module>
        load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-init')()
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point
        return get_distribution(dist).load_entry_point(group, name)
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2693, in load_entry_point
        return ep.load()
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2324, in load
        return self.resolve()
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2330, in resolve
        module = __import__(self.module_name, fromlist=['__name__'], level=0)
      File "/usr/local/lib/python3.6/dist-packages/gitosis-0.2-py3.6.egg/gitosis/init.py", line 57
        except OSError, e:
                      ^
    SyntaxError: invalid syntax

    我的系统默认只安装了 python3.6 ,所以后面出现了上述问题,查了很多资料都没用,还是根据自己之前写python的经验发现的,如何修改系统默认的 python 版本

    可以参考我的另一篇文章:

    https://www.cnblogs.com/zoneofmine/p/13345827.html

    确定默认版本使用的是python2.x后

    安装 setuptools 包:

    apt-get install python-setuptools

    安装Gitosis:

    cd gitosis/ 
    python setup.py install 

    4. 创建 git 管理员用户(名字根据自己需求修改)

    useradd -m git_admin -s /bin/bash
    passwd git_admin

    增加sudo权限

    vi /etc/group 

    在如下行新增自己的用户名,保存退出

    sudo:x:27:git_admin

    5. 生成公钥

    先切换到git_admin用户,再执行

    ssh-keygen -t rsa

    直接回车的话默认创建在 /home/git_admin/.ssh/目录下,继续回车不创建密码(建议不要创建密码,否则以后使用每次都要输密码)

    完成后会看到两个文件:

    ls
    id_rsa  id_rsa.pub

    6. 用 git 管理员的公钥对 Gitosis 进行初始化

    sudo cp /home/git_admin/.ssh/id_rsa.pub /tmp/
    sudo -H -u git_admin gitosis-init < /tmp/id_rsa.pub

     此时 home 目录下已经产生了 repositories 文件夹,里面有名为 gitosis-admin.git 的 git 库。

    至此,Git 的搭建其实已经完成。

    Gitosis其实就是通过 gitosis-admin.git 这个仓库来管理权限的,配置文件是 gitosis.conf,具体如下:

    cat ~/repositories/gitosis-admin.git/gitosis.conf 
    [gitosis]
    
    [group gitosis-admin]
    members = git_admin@wayde
    writable = gitosis-admin

     git_admin用户对 gitosis-admin 具有写权限,即控制权限。

    ~/repositories/gitosis-admin.git/gitosis-export/keydir/ 存放的是所有客户端的公钥,公钥名字必须和配置文件中的member名字对应。

    ls ~/repositories/gitosis-admin.git/gitosis-export/keydir/
    git_admin@wayde.pub

    7. 使用方法

    首先可以在服务器上(或者拥有gitosis-admin用户的客户机上)clone gitosis-admin

    git clone git_admin@wayde:gitosis-admin.git

    此时你可以修改这个仓库,例如增加用户,增加项目等等,其实就是操作 gitosis.conf 并且 拷贝 public key,方法和上面相同,不再详细说明。

    然后commit 并 push到服务器:

    git add .
    git commit -m "Add test_project1" 
    git push origin master

    在服务器上配置完新项目后,客户机需要进行新增项目的话操作:

    mkdir test_project1/
    cd test_project1/
    git init
    git add .
    git commit -m "Create test_project1"
    git push git_admin@wayde:test_project1.git master

    此时新项目test_project1已经创建完毕。

    Windows客户端同样可以clone和push,命令行的方式也可以使用Git Bash。

  • 相关阅读:
    和为S的两个数字
    和为S的连续正数序列
    两个链表的第一个公共结点
    删除链表中重复的结点
    常用开发工具的安装(JDK、IDEA、Tomcat、Maven、Mysql和Nodepad++)——实习日志7.10
    蓄水池取样(转)
    prepare statement
    ProxySQL Getting started
    架构收录
    服务开机自启动
  • 原文地址:https://www.cnblogs.com/zoneofmine/p/13754761.html
Copyright © 2020-2023  润新知