centos 6.3下使用gitosis安装搭建git server教程 【百科全说】-凯发k8官方旗舰厅

腾讯视频/爱奇艺/优酷/外卖 充值4折起

git作为一个分布式的版本控制系统,使用git的时候,一般和服务器通讯使用的是ssh协议,用ssh的主要优点是速度快(传输前数据会先压缩,比http快),安全,方便读写。

客户端通过ssh访问服务器端的验证方式一般有两种,一种是用户名密码的方式,一种是使用公私钥认证的方式. 使用公私钥的方式比较方便,无需每次登录输入密码。

某个受信任的客户端的公钥会被设置在服务器端的 ~/.ssh/authorized_keys文件中,有关此文件的格式可以参见 sshd的用户手册 man sshd . authorized_keys有个比较厉害的功能是 支持 command参数,使得每次用户使用此公钥进行验证的时候执行此后面的命令.这样就可以做一些逻辑处理了.

一般git库的管理需要权限控制,如何方便简单的进行库的权限管理呢? authorized_keys是一个思路,指定特定command参数,每次验证好用户后首先执行相关逻辑,检测当前用户是否具有某个权限。 所以便有了gitosis,与其说gitosis是一个git权限管理系统,还不如说它是一个authorized_keys文件管理器.

凯发app官网登录的解决方案:

环境部署

操作系统: centos6.3 x64
git: git-1.7.1
gitosis: gitosis
gitweb: 1.7.1-3
openssh server: openssh-server-5.3p1
apache: httpd-2.4.4
python-setuptools: python-setuptools-0.6.10-3

git server(centos6.3 x64): node2.example.com
git client(centos6.3 x64): node1.example.com

server端配置:

一.关闭iptables和selinux

复制代码

代码如下:

# service iptables stop
# setenforce 0
# vi /etc/sysconfig/selinux
---------------
selinux=disabled
---------------

二.同步时间

复制代码

代码如下:

# ntpdate cn.pool.ntp.org

三.安装apache

传送门:http://www./article/54969.htm

四.安装openssh

1.yum安装openssh:

复制代码

代码如下:

# yum install openssh-server -y

2.修改ssh服务端配置:

复制代码

代码如下:

# vi /etc/ssh/sshd_config
——————————————————————————————
port 22 # 修改成你想要的登陆端口
permitrootlogin no # 禁止root用户登陆
strictmodes yes # 检查密钥的用户和权限是否正确,默认打开的
rsaauthentication yes # 启用 rsa 认证
pubkeyauthentication yes # 启用公钥认证
passwordauthentication yes # 启用密码认证,默认是打开的
serverkeybits 1024 # 修改后变为此状态,将serverkey强度改为1024比特
permitemptypasswords no # 修改后变为此状态,禁止空密码进行登录
——————————————————————————————

3.重启服务:

复制代码

代码如下:

# /etc/init.d/sshd restart

五.安装git

复制代码

代码如下:

# yum install git-core -y

六.安装gitosis

1.安装gitosis依赖python-setuptools包

复制代码

代码如下:

# yum install python-setuptools -y

2.安装gitosis

复制代码

代码如下:

# cd ~
# mkdir src
# cd src
# git clone https://github.com/tv42/gitosis.git
# cd gitosis
# python setup.py install

3.为gitosis创建系统用户

复制代码

代码如下:

# useradd -m git
# passwd git

4. 运行gitosis

(1).将管理员生成的公钥上传或拷贝到服务器上。这里的公钥需要在git服务器管理员下使用ssh-keygen命令来创建

复制代码

代码如下:

# su - git

保证web页面有权限显示该仓库内容

复制代码

代码如下:

# chmod -r 755 /home/git
# ssh-keygen -t rsa
# cp ~/.ssh/id_rsa.pub /tmp

(2).初始化gitosis

进入到拷贝过来的id_rsa.pub所在目录

复制代码

代码如下:

# cd /tmp
# gitosis-init < id_rsa.pub

此时,会在/home/git目录下生成gitosis仓库和配置目录

复制代码

代码如下:

# cd /home/git
# ll
----------------------------------------------------------------
drwxr-xr-x 2 git git 4096 aug 12 13:39 gitosis
drwxr-xr-x 4 git git 4096 aug 12 13:39 repositories
---------------------------------------------------------------

(3).切换回当前(root)用户

复制代码

代码如下:

# exit

(4).配置权限

如果想要别人能够clone gitosis-admin.git,需要执行以下操作:

复制代码

代码如下:

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

至此,gitosis的安装工作已完成,其相关配置可以有管理员来操作,然后再提交到服务器上.

(5)现在可以试一下用初始化 gitosis 的公钥的拥有者身份 ssh 登录服务器,应该会看到类似下面这样:

复制代码

