ubuntu上配置git服务器

【Git】Ubuntu18.04搭建gerrit+gitweb+apache2服务器 Gerrit代码审核服务器的核心是在apache2代理服务器上给托管的Git仓库提供一系列的权限控制,以及通过Web前端页面来做代码审核和权限管理,通常适用于大型软件项目,并且要求软件配置、开发、测试、审核等角色分工明确的软件开发团队。 阅读详情

转载时请注明出处和作者

作者:Xandy

这几天来一直在折腾git版本管理服务器,感觉有点头大,一会儿权限不够,一会儿加密文件与用户名不匹配……

但功夫不负有心人今天下午总是有所成效,把这些天来我所遇到和所范错误作一个记录,给大家一个参考!

今天重新把日志修改了一下,主要解决了gitweb显示问题,与新加入的成员无法clone git仓库的问题!

1       需求

硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到。

软件需求:git-core, gitosis, openssh-server, openssh-client

2       安装配置git服务器

安装git和openssh:

a@server:~$ sudo apt-get install git-core openssh-server openssh-client

新加用户git, 该用户将作为所有代码仓库和用户权限的管理者:

a@server:~$ sudo useradd -m git

a@server:~$ sudo passwd git

建立一个git仓库的存储点:

a@server:~$ sudo mkdir /home/repo

让除了git以外的用户对此目录无任何权限:

a@server:~$ sudo chown git:git /home/repo

a@server:~$ sudo chmod 755 /home/repo   注:此处要把git仓库repo的属性设置成755,不然在gitweb中一直无法找到工程

3       安装配置gitosis

初始化一下服务器的git用户,这一步其实是为了安装gitosis做准备。在任何一 台机器上使用git,第一次必须要初始化一下:

a@server:~$ git config –global user.name “myname”

a@server:~$ git config –global user.email “myname@server“

安装一下python的setup tool, 这个也是为了gitosis做准备:

a@server:~$ sudo apt-get install python-setuptools

获得gitosis包:

a@server:~$ cd /tmp

a@server:/tmp$ git clone git://eagain.net/gitosis.git

a@server:/tmp$ cd gitosis

a@server:/tmp/gitosis$ sudo python setup.py install

切换到git用户下:

a@server:/tmp/gitosis$ su git

默认状态下,gitosis会将git仓库放在 git用户的home下,所以我们做一个链接到/home/repo

$ ln -s /home/repo /home/git/repositories

再次返回到默认用户

$ exit

如果你将作为git服务器的管理员,那么在你的电 脑上(另一台pc)生成ssh公钥:

usr@pc1:~$ ssh-keygen -t rsa

将公钥拷贝到服务器的/tmp下:

usr@pc1:~$ scp .ssh/id_rsa.pub git@<server>:/tmp

回到git服务器上

a@server:/tmp/gitosis$ sudo chmod a+r /tmp/id_rsa.pub

让gitosis运行起来:

a@server:/tmp/gitosis$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub

Initialized empty Git repository in /home/repo/gitosis-admin.git/

Reinitialized existing Git repository in /home/repo/gitosis-admin.git/

gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/home/repo/gitosis- admin.git。我们需要为一个文件加上可执行权限:

a@server:/home/git$ sudo passwd root

a@server:/home/git$ su

root@server:/home/git# cd repositories

root@server:/home/git/repositories# cd gitosis-admin.git/

root@server:/home/git/repositories/gitosis-admin.git# sudo chmod 755 /home/repo/gitosis-admin.git/hooks/post-update

root@server:/home/git/repositories/gitosis-admin.git# exit

4       在服务器上新建一个测试项目仓库

我们在服务器上新建一个空的项目仓库,叫“teamwork”。

切换到git用户:

a@server:/home/git$ su – git

$ cd /home/repo

$ mkdir teamwork.git

$ cd teamwork.git

$ git init - -bare      注:这是在服务器上运行的,是为了初始化一个根级的git仓库

$ exit

但是,到目前为止,这只是一个空仓库,空仓库是不能clone下来的。为了能做clone,我们必须先让某个有权限的人放一个初始化的版本到仓库中。

所以,我们必须先修改一下gitosis-admin.

5       管理gitosis的配置文件

刚刚提到,gitosis本身的配置也是通过git来实现的。在你自己的开发机里,把gitosis-admin.git这个仓库clone下来,就可以以管理员的身份修改配置了。

