CentOS_6.5 64位系统,安装git服务器+客户端
================ git服务器安装 ====================
CentOS安装Git服务器 Centos 6.4 + Git 1.8.2.2 + gitosis##
.查看Linux系统服务器系统版本
cat /etc/redhat-release # 查看系统版本 CentOS release 6.4 (Final) ifconfig # 查看服务器的IP
eth0
Link encap:Ethernet HWaddr ::8B:FA::
inet addr:192.168.100.202 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80:::8bff:fefa:/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (365.7 MiB) TX bytes: (12.6 MiB)
Interrupt:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::/ Scope:Host
UP LOOPBACK RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 b) TX bytes: (0.0 b)
.在服务器上安装git及做些操作
- 执行命令
sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
- 同时下载git-1.8.2.2.tar.gz文件,然后将其`mv` 到`/usr/local/src`目录。[git-1.8.2.2.tar.gz安装包下载地址][]
cd /usr/local/src
sudo tar -zvxf git-1.8.2.2.tar.gz
cd git-1.8.2.2
sudo make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
- 增加软连接 sudo ln -s /usr/local/git/bin/* /usr/bin/
git --version #如果能显示版本号,即表示成功` 3.在服务器安装gitosis sudo yum install python python-setuptools
cd /usr/local/src
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
#显示Finished processing dependencies for gitosis==0.2即表示成功
================ 上面是别人的列子 ====================
我们这里使用一台服务器当做git服务器和客户端,操作git饿时候需要切换到git用户
================ git服务器端配置 ====================
服务器:安装git工具【root】/home
yum install -y python python-setuptools git-core
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
这样提示表示安装成功:
Using /usr/lib/python2.6/site-packages
Finished processing dependencies for gitosis==0.2
服务器:新建一个git用户并创建管理git:【root】/home
useradd -m git
su - git
服务器:使用客户端ssh生成git管理【root切换git】/home
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub root@服务器地址:/tmp/
生成ssh:
ssh-keygen -t rsa -C "devil@meila.com"
客户端:使用客户端ssh生成git管理【git】/home
gitosis-init<~/.ssh/id_rsa.pub
这样会在/home/git下面生成gitosis和repositories两个目录,后者即为存放公共库的目录。确保/home/git/repositories/gitosis-admin.git/hooks/post-update具有执行权限(755)。
客户端:下面需要在开发机克隆gitosis-admin.git项目,它是用来管理所有git项目及用户的。/home/git/data(目录没有则手动创建)
git clone git@112.124.14.126:gitosis-admin.git //因为是同一台机器,所以可以用localhost
客户端:为什么这里可以直接通过clone命令克隆项目,就是因为gitosis-init初始化的时候使用了客户端生成的公钥。在gitosis-admin项目下有一个gitosis.conf文件和一个keydir目录。gitosis.conf用来配置git项目和用户,keydir存放用户的公钥,这里的公钥对命名有严格要求,要是 用户名.pub,必须以.pub后缀结尾。gitosis.conf的格式如下:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = username #对应keydir下有一个 username.pub 公钥文件
客户端:现在可以按照这个格式增加新的项目。
[gitosis] [group gitosis-admin]
writable = gitosis-admin
members = username #对应keydir下有一个 username.pub 公钥文件 [group XXX]
writable = XXX
members = user1 user2 ... #多个用户用空格分开
假如这里新增了一个新的XXX项目:
同样用新用户的ssh-keygen命令生成公钥和私钥,并把公钥上传到keydir目录下,重命名为user1.pub,更新gigosis-admin项目
客户端:更新项目在CentOS机器上克隆的gitosis-admin项目下执行下面的命令
git add .
git commit -a -m "add newuser"
git push
完成之后,服务器就已经做好了接受新项目的准备。这个时候服务器端还不会生成new-project.git项目,等PC端push之后会自动生成。
客户端:创建新建的项目目录并添加
mkdir XXX
cd XXX
git init
touch hello.txt //创建一个空文件 才能提交成功
git add hello.txt
git commit -am '添加新项目'
git remote add origin git@192.168.1.115:XXX.git
git push origin master
git push origin master //执行两遍
以上完成后看,XXX/.git/config文件里面是否有,如果没有增加或者执行命令
[branch "master"]
remote = origin
merge = refs/heads/master
命令:(因此通过git config进行如下配置)
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
个人电脑:克隆项目
git clone git@192.168.1.115:XXX.git 个人电脑提交代码后服务器同步更新:(添加自动更新)
文件位置:home/git/repositories/ecshop.git/hooks/post-receive
#自动更新提交的代码到仓库 start
cd /home/git/data/ecshop/ #ecshop是服务器客户端管理项目位置
unset GIT_DIR #cd解决后还是在hoot目录下
git pull origin master
#自动更新提交的代码到仓库 end 说明:
hook脚本执行了cd之后,继续执行git语句拉取的时候还是在hooks文件夹下,而不是cd的文件路径。
上面主要是添加了unset GIT_DIR ,git的hooks里面默认有一些环境变量,会导致无论在哪个语句之后执行git命令都会有一个默认的环境路径,既然这样unset 掉默认的GIT环境变量就可以了。
======================== 常见问题 ===========================
首先确定 /home/git/repositories/gitosis-admin.git/hooks/post-update 为可执行即属性为 0755
1. git操作需要输入密码
原因
公密未找到
解决
上传id_pub.rsa到keydir并改为'gitosis帐号.pub'形式,如miao.pub。扩展名.pub不可省略
2. ERROR:gitosis.serve.main:Repository read access denied
原因
gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub
解决
使keydir的名称与gitosis中members所指的名称一致。
改为members = foo 或 公密名称改为foo@bar.pub
CentOS_6.5 64位系统,安装git服务器+客户端的更多相关文章
- Ubuntu 16.04 LTS 64位系统 安装Docker
本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即Docker社区版,是开发人员和小型团队 ...
- centos7.0 64位系统 安装PHP 支持 nginx
1 安装PHP所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl cur ...
- centos7.0 64位系统 安装PHP5.3 支持 nginx
1 安装PHP所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl cur ...
- 【转】如何在win10(64位系统)上安装apache服务器
如何在win10(64位系统)上安装apache服务器 今天装了Apache服务器,下面是我总结的方法: 一,准备软件 1.64位的apache版本 传送门:http://www.apacheloun ...
- CentOS6.3(64位)下安装Oracle11gR2(64)服务器
安装环境 Linux服务器:Centos6.3 64位 Oracle服务器:Oracle11gR2 64位 系统要求 1.Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内 ...
- Oracle 11g win7 64位【桌面类 && 服务器类】安装过程
Oracle 11g win7 64位[桌面类 && 服务器类]安装过程 一.首先,根据自己的操作系统位数(32位或64位),到官网下载相应的安装程序,如下图所示. ...
- linux CentOs 7.4 64位 系统下 nuxt部署 、nginx 安装、node环境及软连接,pm2软连接
一.nginx安装 1.安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2 ...
- 在64位系统上不能安装Matlab notebook的解决方案
在64位系统上不能安装Matlab notebook的解决方案 过程分解 第一步:安装好matlab(附:Matalab R2015a界面) 第二步:在matlab中执行命令 >>note ...
- Ubuntu12.04安装64位系统出现编译错误error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or dir
问题: Ubuntu12.04安装64位系统出现编译错误error while loading shared libraries: libz.so.1: cannot open shared obje ...
随机推荐
- 面试题_93_to_102_编程和代码相关的面试题
93)怎么检查一个字符串只包含数字?(解决方案) 94)Java 中如何利用泛型写一个 LRU 缓存?(答案<) 95)写一段 Java 程序将 byte 转换为 long?(答案) 95)在不 ...
- LA 3029 - City Game (简单扫描线)
题目链接 题意:给一个m*n的矩阵, 其中一些格子是空地(F), 其他是障碍(R).找一个全部由F 组成的面积最大的子矩阵, 输出其面积乘以3的结果. 思路:如果用枚举的方法,时间复杂度是O(m^2 ...
- Fedora20 优化体验
玩了些许天的fedora系统,到底是加深了对于linux系统的了解 为了便于大家对于fedora系统支持,我将这些天对于fedora的一些不适之处及改进的策略进行了一下小总结.便于新手对于fedora ...
- Qt之自定义界面(窗体缩放)
简述 通过前两节内容,我们实现了自定义窗体的移动,以及自定义标题栏-用来显示窗体的图标.标题,以及控制窗体最小化.最大化.关闭. 在这之后,我们还缺少窗体的缩放-当鼠标移动到窗体的边框-左.上.右.下 ...
- facebook海量图片存储系统与淘宝TFS系统比较
本篇论文的原文可谓通俗易懂.行云流水.结构清晰.图文并茂……正如作者所说的——"替换Facebook的图片存储系统就像高速公路上给汽车换轮子,我们无法去追求完美的设计……我们花费了很多的注意 ...
- NoSQL开篇——为什么要使用NoSQL
NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于N ...
- ASP.NET在IE10,IE11中Form表单身份验证失效问题解决方法
已经研究出解决方案. 在web.config中的forms中增加cookieless="UseCookies"属性即可. <authentication mode=&qu ...
- 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
非常感谢OSC提供了这么好的一个国内的免费的git托管平台.这里简单说下TortoiseGit操作的流程.很傻瓜了 首先你要准备两个软件,分别是msysgit和tortoisegit,乌龟还可以在下载 ...
- I.MX6 Linux udev porting
/*********************************************************************** * I.MX6 Linux udev porting ...
- c & c++中static的总结
static 修饰的三种作用 (1) 静态局部变量 (2) 模块内的全局变量.函数,不可以被其他模块访问 (3) 类的静态成员 其中(3)只在c++中有. (1) 静态局部变量.局部变量一般在函数体内 ...