Ubuntu16.04 下搭建git服务器及gitweb+nginx配置
本文转自: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配置的更多相关文章
- 【转】在Linux下搭建Git服务器
在 Linux 下搭建 Git 服务器 环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows. ...
- Ubuntu 14.04 下搭建SVN服务器 svn://
Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get install subversion 之后选择SVN服务文件及配置文件的放置位置.我放在了/srv下 ...
- Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit
本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...
- Windows操作系统下搭建Git服务器和客户端。
本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...
- 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 ...
- windows 下搭建git服务器,及问题处理。
最近要做一个源码管理服务器,权衡了一下还是git最适合,搭建服务器前看了网上一些windows下搭建git服务器的帖子,感觉还比较简单,没有太多需要配置的地方,于是开始动手. 我选择的是 gitfor ...
- Windows平台下搭建Git服务器的图文教程
Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...
- Windows平台下搭建Git服务器的图文教程(转发)
Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...
- 在Linux下搭建Git服务器的方法是什么样?
第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不一样,我的是采用的yum方法.ubuntu可以用apt-get命令.sudo yum install git 第二步 添 ...
随机推荐
- 修改was数据源
本机的RAD运行的工程可以通过修改jpa中的persistence中的jni修改数据源: 对于通过was控制台部署的ear需要在was控制台:资源--jdbc 修改数据源
- PBCS项目总结
PBCS项目已经成功地Product,终于可以缓解一下紧张的心情,最近连续四五个月紧张地工作,头都要大了.如今比较清闲,是时候总结一下整个项目了.(古人云:成功在于总结嘛) 整个项目是二个人开发的,由 ...
- 【转】H.264RTP封包原理
原文地址:H.264RTP封包原理 作者:cnp11 1. 引言 随着信息产业的发展,人们对信息资源的要求已经逐渐由文字和图片过渡到音频和视频,并越来越强调获取资源的实时性和互动性.但人们又面 ...
- HDU-1017
A Mathematical Curiosity Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- .Net MVC5异步请求Entity Framework 无限循环解决方法
.Net MVC5异步请求Entity Framework 无限循环解决方法 Entity Framework 存在一对多.多对多之间的关系,相互依赖,在返回JSON数据时往往会出现相互引用造成的无限 ...
- 0基础一分钟入门Python
这篇文章面向所有想学python的小伙伴(甚至你从没听过编程),这篇文章将会带你以最快的速度入门python.赶快上车,时间来不及了... 一,下载和安装python 1.下载: 1.1 python ...
- Ocelot中文文档-Websockets
Ocelot额外支持代理websockets.这个功能在问题 212中被提出. 为了是Ocelot代理websocket,你需要做如下事情. 在你的Configure方法中,你要告知应用程序使用Web ...
- Ocelot中文文档-中间件注入和重写
警告!请谨慎使用. 如果您在中间件管道中看到任何异常或奇怪的行为,并且正在使用以下任何一种行为.删除它们,然后重试! 当在Startup.cs中配置Ocelot的时候,可以添加或覆盖中间件.如下所示: ...
- 微信小程序-框架详解(1)
配置 -app.json文件对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.tab等 { "pages": [ //决定页面文件的路径 "pag ...
- python笔记:#001#python简介
认识 Python 人生苦短,我用 Python -- Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...