一.安装Git服务器所需软件

1.安装git-core, openssh-server, openssh-client三个软件。git-core是git的核心软件; openssh-server、openssh-client是服务器和客户端传输文件通过ssh协议。

输入:sudo apt-get install git-core openssh-server openssh-client

2. 初始化git服务器用户信息。

输入:git config --global user.name ”Tyche***”

git config --global user.email ”8057*****@qq.com”

3. 安装python-setuptools软件。

输入:sudo apt-get install python-setuptools

4.安装gitosis。Gitosis主要用于管理用户对仓库的操作权限。

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

进入gitosis目录:  cd gitosis/

使用安装目录下的setup.py的脚本安装。输入:sudo python setup.py install

二.配置Git服务器

1.创建git管理员账户

增加用户命令:sudo useradd  -m  git

修改git用户密码:sudo passwd git

2. 初始化gitosis

在服务端生成SSH公钥,输入命令:ssh-keygen -t rsa

这里会提示输入密码,直接回车即可。

用刚生成公钥id_rsa.pub来对gitosis进行初始化。输入命令:sudo -H -u git gitosis-init <  /root/.ssh/id_rsa.pub

3. 添加git用户对文件夹的权限

输入: sudo chown git:git /home/git/repositories

            sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

            sudo chmod 755 /home/git/repositories

三.创建项目仓库

使用git账户在服务器上创建一个目录(mytestproject.git)并初始化成git项目仓库。

ubuntu:/home/git$ su git
~git$ cd /home/git/repositories
~git$ mkdir mytestproject.git

~git$ cd mytestproject.git/
~git$ git init --bare

四. gitosis管理用户操作权限

1. 首先需要一个管理员客户端,使用前面生成ssh公钥(用来初始化gitosis)的机器上将gitosis-admin.git的仓库clone下来。在管理员客户端机器上新建一个目录用于存放gitosis-admin.git仓库

clone时不能用绝对路径,只能写相对于git用户home的相对路径
错误:git@xxx.xxx.xxx.xxx:gitosis-admin.git
正确:git@xxx.xxx.xxx.xxx:/home/git/repositories/gitosis-admin.git

输入 :sudo clone git@xxx.xxx.xxx.xxx:/home/git/repositories/gitosis-admin.git

clone下来的gitosis-admin文件夹有一个gitosis.conf的配置文件和一个keydir的目录。keydir主要用户存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用于认证请求,gitosis.conf用于配置用户的权限。

1. 现在需要将授权的用户在自己的机器上生成相应的ssh公钥,  打开git
bush并输入:ssh-keygen
-t rsa -C “email@example.com”

2. 将生成的公钥文件一般在  C:/用户/自己的用户名/.ssh 下的
id_rsa.pub

3. 管理员收集这些文件,分别按用户名命名好,复制到刚才的keydir目录下。

4. 编辑gitosis.conf文件管理用户权限

[gitosis]

[group gitosis-admin]      #管理员
members = charn@ubuntu #管理员用户名,需要在keydir目录下找到相应的.pub文件,多个管理员用空格隔开writable = gitosis-admin   #可写的项目仓库名,多个仓库用空格隔开

[group testwrite]           #建一个组:可写权限
members = abc            #用户
writable = mytestproject   #可写的项目仓库名

[group testread]           #建一个组:只读权限
members =def             #用户
readonly= mytestproject   #只读的项目仓库名

本地修改完配置后,还需要推送到服务器才能生效。

ubuntu:~/gitadmin/gitosis-admin$ git add .
ubuntu:~/gitadmin/gitosis-admin$ git commit -am "add users"
ubuntu:~/gitadmin/gitosis-admin$ git push origin master

还需要在服务端重新启动一下sshd服务

ubuntu:~/gitadmin/gitosis-admin$ sudo
/etc/init.d/ssh restart

服务端的git就已经安装和配置完成了,接下来就需要有权限的组成员在各自的机器上clone服务器上的相应项目仓库进行相应的工作了。

五.在客户端测试

1. 在本地新建一个mytestproject文件夹

2. 将空项目clone下来,输入 : git clone
git@62.234.***.***:mytestproject.git

3. 本地添加一个log.txt 文件

4. 然后将添加的文件提交,输入:

git  add .

git  commit  –m 
"add a log.txt"

git push origin master

5. 检查git历史状态

