在阿里云服务器(ubuntu)上搭建属于自己的git服务器

目录

    • 需求描述
    • 所需工具
      • 服务器端
      • 客户端
    • 工具安装
      • 阿里云服务器安装 git-core
      • 阿里云服务器安装gitosis
      • 客服端安装git软件
    • git服务端的配置
      • 新建git服务器ssh的系统账户mygit
      • 新建git服务器的管理账户并初始化git服务器
      • 添加新git管理员
      • 新建git仓库

需求描述

github等git服务器虽好,但是始终是别人的服务器,且以前是不支持私有仓库的。自己搭建git服务器,我认为最主要是放一些私人的资料和笔记,及时备份;或者还平时使用多台主机,一些资料通过U盘等手段来回复制也很抓狂,就可以考虑自己建议git服务器。

所需工具

服务器端

  • 阿里云ECS:运行的是Ubuntu系统
  • git服务器:git-core包
  • git的管理配置工具:gitosis(基于python2)

客户端

  • git for windows等git软件

工具安装

阿里云服务器安装 git-core

由于git服务器是使用的ssh协议,所以安装git的时候,需要openssh-server以及openssh-client,安装命令如下:

sudo apt-get install git-core openssh-server openssh-client

阿里云服务器安装gitosis

  1. 服务器合适的位置(一般我选择/home/目录下),从gituhb上下载gitosis的源码:
    git clone https://github.com/res0nat0r/gitosis.git

  1. gitosis是用Python编写的,需要python安装支持,在实际使用过程中,发现python3会报错[OSError]类似的错误。故需要确定服务器是否已经安装python2,一般都会默认安装python2,但并没有建立python的默认连接为python2。查看安装的python版本,改变python命令的默认连接

    查看已安装的python版本

         ls /usr/bin/python*
    

    查看python命令指向的python版本

         python --version
    

    移除当前python的链接,并建立新的链接

         sudo rm /usr/bin/python
         sudo ln -s /usr/bin/python2.xx /usr/bin/python
    
  2. 进入下载好的gitosis文件夹里,安装gitosis:

           cd /home/gitosis
           sudo python setup.py install
    

客服端安装git软件

点击安装即可,很简单那。

git服务端的配置

新建git服务器ssh的系统账户mygit

  1. 由于git通过ssh协议运行,首先我们需要建立一个新的linux帐号来专门进行git服务器和客服端的ssh通讯,并给予其sudo运行权限。默认当前登录阿里云服务器的账户有sudo权限,使用useradd新建用于git管理的账户——mygit,加-m使得在home目录下自动创建一个mygit的文件夹,-s指定shell版本,一般默认的shell为/bin/sh,在终端中,命令输入行前有一个“$”符号,操作十分也不友好,建议换成bash:

      sudo useradd  -m mygit -s /bin/bash
    

    给与其sudo的权限:

      sudo usermod -aG sudo yuesigit
    

    查看/etc/group,vi /etc/group如下便是成功添加:

在这里插入图片描述

切换到刚才建立的mygit的账户下:`su - mygit`,按照提示输入密码,切换账户。在这里可以初始化git的用户信息用户名和邮箱:

```shell
  git config --global user.name "xxx"
  git config --global user.email "[email protected]"
```

