目录

  • 需求描述
  • 所需工具
    • 服务器端
    • 客户端
  • 工具安装
    • 阿里云服务器安装 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/pythonsudo ln -s /usr/bin/python2.xx /usr/bin/python
    
  2. 进入下载好的gitosis文件夹里,安装gitosis:

           cd /home/gitosissudo 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的用户信息用户名和邮箱:```shellgit config --global user.name "xxx"git config --global user.email "xxx@qq.com"
```

新建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通讯相关原理自行查阅)

  • 可以看到生成的公钥文件在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

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

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

添加新git管理员

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

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

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

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

clone后的仓库如下,可见只有一个keydir文件夹和gitosis.conf配置文件。

  • 初始化git的用户信息:

    git config --global user.name "xxx"
    git config --global user.email "xxx@qq.com"
    
  • 将上面改名后的公钥文件,放在管理员用户机已经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。可以发现新建仓库很简单,只要给出仓库名,以及可以写仓库的成员即可:

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

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

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

至此完成git的创建。

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

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

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

  1. [Linux]阿里云免费试用体验(在阿里云的ubuntu上部署个人服务)

    作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...

  2. 在阿里云的ubuntu上部署个人服务

    为什么80%的码农都做不了架构师?>>> 作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然 ...

  3. http协议 git服务器,利用Nginx搭建HTTP访问的Git服务器

    利用Nginx搭建HTTP访问的Git服务器过程记录.搭建 Git 仓库,实现 SSH 协议.配合 Nginx 实现 HTTP 协议拉取.推送代码.利用 Nginx 实现 Gitweb 在线浏览代码, ...

  4. Linux学习总结(13)——在阿里云的ubuntu上部署个人服务

    作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...

  5. 在阿里云的Ubuntu ECS instance 使用Apt-get安装git

    高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubuntu)的软件包管理器.APT可以自动下载,配置,安装二进制或者源代码格式的 ...

  6. Ubuntu系统搭建PPPoE服务器,Ubuntu上架设PPPoE Server

    一.安裝 PPPoE Server Software 1)sudo apt-get install ppp 2)rp-pppoe(非apt套件) wget -c http://www.roaringp ...

  7. 阿里云ECS CentOS6.5搭建iRedMail邮件服务器

    阿里云ECS CentOS6.5搭建iRedMail邮件服务器 0 . 注册域名:例:geekds.com 然后:进入你申请域名的网站(如万网或新网),域名管理–>我的域名–>管理–> ...

  8. Ubuntu上搭建自己的ngrok服务器

    Ubuntu上搭建自己的ngrok服务器 参考网站:http://www.sunnyos.com/article-show-48.html 上面的内容似乎是sunny大神本人写的,了解的越多,发现自己 ...

  9. 【mongodb环境】在ubuntu上搭建mongodb,并且开启远程连接

    [mongodb环境]在ubuntu上搭建mongodb,并且开启远程连接 标签(空格分隔): mongodb 参考资料 mongodb 官方文档 安装mongodb 第一步:设置 public ke ...

最新文章

  1. .NET程序性能的基本要领
  2. mysql 主主+ Keepalived 高可用
  3. OpenCASCADE绘制测试线束:拓扑命令之曲线和曲面拓扑
  4. 【教程】jQuery打造动态下滑菜单
  5. LINUN 网络连接小记
  6. MYSQL的函数有哪些?(4.3时间与日期函数)
  7. python开源流程图软件_Dia
  8. Mybatis源码阅读(一):Mybatis初始化1.2 —— 解析别名、插件、对象工厂、反射工具箱、环境
  9. UVa 12169 - Disgruntled Judge(拓展欧几里德)
  10. Java- String类概述
  11. wangEditor富文本编辑器的简单使用
  12. Vue使用JsBarcode生成条形码
  13. 部分免费开放的电子图书馆
  14. 四旋翼无人机学习第5节--STM32最小系统外围电路分析
  15. 计算机硬盘显示在右边,电脑中出现一个系统保留磁盘分区怎么解决
  16. 树莓派的GPIO等接口
  17. linux lib文件夹,Linux下的lib文件故障解决实例
  18. 做了两年前端开发,平时就是拿 Vue 写写页面和组件,简历的项目经历应该怎么写得好看?
  19. 01-基于C++的简易技能系统实现
  20. Android 5.1 长按power键流程分析

热门文章

  1. 从勒索软件攻击中恢复 sql server 数据库 mdf文件
  2. 计算机网络与船舶,船舶计算机网络系统和网络安全管理.doc
  3. tinyproxy代理服务器配置
  4. [Realtek sdk-4.4.1] RTL8198D指定任意口作为wan及切回lan方法实现
  5. oracle rac和ha对比,双机热备(HA),dg和RAC区别
  6. Fira Code:适合程序员的编程字体
  7. NNI中实现的Tuner分析
  8. HP F388经常卡纸
  9. Nginx 常见漏洞解决方式
  10. if ...if和if...elif区别