zoukankan      html  css  js  c++  java
  • Ubuntu下使用gitosis搭建Git服务器,并且安装GitWeb

    什么是Gitosis?

    ​ Gitosis是一套用来管理authorized_keys文件和实现简单连接限制的脚本。

    ​ 而且Gitosis管理用户权限并不是通过网页或者某个程序,而是通过一个特殊的Git仓库来管理。你只需要在这个非常“特殊”的仓库配置好用户和权限,然后推送到服务器上面,Gitosis就会随之改变运行策略。

    一、Git的安装与配置

    ​ root@192.168.204.130是服务端(Ubuntu主机) , ip是: 192.168.204.130

    ​ myWindows$ 是服务器的管理员(也可以作为客户端使用)

    1.安装git和openssh

    ​ 从这里开始的命令在服务端执行(记得要登陆到root用户下哦,当然在普通用户下也可以在命令前加 sudo 来提权执行)

    root@ubuntu:/# apt-get update

    root@ubuntu:/# apt-get install git-core openssh-server openssh-client

    ​ git-core 是git版本控制的核心软件

    ​ openssh-server和openssh-client 是由于git需要通过ssh协议在服务端与客户端之间传输文件

    2.创建git用户组与git用户

    ​ 该用户作为Git仓库和用户权限的管理员(这里不建议创建为其他用户名管理,本人试过用自己的名字,最后仍然是真香了)

    root@ubuntu:/# groupadd git

    root@ubuntu:/# git -g git -m

    root@ubuntu:/# passwd git //设置git用户的密码

    二、Gitosis的安装与配置

    1.安装gitosis前的准备

    ​ 初始化服务器的全局设置,为安装gitosis做准备。在任何机器上,第一次使用git,必须要先设置user.nameuser.email这两条属性。

    root@ubuntu:/# git config --global user.name "你的name"

    root@ubuntu:/# git config --global user.email "你的邮箱"

    2.安装python的setuptools

    root@ubuntu:/# apt-get install python-setuptools

    3.安装gitosis

    ​ /tmp 是ubuntu各种安装包与文件的存放目录,所以建议进入此目录获取gitosis包,并安装。

    root@ubuntu:/# cd /tmp

    root@ubuntu:/tmp# git clone https://github.com/res0nat0r/gitosis.git

    root@ubuntu:/tmp# cd gitosis

    root@ubuntu:/tmp/gitosis# python setup.py install

    4.配置gitosis

    ​ 接下来的命令在管理员机器执行(本文是Windows系统)

    ​ 使用git管理员的PC(Windows系统)来生成访问git服务器的ssh公钥,然后将生成的ssh公钥拷贝到git服务器,执行相关的命令来允许你的个人计算机进行访问和管理git服务器。本文使用 myWindows$ 来作为远程访问和控制git服务器的管理员。

    ​ 管理员PC也要安装git , Windows安装git for Windows , Linux系统参照本篇文章 一、Git的安装与配置

    执行命令使用的是Git Bash窗口

    ​ 然后设置user.nameuser.email这两条属性。

    ​ 之后,执行接下来的这条命令,记得不要输入任何字符,直接回车

    myWindows /$ ssh-keygen -t rsa

    ​ 执行完毕后 , 会在当前用户目录下生成.ssh/id_rsa和.ssh/id_rsa.pub。其中.ssh/id_rsa是私钥.ssh/id_rsa.pub是公钥。接下来可以使用如下命令将git管理员的公钥上传到git服务器,也可以直接拷贝到git服务器,建议目录是 /tmp。

    myWindows /$ scp ~/.ssh/id_rsa.pub root@192.168.204.130:/tmp/id_rsa.pub

    ​ 如果这条命令拷贝不成功你也可以用其他方式上传到服务器的/tmp目录下,展开你的想象上传吧!!

    ​ 回到git服务器的/tmp/gitosis目录下,执行(又开始用服务端了哦!)

    root@ubuntu:/tmp/gitosis# chmod a+r /tmp/id_rsa.pub

    root@ubuntu:/tmp/gitosis# -H -u git gitosis-init < /tmp/id_rsa.pub

    ​ 执行完毕后会出现以下信息 :

    已初始化空的 Git 仓库于 /home/git/repositories/gitosis-admin.git/

    重新初始化已存在的 Git 仓库于 /home/git/repositories/gitosis-admin.git/

    ​ Gitosis通过一个git仓库来管理配置文件,仓库放在/home/git/repositories/gitosis-admin.git中。接下来设置git仓库的权限

    root@ubuntu:/tmp/gitosis# chown git:git /home/git/repositories

    root@ubuntu:/tmp/gitosis# chmod 755 /home/git/repositories

    root@ubuntu:/tmp/gitosis# chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

    5.在服务器上新建一个测试项目仓库

    ​ 接下来的命令在服务端执行

    ​ 在服务器上新建一个空的项目仓库,叫做 "test" 。

    这里需要切换到git用户!!并且确保你在/home/git/repositories目录下,可以使用pwd命令来查看现在处于什么位置。

    root@ubuntu:/tmp/gitosis# su - git

    $ cd repositories

    $ git init --bare test.git

    $ exit

    ​ 到此为止,test只是一个空的仓库,它是不能被clone的。为了能clone,必须要让管理员放一个初始化的版本到仓库中。所以现在我们需要先修改一下gitosis-admin仓库。

    6.管理gitosis的配置文件

    ​ 接下来的命令在管理员机器执行

    ​ Gitosis本身的配置也是通过git来实现的。在刚刚上传公匙的电脑(就是使用ssh-keygen -t rsa命令的机器)上把服务器上的gitosis-admin.git这个仓库clone下来,就可以用管理员的身份修改配置了。因为之后还要继续进行管理所以最好有特定的文件夹存放。

    注意:访问git用户仓库的默认路径是/home/git/repositories/

    myWindows /$ cd /

    myWindows /$ mkdir admin

    myWindows /$ cd admin

    myWindows /admin$ git clone git@192.168.204.130:gitosis-admin.git

    myWindows /admin$ cd gitosis-admin

    ​ 该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥。哥哥用户按照前面的方法生成各自的ssh公钥之后按照名字重新命名一下,然后拷贝到keydir目录下,然后修改本目录下的gitosis.conf文件,做出相应的配置:

    [gitosis]

    [group gitosis-admin]

    members = tom david

    writable = gitosis-admin

    [group team]

    members = david tom pitter

    writable = test

    注意:members = keydir目录下 .pub文件名,否则是没有访问权限的!多个管理者之间要用空格分开,项目名也是一样的。

    ​ 这个配置文件表达了如下 :

    ​ gitosis-admin组成员有david和tom , 该组对gitosis-admin仓库有读写权限 ; test组由david tom和pitter三个成员 , 该组对test仓库有读写权限。

    ​ 目前这些配置更改只是在本地,必须推送到远程的git服务器上才能真正生效。所以在gitosis-admin目录下执行一下操作

    myWindows /admin/gitosis-admin(master)$ git add .

    myWindows /admin/gitosis-admin(master)$ git commit -am "更改git服务器配置,增加管理员,配置成员可读写的库"

    myWindows /admin/gitosis-admin(master)$ git push origin master

    7.初始化测试项目

    ​ 现在,服务器已经搭建完毕,并且有一个空的项目test在服务器上。接下来,需要测试一下,空仓库是不能被clone的,所以需要某个由读写权限的人初始化一个版本。在管理员的PC执行 :

    myWindows /admin/gitosis-admin(master)$ cd /

    myWindows /$ mkdir test-ori

    myWindows /$ cd test-ori

    myWindows /test-ori$ git init

    myWindows /test-ori(master)$ echo "/*初始化一个版本,这样其他的成员才能clone*/" > version.txt

    myWindows /test-ori(master)$ git add .

    myWindows /test-ori(master)$ git commit -m "initial version"

    myWindows /test-ori(master)$ git remote add origin git@192.168.204.130:test.git

    myWindows /test-ori(master)$ git push origin master

    ​ 到此为止,test已经有一个版本了。team的其他成员只要先clone一下test仓库就可以了,而且这些成员需要在gitosis.conf中被赋予读写权限。

    三、安装GitWeb

    1.安装gitweb,apache2

    root@ubuntu:/tmp/gitosis# cd /

    root@ubuntu:/# apt-get install gitweb apache2

    2.修改配置文件(记得保存)

    ①修改/etc/gitweb.conf

    内容如下:

    vim /etc/gitweb.conf

    $projectroot = "/home/git/repositories";

    $git_temp = "/tmp";

    $projects_list = $projectroot;

    @stylesheets = ("../gitweb/static/gitweb.css");

    $javascript = "../gitweb/static/gitweb.js";

    $logo = "../gitweb/static/git-logo.png";

    $favicon = "../gitweb/static/git-favicon.png";

    @diff_opts = ();

    这个文件的更改基本就是去除注释而已啦,很简单的。

    ②修改/etc/apache2/conf-available/gitweb.conf

    内容如下:

    Alias /gitweb /usr/share/gitweb

    <Directory /usr/share/gitweb>

    Options +FollowSymLinks +ExecCGI

    AddHandler cgi-script .cgi

    3.使cgi生效

    root@ubuntu:/# a2enmod cgi

    root@ubuntu:/# service apache2 restart

    4.访问GitWeb

    192.168.204.130/gitweb/

  • 相关阅读:
    Fix Installing .NET Framework 3.5 failed Error Code 0x800F0954 on Windows 10
    RHEL8安装五笔输入法
    Enable EPEL and Local Repository on RHEL8
    Why is Yum Replaced by DNF?
    检查Linux服务器是否被攻击的常用命令及方法
    IDEA 主题
    IDEA 如何显示一个类中所有的方法
    Appium 安装以及安装过程中遇到的问题
    Maven 如何发布 jar 包到 Nexus 私库
    java泛型的基本使用
  • 原文地址:https://www.cnblogs.com/gofightnow/p/12874657.html
Copyright © 2011-2022 走看看