ok !

腾讯云 Ubuntu16.04 搭建Git 服务的更多相关文章

  1. 阿里云ubuntu16.04搭建pptpd

    一.搭建pptp vpn 需开放1723端口和gre协议 1.阿里云有个安全组需要开放端口才能访问,需添加新的安全组规则. 登陆阿里云服务器管理控制台,添加安全组规则 入/出方向都填写 端口范围为17 ...

  2. 腾讯云ubuntu16.04安装MySql5.7未提示密码设置且无法登陆解决

    一.安装 sudo apt-get update sudo apt install mysql-server 二.修改密码 1.由于安装过程中未提示要设置密码,且使用sudo mysql_secure ...

  3. flask项目部署到阿里云 ubuntu16.04

    title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...

  4. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  5. Ubuntu16.04搭建LAMP开发环境

    Ubuntu16.04搭建LAMP开发环境 虚拟机上安装好Ubuntu16.04后,是一台空白的Ubuntu.我的目的是搭建LAMP环境,顺便搭一个Python Django环境. 基本设置 1.配置 ...

  6. 【CUDA 基础】0.0 腾讯云CUDA环境搭建

    title: [CUDA 基础]0.0 腾讯云CUDA环境搭建 categories: CUDA Freshman tags: CUDA 环境搭建 toc: true date: 2018-02-13 ...

  7. Ubuntu16.04搭建OpenVPN

    Ubuntu16.04搭建OpenVPN 2018年12月27日 15:50:59 VinQin 阅读数:21042   简介 如果在一个非信任网络下比如旅社或者咖啡店的WiFi网络下,想要通过你的智 ...

  8. 基于腾讯云centos简单搭建VSFTP

    基于腾讯云centos7.3搭建VSFTP 环境分析: 基于vsftp服务在于云主机上,所以推荐使用FTP的PASV模式: FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动 ...

  9. Windows平台搭建Git服务教程详解

    引言 软件企业的核心就是代码,如何确保代码的安全?如何在团队开发中协同工作?为解决这些问题,我们需要采用相应的管理工具来满足管理的需求.探长从最初的VSS.SVN.TFS到现在的Git存储一路走来,感 ...

随机推荐

  1. linux中断源码分析 - 软中断(四)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 在上一篇文章中,我们看到中断实际分为了两个部分,俗称就是一部分是硬中断,一部分是软中断.软中断是专门用于处理中断 ...

  2. arcgis_js_api_3.12的project实践

    esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://localhost:6080/ar ...

  3. 在lua中创建字段安全的对象

    lua萌新,刚刚学习和使用不到一个月.有不对的地方,还望各路大神不吝赐教. lua中可以用table来模拟对象,但table是可以任意增加键值的.在对象模拟中,暂且也叫它为字段(field)吧.如果在 ...

  4. NoSql的三大基石:CAP理论&BASE&最终一致性

    关系型数据库的局限 NoSql出现在关系型数据库之后,主要是为了解决关系型数据库的短板,我们先来看看随着软件行业的发展,关系型数据库面临了哪些挑战: 1.高并发 一个最典型的就是电商网站,例如双11, ...

  5. vue2.0中使用pug(jade)

    第一部分:pug(jade)模板引擎 pug,原名jade,是流行的HTML模板引擎,它是HAML在JavaScript上的实现,最大的特色是使用缩进排列替代成对标签. 它简化了HTML的成对标签的写 ...

  6. 五年.net程序员Java学习之路

    大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#.恰逢公司也在扩张,招聘了不少.net程序员,笔者作为应届生,也乐呵呵的加入到.net程序员行列中. ...

  7. Ionic 2.0 相关资料

    原文发表于我的技术博客 本文汇总了学习 Ionic 2 的相关资料,也算是一个 Ionic Awesome 列表,供大家参考,有需要分享的可以留言. 原文发表于我的技术博客 1. 文档 1.1 Ion ...

  8. zabbix中配置当memory剩余不足20%时触发报警

    在zabbix中默认当内存剩余量不足2G的时候触发报警,并没有使用百分比来触发如下: 现在需要配置:当memory剩余不足20%时触发报警,具体操作方法如下: 1)创建itemConfiguratio ...

  9. OpenStack构架知识梳理

    OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云 ...

  10. Mysql双主热备+LVS+Keepalived高可用操作记录

    MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...