




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、搭建GIT服务器组长:牛智萌组员:张秉桢、全海兰、高英亮GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。 Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢? 事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式
2、发给Linus,然后由Linus本人通过手工方式合并代码! 你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。 不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家B
3、itMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。 安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。 Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的: Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统
4、的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。 Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。 如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别。为了保证你现在所学的Git物超所值,将来绝对不会后悔,同时为了打击已经不幸学了SVN的童鞋,本章开始介绍Git的杀手级功能之一(注意是之一,也就是后面还有之二,之三):
5、远程仓库。 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。 你肯定会想,至少需要两台机器才能玩远程库不是?但是我只有一台电脑,怎么玩? 其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下。不过,现实生活中是不会有人这么傻的在一台电脑上搞几个远程库玩,因为一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有库都挂掉,所以我也不告诉你在一台电脑上怎么克隆多个仓库。 实际情况往往是这样,找一台电脑充当服务器的角色,每
6、天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。 完全可以自己搭建一台运行Git的服务器,不过现阶段,为了学Git先搭个服务器绝对是小题大作。好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu,这样,通过几条简单的apt命令就可以完成安装。下面正式开始安装。环境:ubuntu做服务器,windows做客户端,是在
7、windows上跑的虚拟机,里面运行的ubuntu步骤:第一步(在ubuntu系统上)1. sudo apt-get install openssh-server sudo apt-get install openssh-client这两个软件是用做两个系统间通信的,如果不安装的话,就连接不上服务器端了2. sudo apt-get install git-cote第二步(在ubuntu系统上)1. sudo useradd -m git这个是添加一个用户2. sudo passwd git这个是为这个用户设置密码,输入命令,回车,会提示你输入密码上面这两步的目的是为了服务器端管理将来的git
8、工程。我们知道linux系统都有一个root用户,也就是最高级的用户,拥有最高权限,由于root用户比较特殊,权限高,在实用中可能会误操作别的用户的内容或系统的一些文件,所以一般都会有一个日常使用的用户,一般不会登陆root用户,日常用户是为了日常操作使用的,所以这个地方创建一个用户,用户名是git,专门用来处理git相关事务。这样可以更有条理的工作,如果所有的东西都在日常用户或root用户下,那么工作目录很乱,也可能导致一些操作影响到其他的内容。3. sudomkdir/home/git/repositories这个地方是在刚才我们创建的git的home目录创建一个文件夹,用来保存将来我们的
9、git项目,我们创建一个用户后,系统会在/home/目录下自动创建一个文件夹,那就是这个用户的home目录4. sudochowngit:git/home/git/repositories这个地方是对刚才创建的文件夹设置它的所有者 5. sudochmod755/home/git/repositories这个地方是设置文件夹的权限,也就是读写执行对于自己所有者的用户,组内的用户,其他用户应该有的权限 6. myname这个地方是向git指定一个用户名,这是因为git要运行,必须要有一个用户名和对应的邮箱,下面是添加邮箱,myname就是你指定的
10、用户名,这个可以随意起 7. gitconfig-globaluser.emailmyname这个地方就是指定一个对应的邮箱,随便写一个自己的邮箱就行了第三步(在ubuntu系统上)1. sudoapt-getinstallpython-setuptools这个地方是安装python,因为接下来我们需要用python进行编译我们的软件 2. cd/tmp这个地方是到临时目录,因为tmp目录下需要的权限比较低,操作方便,一些临时的操作有时候都会在tmp目录下 3. gitclone这个地方是从github网站把gitosis的源码拿下来,gitosis是我们接下来要用的软件 4. cdgitos
11、is执行完上面后,在当前目录下会有一个gitosis文件,就是刚刚下载下来的源码 5. sudopythonsetup.pyinstall这个地方就是安装gitosis第四步(在ubuntu系统上)1. cd/home/git/repositories进入到我们刚才创建的仓库目录2. mkdirproject.git创建一个项目的git文件夹,以后项目的代码等东西都会提交到这个文件夹里面,名称一般是以git结尾 3. cdproject.git进入到这个文件夹 4. gitinit-bare这里是初始化这个文件夹成一个git仓库,这是一个空的仓库,里面什么都没有现在,可能会有一些自动生成的配置
12、文件等第五步(在windows系统上)在google搜索“git for windows”,能够找到这个http:/msysgit.github.io/,下载并安装。这个是windows上的git客户端 在windows上安装没有太多要说的,有一个地方,安装过程中,有一个“configuring the line ending conversions,这个是配置你的文件是按那种格式换行,我们知道windows下换行是rn两个符号表示,linux下是n一个符号表示,所以在windows和linux间传递数据会有这个问题。程序默认的可能是”checkout windows-style, commi
13、t unix-stye line endings,表示程序会做一些自动转换,我们选“checkout as-is, commit as-is,就是不做任何变化。第六步(在windows系统上)我们可以在系统的任意地方右击,选择“Git Bash“,然后就会打开一个终端,这个时候我们可以用ssh连接一下ubuntu,看看能不能连得上。1. sshgit这个地方git就是ubuntu系统上的git用户,后面的ip就是ubuntu系统的ip,你需要ubuntu系统运行着,并且查看其具体ip,这里就表示我们以git的身份登录ubuntu系统如果成功,会提示你输入密码,输入后,就可
14、以登录到服务器了,这就表示可以正常连接。 但是在windows下,登录虚拟机(我用的是vmware)下的ubuntu可能需要一些配置 VMware网络设置采用的NAT方式 Virtual Network Editor-选择NAT-NAT Setting-PortForwarding-Add Host Port: 22 Virtual Machine IP address:00(IP可以在虚拟机内查到记录下来,表示你要映射到哪个IP) Virtualmachine port 22 可能遇到的问题 ssh: connect to host port 22: Bad fil
15、e number 有这么几个问题会导致这个错误 a.Ubuntu服务器可能没有安装ssh-server或是没有启动服务 在Ubuntu上运行ssh如果出现 connectto host localhost port 22:Connection refused,那就表示没安装或是没启动。 运行 ps e| grep ssh,查看是否有sshd的进程。如果没有那么就是server没有启动。 运行/etc/init.d/ssh start进行启动server进程。如果提示没有ssh。那么就是没有安装server 运行apt-get install openssh-server进行安
16、装 b.Windows的22端口没有开启。在防火墙内开启或是关闭防火墙 c.Linux的22端口没有开启。在linux下开启或是关闭防火墙 一般情况下是第一个原因导致的,就是你在ubuntu系统上没有安装ssh和其相关服务,或是没开启ssh服务。因为默认ubuntu是不安装ssh的 如果连接服务器成功的话,那就开始生成你的当前系统的密钥吧。密钥的作用就是服务器端用来判断和区分各个客户端的一个凭证,它是根据你的系统生成的一个独一无二的一串字符,你把保存这个字符的文件发送到服务器端,git就可以根据这个来判断是那个客户端在提交代码或是下载代码,这个客户端有没有权限做这些操作,没有的话就不提供相应的
17、功能。其实也就是你电脑的一个id 生成密钥还是在你打开的Git Bash,运行命令ssh-keygen-trsa然后回车,系统会做一些提示,全部回车同意就行,最后会生成一个保存密钥的文件,看一下生成保存的位置。在windows上一般位置是保存在c:/Users/(你当前用户名)/.ssh目录下,有一个id_rsa(私人密钥,保存好) 和 id_rsa.pub(公共密钥,要发送给服务器,用来辨别你的身份)。你可以打开看一下这两个文件,里面就是一堆字符。把id_rsa.pub拷贝到服务器上。第七步(在ubuntu系统上)1. sudo-H-ugitgitosis-initid_dsa.pub这个地
18、方就是用刚才在windows上生成的密钥对gitosis初始化,也可以不加后面的pub,需要自己手动设置,另外再讲2. sudochmod755/home/git/repositories/gitosis-admin.git/hooks/post-update这个地方就是更改我们原来创建仓库的文件夹下面,由于上面的初始化,会产生一个gitosis-admin的文件夹,把里面的hooks/post-update文件夹属性改一下第八步(在windows系统上)1. gitclonegit00:/home/git/repositories/gitosis-admin.git这个里面gitclone是git的命令,用来从服务器上把一个工程完全的拷贝下来。后面是表示通过git用户从ip为00服务器的/home/git/repositories/目录下,把gitosis-admin.git拷贝下来上面是把安装gitosis时的系统默认的一个用来管理其它git的工程clone了下来,你同样可以把后面的工程名字换一下把刚才创建的project.git项目clone下来了。管理公钥:如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国电子经纬仪市场调查研究报告
- 社区卫生服务与社区医疗资源配置考核试卷
- 2025小餐馆租赁合同模板
- 规培师资考试试题及答案
- 物流考试试题及答案
- 信息检索考试试题及答案
- 邮政员工考试试题及答案
- 士官体检考试试题及答案
- 兽药综合考试试题及答案
- 全国汽车考试试题及答案
- 《蜘蛛开店》评课
- 智慧建筑评价标准
- 《老年护理》-课程思政课程标准
- FANUC机器人培训教程
- 架空绝缘配电线路设计规范
- 塑料制品的质量标准与检测方法
- JJG(交通) 164-2020 塑料波纹管韧性试验装置检定规程
- 诊断学-临床血液学检测-血液一般检测
- 冠心病的中医护理查房课件
- 第7课《珍视亲情+学会感恩》第1框《浓浓亲情+相伴一生》【中职专用】《心理健康与职业生涯》(高教版2023基础模块)
- 2023浆体长距离管道输送工程
评论
0/150
提交评论