本文转自:http://blog.csdn.net/water_horse/article/details/68958140

1.安装所需软件

fengjk@water:~$ sudo apt-get install git openssh-server openssh-client

2.创建git用户来管理git服务器

fengjk@water:~$ sudo useradd -m git
fengjk@water:~$ sudo passwd git

注意:加 -m 参数可以自动在/home 下创建用户目录,我这小白第一次就被坑了,没有自动创建git目录后面的步骤一脸茫然,最后忍痛重来。并且不用切换到git用户做下面操作

3.创建一个目录作为git仓库的存储点

fengjk@water:~$ sudo mkdir /home/git_pro
fengjk@water:~$ sudo chown git:git /home/git_pro/
fengjk@water:~$  /home/git_pro/

这里的存储点就随便在哪创建和命名了,将该仓库权限交给git并将权限设置为 drwxr-xr-x

4.安装配置gitosis(用来添加使用git的用户和设定权限)

安装gitosis之前需要初始化一下git用户信息,这些信息可以比较随意些

fengjk@water:~$ git config --global user.name 'waterhorse'
fengjk@water:~$ git config --global user.email 'water@126.com'

也可以通过  fengjk@water:~$ cat ~/.gitconfig  来查看设置的信息,设置成功的显示结果为:

[user]
    name = waterhorse
    email = water@.com

Gitosis 的工作依赖于某些 Python 工具,所以首先要安装 Python 的 setuptools 包,在 Ubuntu 上称为 python-setuptools:

fengjk@water:~$ sudo apt-get install python-setuptools

接下来,从 Gitosis 项目主页克隆并安装:

fengjk@water:~$ git clone https://github.com/res0nat0r/gitosis.git
fengjk@water:~$ cd gitosis/
fengjk@water:~/gitosis$ sudo python setup.py install

由于gitosis默认状态下会将仓库放在用户的repositories目录下,例如git用户的仓库地址默认在/home/git/repositories/目录下,这里我们需要创建一个链接映射。让他指向我们前面创建的专门用于存放项目的仓库目录/home/git_pro, 先切换成git用户

fengjk@water:~/gitosis$ su git
git@water:/home/fengjk/gitosis$ ln -s /home/git_pro /home/git/repositories
git@water:/home/fengjk/gitosis$ exit

成为管理员:无论是不是本机都可以通过生成ssh公钥的方法成为管理员

fengjk@water:~/gitosis$ ssh-keygen -t rsa

生成的密钥可以在 ~/.ssh 里,查看   fengjk@water:~/gitosis$ ls ~/.ssh/

在服务器上建管理员 
首先要把公钥权限改为所有用户可读取:

fengjk@water:~$ sudo chmod a+r ~/.ssh/id_rsa.pub

现在可以初始化 Gitosis 了。你可以用自己的公钥执行 gitosis-init 命令,要是公钥不在服务器上,先临时复制一份:

fengjk@water:~/gitosis$ sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
重新初始化现存的 Git 仓库于 /home/git_pro/gitosis-admin.git/
重新初始化现存的 Git 仓库于 /home/git_pro/gitosis-admin.git/

这样该公钥的拥有者就能修改用于配置 Gitosis 的那个特殊 Git 仓库了。接下来,需要手工对该仓库中的 post-update 脚本加上可执行权限:

fengjk@water:~/gitosis$  /home/git_pro/gitosis-admin.git/hooks/post-update

 5.配置gitosis 

Gitosis管理是通过一个特殊的 Git 仓库来管理,所以现在就克隆一个git库

fengjk@water:~$ mkdir myproject
fengjk@water:~$ cd myproject/
fengjk@water:~/myproject$ git clone git@xxx.xxx.xxx.xxx(注:ip地址):gitosis-admin.git
fengjk@water:~/myproject$ ll gitosis-admin/
总用量
drwxrwxr-x  fengjk fengjk  4月    : ./
drwxrwxr-x  fengjk fengjk  4月    : ../
drwxrwxr-x  fengjk fengjk  4月    : .git/
-rw-rw-r--  fengjk fengjk    4月    : gitosis.conf
drwxrwxr-x  fengjk fengjk  4月    : keydir/

gitosis.conf 文件是用来设置用户、仓库和权限的控制文件。keydir 目录则是保存所有具有访问权限用户公钥的地方— 每人一个

6.测试git 

首先可以在本地创建一个git库

fengjk@water:~/myproject$ mkdir testpro
fengjk@water:~/myproject$ cd testpro/
fengjk@water:~/myproject/testpro$ git init
初始化空的 Git 仓库于 /home/fengjk/myproject/testpro/.git/
fengjk@water:~/myproject/testpro$ .txt
fengjk@water:~/myproject/testpro$ git add .txt
fengjk@water:~/myproject/testpro$ git commit -m '测试git'
[master (根提交) f7f62fc] 测试git
   insertions(+),  deletions(-)
 create mode  .txt
fengjk@water:~/myproject/testpro$ git remote add origin git@xxx.xxx.xxx.xxx:testpro.git
fengjk@water:~/myproject/testpro$ git push origin master
ERROR:gitosis.serve.main:Repository read access denied
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

发现报错了,这是因为还没有权限使用这个仓库,这时就需要操作gitosis来添加用户对该仓库的权限了。 
将用户的公钥放到/home/fengjk/myproject/gitosis-admin/keydir目录下:

fengjk@water:~/myproject/testpro$ cp ~/.ssh/id_rsa.pub /home/fengjk/myproject/gitosis-admin/keydir/fengjk@water.pub

再对gitosis.conf进行配置

fengjk@water:~/myproject/testpro$ sudo vi /home/fengjk/myproject/gitosis-admin/gitosis.conf

在文件里添加下面一段代码

[group test]            ####这个test可以随意命名
members = fengjk@water  ####用户名
writable = testpro      ####项目仓库名

最后保存,需要推送

fengjk@water:~/myproject/testpro$ cd /home/fengjk/myproject/gitosis-admin/
fengjk@water:~/myproject/gitosis-admin$ git add .
fengjk@water:~/myproject/gitosis-admin$ git commit -m '添加仓库权限'[master bb732da] 添加仓库权限
   insertion(+)
fengjk@water:~/myproject/gitosis-admin$ git push origin master

然后在进入到testpro目录进行推送

fengjk@water:~/myproject/gitosis-admin$ cd /home/fengjk/myproject/testpro/
fengjk@water:~/myproject/testpro$ git push origin master
初始化空的 Git 仓库于 /home/git_pro/testpro.git/
对象计数中: , 完成.
写入对象中: % (/),  bytes |  bytes/s, 完成.
Total  (delta ), reused  (delta )
To git@202.199.70.191:testpro.git
 * [new branch]      master -> master

成功了!再到git_pro仓库存储目录下查看就有了刚刚的testpro仓库了:

fengjk@water:~/myproject/testpro$ cd /home/git_pro/
fengjk@water:/home/git_pro$ ls
gitosis-admin.git  testpro.git

Ubuntu16.04 下搭建git服务器及gitweb+nginx配置的更多相关文章

  1. 【转】在Linux下搭建Git服务器

    在 Linux 下搭建 Git 服务器 环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows. ...

  2. Ubuntu 14.04 下搭建SVN服务器 svn://

    Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get install subversion 之后选择SVN服务文件及配置文件的放置位置.我放在了/srv下 ...

  3. Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit

    本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...

  4. Windows操作系统下搭建Git服务器和客户端。

    本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...

  5. Ubuntu 14.04 下搭建SVN服务器 (转载自 http://www.linuxidc.com/Linux/2015-01/111956.htm)-------------我所用到是红色字体

    http://www.linuxidc.com/Linux/2015-01/111956.htm Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get i ...

  6. windows 下搭建git服务器,及问题处理。

    最近要做一个源码管理服务器,权衡了一下还是git最适合,搭建服务器前看了网上一些windows下搭建git服务器的帖子,感觉还比较简单,没有太多需要配置的地方,于是开始动手. 我选择的是 gitfor ...

  7. Windows平台下搭建Git服务器的图文教程

    Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...

  8. Windows平台下搭建Git服务器的图文教程(转发)

    Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...

  9. 在Linux下搭建Git服务器的方法是什么样?

    第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不一样,我的是采用的yum方法.ubuntu可以用apt-get命令.sudo yum install git 第二步 添 ...

随机推荐

  1. 万水千山ABP - 单租户时,成功保存数据后,数据不显示

    问题描述: ABP 禁用了多租户,在编辑一个实体记录后,能成功地保存数据,但数据列表中看不到这条记录.打开数据表查看,发现该实体记录的 TenantId 字段值成了 Null , 而不是预期的默认租户 ...

  2. Form 和 Input 对象

    更改表单的 action 属性 <html> <head> <script type="text/javascript"> function c ...

  3. java——封装和关键字

    封装:将类的属性和方法的实现细节隐藏起来的过程 封装的好处:1重用性(代码)2,利于分工3,隐藏细节 访问关键字:public private 默认访问修饰符,protected static关键字 ...

  4. Jbpm工作流(一)

    了解一下什么是Jbpm及特点. jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统.jBPM是公开源代码项目,它使用要遵循 Ap ...

  5. JavaScript异步编程:Generator与Async

    从Promise开始,JavaScript就在引入新功能,来帮助更简单的方法来处理异步编程,帮助我们远离回调地狱. Promise是下边要讲的Generator/yield与async/await的基 ...

  6. React+ANTD项目使用后的一些关于生命周期比较实用的心得

    1. constructor() constructor(props){ super(props) this.state=({ }) } 一定先写super  可以接收从父组件传来的值 父组件往子组件 ...

  7. 【转】java中PriorityQueue优先级队列使用方法

    优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. PriorityQueue是从JDK1.5开始提供的新的数据结构接口. 如果不提供Comparator的话,优先 ...

  8. C/C++静态代码安全检查工具

    静态代码安全检查工具是一种能够帮助程序员自动检测出源程序中是否存在安全缺陷的软件.它通过逐行分析程序的源代码,发现软件中潜在的安全漏洞.本文针对 C/C++语言程序设计中容易存在的多种安全问题,分别分 ...

  9. Django入门二之模板语法

    一. 模板变量 Context传入的可以是一个str,dict,list,甚至是一个实例对象 在html中如何调用这些对象进行取值呢 1. 变量名 {{ variable }} 返回字符串,无论是st ...

  10. 第四次作业之jieba库的应用

    #!/usr/bin/python# -*- coding:utf-8 -*- import imp,sys imp.reload(sys)from matplotlib.font_manager i ...