腾讯云 Ubuntu16.04 搭建Git 服务
一.安装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 服务的更多相关文章
- 阿里云ubuntu16.04搭建pptpd
一.搭建pptp vpn 需开放1723端口和gre协议 1.阿里云有个安全组需要开放端口才能访问,需添加新的安全组规则. 登陆阿里云服务器管理控制台,添加安全组规则 入/出方向都填写 端口范围为17 ...
- 腾讯云ubuntu16.04安装MySql5.7未提示密码设置且无法登陆解决
一.安装 sudo apt-get update sudo apt install mysql-server 二.修改密码 1.由于安装过程中未提示要设置密码,且使用sudo mysql_secure ...
- flask项目部署到阿里云 ubuntu16.04
title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...
- Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统
Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...
- Ubuntu16.04搭建LAMP开发环境
Ubuntu16.04搭建LAMP开发环境 虚拟机上安装好Ubuntu16.04后,是一台空白的Ubuntu.我的目的是搭建LAMP环境,顺便搭一个Python Django环境. 基本设置 1.配置 ...
- 【CUDA 基础】0.0 腾讯云CUDA环境搭建
title: [CUDA 基础]0.0 腾讯云CUDA环境搭建 categories: CUDA Freshman tags: CUDA 环境搭建 toc: true date: 2018-02-13 ...
- Ubuntu16.04搭建OpenVPN
Ubuntu16.04搭建OpenVPN 2018年12月27日 15:50:59 VinQin 阅读数:21042 简介 如果在一个非信任网络下比如旅社或者咖啡店的WiFi网络下,想要通过你的智 ...
- 基于腾讯云centos简单搭建VSFTP
基于腾讯云centos7.3搭建VSFTP 环境分析: 基于vsftp服务在于云主机上,所以推荐使用FTP的PASV模式: FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动 ...
- Windows平台搭建Git服务教程详解
引言 软件企业的核心就是代码,如何确保代码的安全?如何在团队开发中协同工作?为解决这些问题,我们需要采用相应的管理工具来满足管理的需求.探长从最初的VSS.SVN.TFS到现在的Git存储一路走来,感 ...
随机推荐
- MySQL(一)MySQL基础介绍
最近的学习内容是数据库相关的一些知识,主要以MySQL为主,参考书籍——<MySQL必知必会> MySQL学习及下载地址:https://dev.mysql.com/ MySQL学习使用注 ...
- python多版本共存问题(以2.7和3.5系列版本为例)
1.0 下载Python2.7x和Python3.5x版本 2.0 安装Python 3.0 配置环境变量,分别添加至path路径 4.0 只修改Python27文件中的.exe文件(这样系统默认为P ...
- ADO.NET分享
看到<c#从入门到精通(第三版)>书中对ado.net里几种方法打的比方,很有意思就发一下. 1)这张图中,把数据比作水,储存了大量数据. 2)Connection对象好像进水龙头,插在水 ...
- java并发编程CountDownLatch
/** * CountDownLatch用法 * CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能.比如有一个任务A, * 它要等待其他4 ...
- http一次请求过程
物理层:支持底层网络协议: 其中网络层支持IP协议: 传输层支持TCP协议,它是面向连接的: 应用层支持 http,ftp tftp,SMTP,DHCP协议 一个完整的http请求过程: 1.浏览器 ...
- SpringBoot 异常处理
异常处理最佳实践 根据我的工作经历来看,我主要遵循以下几点: 尽量不要在代码中写try...catch.finally把异常吃掉. 异常要尽量直观,防止被他人误解 将异常分为以下几类,业务异常,登录状 ...
- WPF loading遮罩层 LoadingMask
原文:WPF loading遮罩层 LoadingMask 大家可能很纠结在异步query数据的时候想在wpf程序中显示一个loading的遮罩吧 今天就为大家介绍下遮罩的制作 源码下载 点击此处 先 ...
- Jenkins 配置 Node.js 项目
开始 弄清楚 Jenkins 服务器 用 Jenkins 管理员账号下载 NodeJS Plugin 系统管理 ---> 全局工具配置 ---> NodeJS ---> 安装 --- ...
- Luogu P1546 最短网络 Agri-Net
其实这道题根本没必要写,但为了测试vector+堆优化的Prim试一发. 再次觉得Prim和Dijkstra很像,堆优化版本也差不多. 和Dijkstra一样,Prim也是在之前的dis点中选取一个最 ...
- [Spark][python]以DataFrame方式打开Json文件的例子
[Spark][python]以DataFrame方式打开Json文件的例子: [training@localhost ~]$ cat people.json{"name":&qu ...