代码如下:

# su - git
$ ssh git@127.0.0.1
------------------------------------------------
pty allocation request failed on channel 0
error:gitosis.serve.main:need ssh_original_command in environment.
connection to gitserver closed.
------------------------------------------------

说明 gitosis 认出了该用户的身份,但由于没有运行任何 git 命令,所以它切断了连接。那么,现在运行一个实际的 git 命令 — 克隆 gitosis 的控制仓库:
在你本地计算机上克隆git仓库

复制代码

代码如下:

# cd /tmp
# git clone git@gitserver:gitosis-admin.git

这会得到一个名为 gitosis-admin 的工作目录,主要由两部分组成:
红色为git仓库配置,蓝色为实际仓库保存的文件

复制代码

代码如下:

# cd gitosis-admin
# ll -a
----------------------------------------------------------
total 20
drwxr-xr-x 4 git git 4096 aug 12 13:21 .
drwxr-xr-x 4 git git 4096 aug 12 13:23 ..
drwxr-xr-x 8 git git 4096 aug 12 13:22 .git
-rwxr-xr-x 1 git git 157 aug 12 13:21 gitosis.conf
drwxr-xr-x 2 git git 4096 aug 12 13:20 keydir
-----------------------------------------------------------

以上操作相当于,系统git用户初始化并成为gitosis管理员,且利用其管理员权限将gitosis-admin仓库clone到本地.

5.添加本地用户john和仓库test到gitosis,并和管理员git合作管理gitosis

1. 用户john添加并发送id_rsa.pub给git

复制代码

代码如下:

# su -
# useradd john & passwd john
# su - john
# ssh-keygen -t rsa
-----------------------------------------------------------
generating public/private rsa key pair.
enter file in which to save the key (/home/john/.ssh/id_rsa):
created directory '/home/john/.ssh'.
enter passphrase (empty for no passphrase):
enter same passphrase again:
your identification has been saved in /home/john/.ssh/id_rsa.
your public key has been saved in /home/john/.ssh/id_rsa.pub.
-----------------------------------------------------------
# cp /home/john/.ssh/id_rsa.pub /tmp

2. gitosis管理员git分配john权限

复制代码

代码如下:

# su - git
# mkdir projects
# cd ~/projects
# git clone git@node2.example.com:gitosis-admin
# cd gitosis-admin
# cat gitosis.conf
------------------------------------------------
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = git@node2.example.com
------------------------------------------------
# ls keydir/
-------------------------
git@node2.example.com.pub
-------------------------
# cp /tmp/id_rsa.pub keydir/john.pub
# vi gitosis.conf
————————————————————————————————————
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = git@node2.example.com
[group test]
writable = test
members = git@node2.example.com john
————————————————————————————————————
# git add .
# git commit -am "add member john and project foo"
# git push

3. 用户git添加项目test

复制代码

代码如下:

# su - git
# cd ~/projects
# mkdir test
# cd test
# git init
# echo "hello world." > hello.txt
# git add hello.txt
# git commit -am 'first commit'
# git remote add origin git@node2.example.com:test.git
# git push origin master

4. 用户 john clone test并修改hello.txt

复制代码

代码如下:

# su - john
# git clone git@node2.example.com:test.git
# cd test
# date >> hello.txt
# git commit -am 'add time to hello.txt' && git push

整个过程分为:

1.通过修改gitosis-admin管理gitosis用户权限,需要clone到本地,然后修改配置文件,最后add push将结果推送到远程实现权限修改.

2.添加系统用户,生成该用户公钥,并将其复制到keydir下,实现该用户有权限进行git等相关操作.

3.登陆该用户账户进行git相关操作,修改完后commit,push到中服务器即可完成仓库权限配置.

七.安装gitweb

1.首先我们需要git的源码,其中带有gitweb,并能生成定制的cgi脚本:

复制代码

代码如下:

# git clone git://git.kernel.org/pub/scm/git/git.git
# cd git/
# make gitweb_projectroot="/home/git/repositories" prefix=/usr gitweb
# cp -rf gitweb /usr/local/apache2/htdocs/

注: 通过指定 gitweb_projectroot 变量告诉编译命令 git 仓库的位置

2.设置apache以cgi方式运行该脚本,并添加一个virtualhost配置:

(1).加载apache的vhost配置文件

复制代码

代码如下:

# vi /usr/local/apache2/conf/httpd.conf

搜索包含httpd-vhosts的行,并去掉该行注释.
(2).加载cgid模块,使其支持perl语言.

复制代码

代码如下:

# vi /usr/local/apache2/conf/httpd.conf

搜索包含mod_cgid.so的行,并去掉该行注释.
(3).配置virtualhost

复制代码

代码如下:

# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

添加如下配置:

复制代码

代码如下:

——————————————————————————————————————————

servername git.example.com
documentroot /usr/local/apache2/htdocs/gitweb

options execcgi
allowoverride all
order allow,deny
allow from all
addhandler cgi-script cgi pl
directoryindex gitweb.cgi


——————————————————————————————————————————

(4).安装time/hires.pm perl模块
首次打开web页面报can't locate time/hires.pm in @inc ….错误
解决方法:

复制代码

代码如下:

# yum install perl-devel perl-cpan -y
# perl -mcpan -e shell
cpan[2]> install time::hires
cpan[3]> exit

(5).重启apache服务

复制代码

代码如下:

# /usr/local/apache2/bin/apachectl restart

(6).修改本机host,并打开gitweb页面
http://git.example.com

大功告成....

02/07 12:48
第一步:下载内核 传送门:地址.笔者下载的是3.2.84版本 第二步:解压编译内核 由于我下的是.tar.xz文件,用tar命令不能直接解压. 1.我的系统里不带xz解压软件,先下载xz-5.0.3.tar.bz2文件并解压安装 tar -jvxf xz-5.0.3.tar.bz2 cd /opt/xz-5.0.3 #进入解压后的文件夹 ./configure make make install 2.解压内核 xz -d linux-3.2.84.tar.xz tar -xvf linux-3.
04/06 08:36
最近工作需要iis,自己的电脑又是windows7系统,找了下安装的方法,已经安装成功。在博客里记录一下,给需要的朋友,也是给自己留个备份,毕竟我脑子不是很好使。 一、首先是安装iis。打开控制面板,找到“程序与功能”,点进去 二、点击左侧“打开或关闭windows功能” 三、找到“internet 信息服务”,按照下图打勾即可 等待安装完成 四、安装完成后,再回到控制面板里面,找到“管理工具”,点进入 五、双击“internet 信息服务(iis)管理器”就是iis了。如果经常需要使用iis的
05/25 10:24
安装其实很快的,自己慢慢摸索也能成功! 1.界面说明: install or upgrade an existing system 安装或升级现有的系统 install system with basic video driver 安装过程中采用 基本的显卡驱动 rescue installed system 进入系统修复模式 boot from local drive 退出安装从硬盘启动 memory test 内存检测 这里选择第一项,安装或升级现有的系统,回车. 2.出现是否对cd媒体进行
09/15 22:09
默认5.1以上所没有netconfig命令的,需要安装 root@localhost ~]# netconfig 如果出现找不到该命令的错误信息,说明该命令包还没有安装,redcat/centos默认情况下是没有安装的。 首先要安装该命令包,到这里 http://rpm.pbone.net/index.php3/stat/4/idpl/7974654/com/netconfig-0.8.24-1.2.2.1.i386.rpm.html 下载: netconfig-0.8.24-1.2.2.1.i
10/22 12:42
一:卸载旧版本 使用下面的命令检查是否安装有mysql server 复制代码 代码如下: rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 复制代码 代码如下: rpm -e mysql //普通删除模式 rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除 安装mysql 安装编译代码需要的包 复制代码 代码如下: yum -y install make gcc-c cmake
09/07 16:32
一.前言: 初识chef,我们可以先了解一下devops运动http://zh.wikipedia.org/wiki/devops,简单点说,就是传统的软件组织将开发、it运营和质量保障设为各自分离的部门,而devops运动的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。 所以chef简单点说,就是devops运动中的一项重要工具成员,是一个同时面向开发与运维的集中管理工具。 就服务器的集中管理工具而言,知名度与chef平分天下的是叫“puppet”
07/01 07:19
这篇文章主要介绍了系统环境:centos6.0 x64的lamp运行环境配置教程,需要的朋友可以参考下 1、确认搭建lamp所需要的环境是否已经安装 [root@centos6 ~]# rpm -q make gcc gcc-c zlib-devel libaio 备注:安装libpng时候需要zlib-devel 安装mysql时候需要libaio 2、如果没安装则yum安装 [root@centos6 ~]# yum install make gcc gcc-c zlib-devel

win7下php运行环境搭建(apache2+mysql+php)

03/11 07:59
php版本:php-5.3.2-win32-vc6-x86,vc9是专门为iis定制的,vc6 是为了其他web服务软件提供的,如 apache。我下载的是zip包 下载地址 mysql版本:windows (x86, 32-bit), msi installer essentials – recommended,即mysql community server 5.1.45 下载地址 apache版本:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2,openss
06/22 11:35
1、系统环境 [android@localhost ~]$ uname -a linux localhost.localdomain 2.6.32-71.el6.i686 #1smp wed sep 1 01:26:34 edt 2010 i686 i686 i386 gnu/linux [android@localhost ~]$ lsb_release -a lsb version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graph
网站地图