新建git服务器的管理账户并初始化git服务器

  1. 进行gitosis以及git服务器的初始化。初始化时需要指定一个git管理员。这个git管理员和上文建立的linux用户mygit要区分开来,mygit仅仅是ssh时用到,以及仓库初始化后会默认的在/home/mygit下生成repositories仓库文件夹,而我们可以通过权限管理,而使得该账户只能进行git相关的操作,而不能作为用户登录到服务器当中,提高安全性。而git管理员是真正的可以配置管理git服务器仓库的用户,仅能通过git指令与git服务器通讯。git管理员本质上是git的有新增、删除仓库权限的客户机,即使我们将服务器的账户作为git管理员的时候,跟git服务器的通讯,也仅是通过git指令来的。git管理员的建立与gitosis是紧密相关的。现在演示以一个非本服务器的客户端PC(windows)建立git管理员。

    • 首先一定要将linux的登录账户切换到专门给git创建的linux账户去,使用su - 用户名,然后按提示输入密码
  • 在PC上安装git软件。

  • 在你即将建立git项目的文件夹中,右键,选择Git bash here。然后输入ssh-keygen -t rsa,生成公钥文件。(关于公钥文件,以及通过公钥与git通讯相关原理自行查阅)
    在阿里云服务器(ubuntu)上搭建属于自己的git服务器_第1张图片

  • 可以看到生成的公钥文件在c盘的用户文件夹下。现在需要把公钥传到服务器的tmp文件夹中,可以用以下的命令,当然也可以用ssh工具辅助:

      scp /c/Users/yuesi/.ssh/id_rsa.pub 服务器用户名@服务器IP地址:/tmp/
    
  • 使用上面的公钥文件来初始化仓库,在服务器端运行:

      sudo -H -u git(你在服务器上为git建立的专门的账户名) gitosis-init < /tmp/id_rsa.pub
    

    当你完成初始化的时候,会在你初始化用户的用户文件下生成两个文件夹:gitosis以及repositories
    在阿里云服务器(ubuntu)上搭建属于自己的git服务器_第2张图片

    **而repositories中只有gitosis-admin.git这个仓库,gitosis-admin.git是今后你用来管理项目的主要操作的对象。**主要操作的时其下的gitosis.conf文件,打开有,

在这里插入图片描述

而`members = yuesi@YUESI-PC`中的yuesi@YUESI-PC是创建公钥PC的用户名以及主机名。而我们初始化后,该PC的公钥自动的从tmp文件夹复制到/gitosis-export/keydir/文件夹中,并自动命名为[email protected]
  • 最后,查看一下gitosis-admin.git下的hooks文件夹权限是不是755,不是755,便要改成755。

添加新git管理员

  1. 如何添加新的git管理账户(管理PC机)

步骤与上面的相似,依然是先生成PC机的公钥文件,然后改名为用户名@主机名,这个名称可以看git bash的提示:

在阿里云服务器(ubuntu)上搭建属于自己的git服务器_第3张图片

但是公钥文件不能再上传到服务器的/tmp文件夹,也不能直接放在服务器的/gitosis-export/keydir/文件夹里。还是要借助已经设置的管理员用户机。

  • 将gitosis-admin.git clone到本地:
      git clone XXX(服务器上为git建立的专门的账户名)@XXX(服务器IP地址):gitosis-admin.git

clone后的仓库如下,可见只有一个keydir文件夹和gitosis.conf配置文件。
在阿里云服务器(ubuntu)上搭建属于自己的git服务器_第4张图片

  • 初始化git的用户信息:

    git config --global user.name "xxx"
    git config --global user.email "[email protected]"
    
  • 将上面改名后的公钥文件,放在管理员用户机已经clone后的gitosis-admin.git的keydir文件夹下,并且,将新的用户添加在gitosis.conf中,如下:

在这里插入图片描述

  • push仓库到服务器上,在gitosis-admin.git文件夹里,右键并选择git bash here,再依次输入以下命令:
    git add .
    git commit -am "some words"
    git push origin master

新建git仓库

  1. 新建git仓库,一样需要在有git管理权限的客户机上进行,修改gitosis.conf配置文件,添加新的仓库project1。可以发现新建仓库很简单,只要给出仓库名,以及可以写仓库的成员即可:

在阿里云服务器(ubuntu)上搭建属于自己的git服务器_第5张图片

在具有project1写权限的的客户机上,新建一个文件夹,并重名为project1,进入该文件夹并使用git bash here,然后进行仓库的初始化,然后再新加一个文件,然后push到服务器上,命令如下:

      git init
      touch readme.txt
      git add .
      git commit -am "some words"
      git remote add origin  XXX(服务器上为git建立的专门的账户名)@XXX(服务器IP地址):project1.git
      git push origin master

再进入服务器查看是否有新的仓库出现:

在阿里云服务器(ubuntu)上搭建属于自己的git服务器_第6张图片

至此完成git的创建。

当然,这样建设的git服务器,仅仅是适合自己用的。其实要想完成像github或者gitee一样的git服务器,其实最简单的就是自己再搭建一个https服务器,把gitosis-admin.git的管理权限仅保留在服务器主机上,然后就可以让用户注册你的git账号,然后再进行仓库的上传下载了…这仅仅是一个想法,不一定这么做。

甚至可以在客户机上写一个脚本,进行一些资料的定时推送到git服务器也不一定是不可能的。

你可能感兴趣的:(建站,git,git,gitosis,git服务器)