在你的电脑里:

usr@pc1:~/work$ git clone git@<server>:gitosis-admin.git

usr@pc1:~/work$ cd gitosis-admin/

该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥:

各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的 ssh公钥文件都拿来,按名字命名一下,比如b.pub, lz.pub等,统统拷贝到keydir下:

usr@pc1:~/work/gitosis-admin$ su root

root@pc1:/home/a/work/gitosis-admin# cp /path/to/.ssh/id_rsa.pub ./keydir/b.pub

root@pc1:/home/a/work/gitosis-admin# exit

修改gitosis.conf文件,我的配置大致如下:

[gitosis]

[group gitosis-admin]

writable = gitosis-admin

members = a@server usr@pc1

[group hello]

writable = teamwork

members = a@server b

[group hello_ro]

readonly = teamwork

members = lz

这个配置文件表达了如下含义:gitosis-admin组成员有a, usr,该组对gitosis-admin仓库有读写权限;

team组有a,b两个成员,该组对teamwork仓库有读写权限;

team_ro组有lz一个成员,对teamwork仓库有只读权限。

当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。

加入新文件、提交并push到git服务器:

usr@pc1:~/work/gitosis-admin$ git add .

usr@pc1:~/work/gitosis-admin$ git commit -am “add teamweok prj and users”

usr@pc1:~/work/gitosis-admin$ git push origin master

6       初始化测试项目

好了,现在服务器就搭建完了,并且有一个空的项目teamwork在服务器上。接下来呢?当然是测试一下,空仓库是不能clone的,所以需要某一个有写权限的人初始 化一个版本。就我来做吧,以下是在客户端完成。

usr@pc1:~/work$ mkdir teamwork-ori

usr@pc1:~/work$ cd teamwork-ori/

usr@pc1:~/work/teamwork-ori$ git init           注:这是在用户端的PC上执行的,为的是初始化一个本地的版本库

usr@pc1:~/work/teamwork-ori$ echo “/*add something*/” > hello

usr@pc1:~/work/teamwork-ori$ git add .

usr@pc1:~/work/teamwork-ori$ git commit -am “initial version”

usr@pc1:~/work/teamwork-ori$ git remote add origin git@<server>:teamwork.git

usr@pc1:~/work/teamwork-ori$ git push origin master

到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下 teamwork仓库,就可以任意玩了。

usr@pc1:~/work/teamwork-ori$ su b

$ cd /home/b

$ git clone git@<server>:teamwork.git

$ cd teamwork

$ vim hello

$ git add .

$ git commit -am “b add”

$ git push origin master

$ exit

7       添加已有git项目

另外:如果你有一个现成的git仓库,想放到 gitserver上供team使用(比如你clone了一个官方的kernel仓库,想在内部使用它作为基础仓库),怎么办呢。

首先需要从你的工作仓库中得到一个纯仓库, 比如你的工作目录为~/kernel, 你想导出纯仓库到你的优盘里,然后拷贝到gitserver上去。

$ git clone –bare ~/kernel /media/udisk

然后就拿着优盘,交给gitserver的管理员,让他拷贝到/home/repo/下,同时需要配置 gitosis相关配置文件哦,这个就不用再说了吧。比如:下载ALSA库:

git clone git://android.git.kernel.org/platform/external/alsa-lib.git

git clone git://android.git.kernel.org/platform/external/alsa-utils.git

生成bare库

git clone –bare alsa-lib alsa-lib.git

git clone –bare alsa-utils alsa-utils.git

将bare 库移动到git服务器目录

cp alsa-lib.git /home/repo

注意变更所有者,以获取提交权限。

chown -R git alsa-lib.git

然后就O 了,呵呵.

8       创建gitweb

sudo apt-get install gitweb

8.1 配置 gitweb

默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:

cd /var/www/

