




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
我从接触git到现在一年时间不到。这段时间来,感觉git相比其它版本控制系统(如svn),它的创建分支能力强,方便回退版本,快速检查到修改。这几个特征,是我这次选择git作为代码控制的系统的原因。当然git也有一些地方比不过svn,就是查看代码的相对修改,没有这么直观。我之前也没接触过git的服务端,要搭建这个服务器,首先想到的百度。这次是用vmware workstation11建立的虚拟机上面作为代码的git服务器和普通的代码编译服务器。也就是说所有的ubuntu系统,都是虚拟机。这里选用的ubuntu是14.04,完整的包名是“ubuntu-14.04.3-desktop-amd64.iso“。没有直接在电脑上装ubuntu系统,是因为当前项目急着要用代码服务器,我之前没有装过ubuntu系统,并且对挂载大硬盘没有经验,故不选择这条路,后面有空再整。总结这次搭建git服务器的过程,总共需要解决如下几个问题:1. ubuntu 虚拟机默认是与其它电脑无法沟通的,需解决这个网络沟通的问题。2. Ubuntu 的IP地址会随着路由器重启而改变IP,作为一个git服务器,必须固定IP。3. Git服务器的搭建。4. Gitweb的搭建。这里首要解决的问题是,按默认设置安装的ubuntu系统,用其它电脑是无法访问的,除了本机,这时的虚拟机的IP大概长这样:192.168.6.xxx。在linux的终端上面输入ifconfig回车即可查看。在百度查看了很多内容,找了一段时间也没有找到直接的解决方法。后面找到一篇文章:/225186/381225/ VMwork虚拟机的网络结构从中得出灵感,在虚拟机开启前先编辑网络的连接方式,将网络连接方式改成自定义的方式,并且选VMnet0(自动桥接)方式。这里要注意的是,如果是开始新建虚拟机,要用默认的NAT方式,要不然新建的虚拟机无法连上网。只有用NAT方式建好虚拟机(带网络时新建,一般在建立虚拟机时,会从网络上下载一些重要的安装补丁。如果新建虚拟机时断开网,这样新建的虚拟机有时候在使用时会提示缺少组件)。 选择VMnet0方式后启动,在终端输入ifconfig,IP竟然变成了192.168.1.xx的方式,经putty.ext和samba的连接测试,确认其它计算机也可以访问了该虚拟机了!接下来解决第二个问题,固定IP的问题。百度上有一篇文章写得很好,链接如下:/article/e5c39bf5bbe0e739d7603396.html Ubuntu14.04下如何配置固定IP基本上按着上面的提示去做,经验证是OK的。但是要注意以下几点,请参考本目录中的文档 “ubuntu14.04固定IP.docx “即可。第三步,搭建 git服务器,百度上同样一篇好文章,/zheng_he_xiang/blog/static/18650532620154493528569/ Git : Ubuntu-git服务器搭建之亲自搭建这篇文章关于git服务器搭建部分讲得比较清楚。最后gitweb部分讲得太简单,而实际上还会遇到一些问题。我需要的是在ubuntu14.04下面搭建,故与上文有一些出入。先介绍一下,各个电脑和职责分配 :虚拟机超级管理员sv, 用作git服务器,并会另新建普通帐户git,IP地址为38虚拟机超级管理员dd,用作git管理员,IP为35虚拟机普通用户cc,用作git 客户端,IP为2614.04上面,安装软件什么的,直接用apt-get install 来安装,一般不会出现报错的现象,很方便安装。在搭建git服务器过程中,我们大部分情况是直接用apt-get install pkgname的方式来安装的。首先安装open-sshserver openssh-client,先进入超级用户,带#号的命令提示行,安装软件时可不输入sudo.退出超级用户,回到普通sv用户,用ssh-keygen t rsa生成本地私钥和公钥,分别在目录/home/sv/.ssh下面,生成的同时,会提示保存路径,设置密码之类的,这里我们不用输入任何的资料,只需要一路回车下来,到出现 RSA 2048的提示即完成。注意,以后所有用户生成私钥和公钥都是同样的命令,且先前必须 安装ssh软件(sudo apt-get install ssh),执行这个命令之前,先在命令行终端先将当前目录移到当前用户的home目录。如下图:安装git-core(只有作为git server的电脑才需安装此组件),增加git用户,并设置密码。用su git命令,切换到git用户。并从网站上下载git服务端代码,一小会即完成了克隆,文件放在/home/git/gitolite下面。并建立/home/git/bin文件夹,安装gitolite到/home/git/bin下面。这时需要从管理员虚拟机dd上面,同样安装openssh,并在/home/dd目录下面用命令ssh-keygen t rsa命令,生成的文件在/home/dd/.ssh/下面,并如下图,将id_rsa.pub通过 scp命令,复制到git服务器的git帐户的home目录下面。注意这个scp的格式是 scp 文件路径 目标文件路径。其中目标文件路径的格式是 帐户名IP地址:/home/帐户名 在初次scp时,系统会提示连接未建立,是否新建连接,输入yes,提示输入密码是,就提示目标路径中的帐户的密码,一般可成功复制。如果出现报错的情况,则需要手动用U盘等工具,将管理员帐户dd中的/home/dd/.ssh/id_rsa.pub复制到目标服务器的home目录下面。接下来就要使用从管理员电脑dd上复制过来的id_rsa.pub。使用命令如下:这条命令下完后,会在/home/git/下面新建一个repositories的目录,该目录是以后文件或代码的仓库,如下截图。系统 默认建好两个git的仓库,一个是gitolite-admin.git,主要用于git管理员管理git的仓库,比如说新建仓库,新增用户key等。另一个testing.git主要用于测试git是否已成功建立。接下来,需要用到管理员dd帐户克隆gitolite-admin下来,并把客户cc的公钥push到git服务器的gitolite-admin上面去,这样,客户端cc才有权限访问git服务器git上面的代码。命令如下,先进到dd的home目录,执行git clone git38:gitolite-admin,由于 是管理员帐户,故不需要密码就可以将git服务端的gitolite-admin克隆下来,如下图红色框框处。进入该文件夹中查看 ,可以看到这下面就只有两个文件夹,一个是conf,主要用于配置仓库及能访问仓库的人员,比如新增仓库和移除仓库,都需要修改该目录下面的gitolite.conf文件,另一个是keydir,主要保存能访问git服务器的各个电脑提交过来的公钥。如要增加一台电脑某个帐户访问git的权限,必须将该台电脑用ssh-keygen t rsa生成的公钥放到这个目录,并用git push到git仓库中去。下图前两个 是默认系统有的,第一个gitolite-admin仓库,只有id_rsa的公钥的电脑才能访问,即是dd用户(35).另外一个testing也是系统默认的,看到它后面有写RW+ = all,意思是所有提交了key的用户,都有权限访问git的这个仓库。这里我们要增加80L这个名字的仓库,并且对所有已有公钥的用户开放,这个文件修改如下:改完这个文件,需要把这个修改,提交到git服务器,执行git add . ,git commit, git push 这三个命令,由于首次commit,git要求 设置和user.email,否则无法提交。这里我们也设置一下,如下图,设置完后再进行git commit上述设置完后,再git commit,一提交到远端服务器,这个就会在git的server端的/home/git/repositories下面新建一个80L.git的空仓库,如上截图所示。下面,我们用具有git管理员权限的帐户dd来测试一下是否能够将该仓库从git server电脑上把刚建的仓库clone下来。果然,经过测试,确实可以clone下来一个空仓库,里面只包含.git文件夹,其它什么文件都没有。 作为一个 git仓库,肯定是要有文件的,这里我们增加一个文件测试一下,就增加一个aaa.c,并使用git add ,git commit,git push 三条命令,将该文件提交到远程仓库(git server服务器中)去。Git add 完所有文件后,再查看状态,看的到确实是有一个aaa.c的文件已经增加并准备提交了。用git 提交命令,将新增的文件提交。看到最后面是To gitIP:xxx.git 就是提交成功了。通过 git log来查看,可以看到本仓库第一条提交Log。接下来测试当前电脑dd用户是否可以把刚刚提交上去的仓库的所有内容clone下来。另外在上级不带.git的目录建一个result文件夹,为了避免与之前的git分开,不受它跟踪。经确认,确实是可以将刚刚提交下来的文件clone下来。接下来,我们在客户机的用户cc上,将cc用户的公钥上传到管理员帐户dd的home目录。在生成公钥之前,也须先在cc上用sudo apt-get install ssh安装ssh服务。在cc上生成的私钥和公钥还是按照老方法,即是在cc的home目录下面,用命令生执行ssh-keygen t rsa,一路回车下来,即生成了。接着把生成的公钥复制到git管理员帐户dd的home目录上面去。下面是先把刚刚从cc帐户上传的id_rsa.pub改名,改成一个容易区分的名字,尾缀还是pub。如下图,改成cc.pub,并把改后的文件复制到/home/dd/gitolite-admin/keydir目录下面。用git status命令查看,git检测到有文件增加。我们把这个增加的文件,通过git,提交到远端仓库,即git服务器。以便让git开通对cc用户的读写权限。通过上述步骤,就能在cc的目录下面,进行git的操作了,比如从服务器clone仓库,提交修改到git服务器。下面说明的,是在服务器建好first仓库的前提下,进行先把first仓库clone到cc本地目录,再增加若干文件,并提交到服务器的完整过程。下面的步骤,是讲解如何在git服务器建一个新仓库。Gitolite新建仓库,并不是在git服务器(38)上面建,而是利用管理员dd(35)home目录下面的gitolite-admin的仓库来管理的,主要有两个功能需要通过该管理员实现:1.新增git用户,需要在该目录下面的keydir下面把新用户生成的id_rsa.pub文件放这里,并提交到远程仓库里去。2.新增git仓库,需要修改该目录下面的conf下面的gitolite.conf,并提交到远程仓库去。比如增加一个名为first的仓库,需要增加类似如下两行内容:repo firstRW+ = all并提交到远程服务器,如下图是先编辑gitolite.conf文件,增加一个first仓库,然后保存,git add ,git commit,git push 的动作。如下是gitolite.conf修改后的样子。最后一个内容是安装gitweb服务器。从安装git服务器之后来看,百度里搜索出来的很多关于在ubuntu下安装gitweb的文章,大部分都看起来很顺利,如果单是按着里面的顺序设置下来,是没法搭建好gitweb服务器的。我在安装的时候,要么访问gitweb地址时出现404 not found,要么出现仓库列表,客户端提交了git的修改,push到远程仓库之后,git列表中的该仓库就消失不见了,也即是用户无法从gitweb上看到仓库及修改记录,这也是很让人头疼的事情。下图是出现404 not found的情形。下面我们来讲一下在ubuntu上面如何安装gitweb,让其它电脑可以访问,并且客户提交修改到远程仓库后,gitweb中的对应的仓库名不会消失,客户端可以稳定的访问gitweb。有一定意义的参考文档是百度里的这篇文章:/caspiansea/article/details/41952139 在Ubuntu 14.04上配置 gitweb这篇文章里前部分是内容可以借鉴参考,后面的内容就不行的,需要另做修改。先要说明的是如下内容,都是在git服务器,即38电脑上面配置的,其它客户端的ubuntu和windows不需要做任何的修改。先安装gitweb 、apache2,用于支持gitweb和浏览器服务:再安装highlight,便于高亮相关内容:修改配置文件(因为gitweb在/etc/apache2/conf.d/下安装了配置文件,这个目录是过时的):修改之后,用命令ll查看,刚刚的命令是创建了链接文件到/etc/apache2/conf-enabled/gitweb.conf,接着修改此文件,使用命令vim gitweb.conf,修改此文件,在FollowSymLinks前面增加一个+号,解决语法问题。使能cgi,使用a2enmod cgi和service apache2 restart,中途出现的警告信息不用理会,如下:修改/etc/gitweb.conf,添加上项目信息,其中$projectroot的值,是git仓库所在的目录,$projects_list的值就直接设置成$projectroot,这个gitweb取git的仓库列表,就直接从/home/git/repositories下面寻找。并在该文件的最后加上一行高亮支持的显示语句:如下是git 仓库(/home/git/repositories)的示意图,下面的仓库是我后面自己建了几个仓库才这样的,默认的仓库就只有gitolite-admin.git和 testing.git两个仓库。这时,如果用本机或者其它电脑来访问38/gitweb 这个网址,我们就会看到404 not found的提示。如下图:到这里,就是权限的问题了,这了解这个问题,查找了不少文件,如下两篇文章有大致的介绍。/s/blog_9815359e01019ykj.html setupgitoliteandgitwebonUbuntu12.04server/showthread.php?p=13125566&s=bb7acc1a9dc6fbbab56d6d43ddf532c7&t=2244960 Install git/gitolite/gitweb on Ubuntu 14.04直入正题,下面我们来解决权限的问题输入几条命令,重启apache2服务: usermod a G git www-datachmod R g+rx /home/git/repositoriesservice apache2 restart执行上述动作之后,再去看gitweb地址的浏览器,有仓库显示出来了:这时,经过测试,当git客户端,比如dd或者cc用户,从git远程仓库clone代码下来,再做一些修改,再提交之后,gitweb中的对应的仓库会消失掉。这个问题困扰了我两天时间,在网上查找了很久,并经过很多测试验证,最终将问题解决了,其实也是一个权限的问题。网上很多人的博客里写的内容在这里并不适用。这个问题的原因是,Git的默认权限配置得不对,导致提交之后,更改了git仓库里的相关文件的权限,导致gitweb无法从git仓库读取到数据。修改git的home目录下面的.gitolite.rc文件,将其中的UMASK的值,由0077或0007改成0027,改完之后一定要重启apache2服务,才会生效。再service apach2e restart,到这里,gitweb就已经完全配置好了,大功告成!如下:如下是在测试验证gitweb权限时的一些记录,仅供参考。下图是在未修改 /home/git/.gitolite.rc这个文件之前,由于git客户端提交修改到远程仓库之后,在远程仓库端看到的aaa.git这个仓库的权限的变化,如push内容之前,权限为777,push之后,这个master的权限变成了600b ,组用户无法访问heads下的master文件及内容。下图是一个git仓库 first从服务器克隆到git客户端cc本地之后,再提交修改到git服务器的完整过程。执行push指令 (git push origin master)之前,gitweb中可以看到的截图如下:Push指令执行后,gitweb中看不到first这个仓库了! 这时,如果手动对first.git这个仓库进行权限更改,又可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加氢稳定装置操作工职业考核试卷及答案
- 感光材料乳剂熔化工上岗考核试卷及答案
- 环氧乙烷(乙二醇)装置操作工三级安全教育(班组级)考核试卷及答案
- 信息科学技术试题及答案
- 应用会计面试题及答案解析
- 银行信贷测试面试题及答案解析
- 保密专业试题及答案
- 小学语文人教部编版六年级下册《石灰吟》课件
- 畜牧考研专业试题及答案
- 测绘专业试题及答案
- 汽车底盘安全培训课件
- 食品添加剂培训课件
- 儿童安全用电防范培训内容课件
- 2025年轮椅转运的题库及答案
- 电商直播干货知识培训内容课件
- 老年脓毒症相关脑病诊疗急诊专家共识解读
- 2025年秋期新教材教科版二年级上册小学科学教学计划+进度表
- 2024年宁波市宁海县国有企业招聘笔试真题
- 一氧化碳试卷及答案
- 果蔬加工工艺学:果蔬汁
- 石景山区语文一模试卷讲评分析
评论
0/150
提交评论