sudo ln -s /usr/share/gitweb/* .

8.2 修改配置

sudo vi /etc/gitweb.conf

将 $projectroot 改为git仓库存储目录(例如:/home/git/repositories),保存后刷新浏览器。

如果没有找到项目,你需要将$projectroot/*.git 的属性改为755,让apache用户有可读权限。可以只改你需要让别人通过web访问的那个git。http://localhost/cgi-bin/gitweb.cgi

8.3 修改/etc/gitweb.conf 内容

# path to git projects (<project>.git)

#$projectroot = "/var/cache/git";

$projectroot = "/home/git/repositories";

# directory to use for temp files

$git_temp = "/tmp";

# target of the home link on top of all pages

$home_link = $my_uri || "/";

# html text to include at home page

$home_text = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.

$projects_list = $projectroot;

# stylesheet to use

@stylesheets = ("/gitweb/static/gitweb.css");

# javascript code for gitweb

$javascript = "gitweb/static/gitweb.js";

# logo to use

$logo = "/gitweb/static/git-logo.png";

# the 'favicon'

$favicon = "/gitweb/static/git-favicon.png";

# git-diff-tree(1) options to use for generated patches

#@diff_opts = ("-M");

@diff_opts = ();

8.4 配置apache2

ubuntu中默认的web目录是/var/www,默认的cgi目录是 /usr/lib/cgi-bin/,安装完成gitweb后,gitweb的gitweb.cgi会自动放置到该目录下。

如果你的cgi路径不是默认的/usr/lib/cgi-bin/,需要将gitweb安装在/usr/lib/cgi-bin中的gitweb.cgi复制到原来配置的cgi-bin路径,并在apache的配置文件/etc/apache2/apache.conf末尾加上以下内容:

SetEnv  GITWEB_CONFIG   /etc/gitweb.conf

<Directory "/srv/www/cgi-bin/gitweb">          

     Options FollowSymlinks ExecCGI         

     Allow from all                          

     AllowOverride all                      

     Order allow,deny                       

     <Files gitweb.cgi>

          SetHandler cgi-script

     </Files>                   

     RewriteEngine on

     RewriteCond %{REQUEST_FILENAME} !-f

     RewriteCond %{REQUEST_FILENAME} !-d

     RewriteRule ^.* /gitweb.cgi/$0 [L,PT]

</Directory>

8.5 重新启动apache

sudo /etc/init.d/apache2 restart

访问http://localhost/cgi-bin/gitweb.cgi 

说明一点:如果其它新加入的成员无法clone一个git仓库时,如出现如下错误提示:

ERROR:gitosis.serve.main:Repository read access denied 

原因是当前成员的key命名与在gitosis.conf中的members中的名字不一致!例如所用的key名是 lxq_rsa.pub,而在gitosis.conf中某一group下所用的名称为 lxq@ubuntu

则只需要把lxq_rsa.pub重命名为lxq@ubuntu.pub并重新push到服务器上即可!

最后奉上一个git学习网站,中文的哦 ^_^http://progit.org/book/zh/index.html

在ubuntu上搭建gitweb+apache2 Gitweb提供了git版本库的图形化web浏览功能。它不仅让用户可以一目了然地看到服务器上的最新版本和分支,标签等情况,还允许用户在不必clone整个版本库的情况下,获得某个版本的某个文件。笔者的git server是一台ubuntu的机器,用gitolite做权限管理。下面是在上面用apache2搭建gitweb的步骤: 1. 安装apache2 可以用命令sudo service apa 阅读详情

相关推荐

Ubuntu与Window下git的配置(Ubuntu服务器 /Windows客户端)

Ubuntu与Window下git的配置(Ubuntu服务器 /Windows客户端)

HK836的专栏 2374

消费电子测试五大挑战与SDR解决方案

软件定义无线电(SDR)技术正在重塑现代电子测试体系,其核心原理是通过软件编程实现硬件功能重构。这种架构突破传统测试设备的协议限制,采用宽带射频前端和可编程基带处理单元,显著提升多协议并发测试效率。在消费电子领域,面对5G、Wi-Fi 6E等通信标准共存的测试需求,SDR方案能降低40%测试时间与35%设备成本,特别适合智能手机、车载系统等高度集成化产品的验证场景。测试工程师需要掌握时钟同步(相位噪声<-100dBc/Hz)等关键技术要点,同时结合自动化测试框架实现最佳工程实践。

weixin_30522183的博客 521

ubuntu 系统解决GitHub无法访问问题

为本机ipv4的地址;203.208.39.99 是利用站长工具,获取的github数据库的ipv4地址。ps4:如果以上方法仍不行,且只是想git clone或者浏览github上的东西,可以搜一些镜像网站,如。3)关掉hosts文件,在终端输入:/etc/init.d/networking restart即可。1)终端输入: sudo gedit /etc/hosts 打开hosts文件;1)再次打开hosts文件,在127.0.0.1 localhost后追加。的ip地址并添加到hosts文件末尾;

南七小僧的学海无涯 1万+

Ubuntu 上Gitweb安装指南

与使用git命令查看日志相比较,通过gitweb来查看代码修改更加直观、也更为便利,特别是在本地 查看自己的项目git树相应的变化等。下面针对在本地上建立gitweb进行相应的记录: 1. 实验平台 Ubuntu 10.04 + Apache服务器 + Gitweb软件包 2. 操作步骤 (1)安装Apache网络服务器     sudo apt-get install apache2        注:由于gitweb是通过网页方式来呈现代码修改,因此必 须安装并启动a

lcw_202的专栏 3628

详解:Ubuntu Git服务器配置指南

本文将详细介绍如何在Ubuntu上配置Git服务器,并提供相应的源代码示例。本文提供了在Ubuntu上配置Git服务器的详细指南。通过按照上述步骤进行操作,你将能够搭建一个可供团队使用的Git服务器,并进行代码版本控制和协作开发。注意:在实际生产环境中,为了安全和性能考虑,可能需要进一步配置Git服务器,例如SSL证书配置、访问限制等。如果需要对Git仓库进行访问控制,可以使用Git提供的访问控制工具(如Gitolite)或配置操作系统级别的访问控制。在Git服务器上,每个项目都是一个独立的仓库。

AsfSql的博客 560

ubuntu 完整安装git服务器

完整的安装方法,网上的很多资料都不全,这个应该是足够全了,仔细分析可以正常使用。安装过程图文并茂,方便新手。

ubuntu下git服务器的简单配置

Ubuntu下Git服务器安装与配置 共设置3个角色,服务端,管理员,用户 服务器上多个用户可对应多个超级管理员,但一个用户只能对应一个超级管理员 1. 安装 1.1 安装Git-Core: sudo apt-get install git-core  1.2 安装 Gitosis sudo apt-get install python-setuptools  mk

3779

紫光同创PGL50H开发板实战:盘古50KN网口板的高速通信与数据处理

本文详细介绍了紫光同创PGL50H开发板(盘古50KN网口板)在高速通信与数据处理领域的实战应用。文章从开箱、核心芯片解析、开发环境搭建入手,重点讲解了如何配置与测试其8路千兆以太网接口和SFP光纤接口,并深入探讨了FPGA与DDR3协同进行多路数据汇聚处理的系统架构与调试方法,为网络通信与高速数据处理系统开发提供了宝贵的实践经验。

weixin_28256233的博客 452

linux git配置服务器,Ubuntu12.04 Git 服务器配置图文详解

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,学过Linux的都知道,Git的优点我就不再多说了,我也是很喜欢Linux的。今天我们一起学习Git服务器在Ubuntu 12.04上的配置,废话不多说,走起!1.Git 服务器的搭建过程详细记录,如下:搭建环境:Ubuntu 12.04 桌面版或服务器版均可 软件要求: git-core, gitosis, ope...

weixin_29344197的博客 338

直流电源滤波电路的设计与优化:从基础原理到高效应用

本文深入探讨直流电源滤波电路的设计与优化,从基础原理到高效应用全面解析。重点介绍电容滤波和电感滤波的工作原理及实战设计要点,分享复合滤波电路的进阶技巧,并提供常见问题排查指南。文章还涵盖现代滤波技术的新发展,如有源滤波和数字控制滤波的应用,帮助工程师提升电源系统的稳定性和效率。

weixin_29255731的博客 175

从零到一:Mapviz实战部署与多源数据可视化全解析

本文详细解析了Mapviz在机器人开发中的实战部署与多源数据可视化应用。从安装配置、卫星地图接入,到GPS轨迹、相机图像与激光雷达点云的融合显示,提供了完整的操作指南。针对ROS1与ROS2环境的选择与迁移给出了明确建议,并分享了坐标系对齐、数据同步等常见问题的避坑方案,帮助开发者高效构建室外机器人的“上帝视角”调试平台。

weixin_29230773的博客 252

Ubuntu git使用(一)git服务器的配置

前言作为程序猿这么长时间了,终于从windows转到了Linux,我选择了现在最为流行的Ubuntu。当然开发环境就得重新配置了,这篇博客就从git的服务器配置开始吧,虽然公司用的是svn,但对于长期混迹于github的人来说,对git也不可能陌生,而且android studio对git的支持也非常强大。下面就介绍一下git服务器的配置,当然配置git服务器需要一台运行Linux的机器,推荐大家用ubuntu

cfp6523052的专栏 879

利用ArcGIS快速生成等高线边界,完成地形图拼图

地形图边界一般在CAD中手动绘制,然而,一幅边缘复杂的地形图边界的绘制需要花费大量时间和精力,为了减少重复性工作,提高效率,用ArcGIS软件可以自动生成实测地形图的边界

yl14774636230的博客 9068

Linux ubuntu 下 git 服务器的配置 应用

Ubuntu下  git  服务器的搭建。 前几天老师分配了一个任务 就是配置git服务器,来管理项目,搞弄了好几天,在网上搜教程   搜案例的  但是写的都很笼统,有的写的很好  但是按照他们说的做又会出现各种各样的问题。今天我抽空把我配置git服务器的详细过程记录下来,希望能帮助到大家。 搭建git服务器的4个步骤 1   配置服务器前的准备工作 首先ubuntu系统要联网 安装

mingjie1212的博客 398

智能农业大棚

目 录 摘要 1.绪论 2.系统概述及单片机介绍 2.1整体方案设计思想 2.2系统组成 2.2.1主控芯片的选择 2.2.2传感器模块选择 2.2.3电机驱动模块 2.3 单片机介绍 2.3.1 AT89C51单片机的基本组成 2.3.2AT89C51主要特性 2.3.3管脚说明 2.3.4 AT89C51单片机的存储器 2.3.4.1 程序存储器 2.3.4.2 数据存储器 2.3.5 振荡电路和时钟 2.3.6 AT89C51的中断

weixin_70886450的博客 1327

Kalibr 安装+制作采集的图片和IMU数据生成 .bag 文件 (坑最全,解决方法最简单,最详细哈哈)

方法一、Kalibr标定工具实现 开源代码连接:https://github.com/ethz-asl/kalibr 1.1 创建工作空间 ——下载程序——编译 mkdir -p ~/kalibr_workspace/src cd /kalibr_workspace/src git clone https://github.com/ethz-asl/Kalibr.git cd .. //返回上一级 catkin_make source devel/setup.bash ......

努力努力努力 6939

git ssh配置文件 服务器_git+ubuntu+ssh服务器搭建过程

git服务器搭建过程参考网上资料搭建git服务器过程记录如下:硬件需求一台IBM服务器:四核,CPU(主频2Ghz以上),内存4G,500G的硬盘(3块,都做了raid0),能够接入网络软件需求:ubuntu安装盘(Ubuntu10.10服务器版),git-core,gitosis,openssh-server,openssh-client,samba,gitk,git-gui一、安装ubuntu...

weixin_39548438的博客 131

QGIS之二十六pbf转osm转shp

QGIS之二十六pbf转osm转shp

yilvyangguang520的博客 7499

ubuntu用git-daemon搭建git服务器和配置方法

网络查找资料虽然很方便,但是网上很多人转载文章都是不负责任的.... 搭建这个git服务器老是不成功.重启git总是运行不起来,,,特别是那个网上说的sv git-daemon restart命令,老是出错. 而自己将命令敲进去到是可以.. 对于这点,当然可以加到/etc/rc.local或者profile文件解决..但本人想要一个更*完美*的方法(每个人理解不同) 并且搜来搜去,都是转载的

1万+

手把手教你学Simulink--基于新能源与储能系统的场景实例:压缩空气储能(CAES)系统热力学建模

本文介绍了使用Simulink进行压缩空气储能(CAES)系统热力学建模的详细步骤。系统模型包含压缩机、储气装置、膨胀机、热交换器和控制器等核心模块,通过MATLAB函数计算各部件参数,并设置仿真条件。文章详细说明了从模型创建到性能评估的完整流程,包括压缩/膨胀过程的能量转换、温度压力变化等关键指标分析。该建模方法可验证设计方案的有效性,并为系统优化提供参考,适用于新能源与储能领域的研究与应用。

MHD0815的博客 9180

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 安装rails时遇到的问题汇总
下一篇: Linux的inode的理解
wilelm
博客等级 码龄16年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值