搭建Git服务器及备份服务器

搭建Git服务器及备份服务器,第1张

OS:CentOS 72

Git:1831

备份模式:

以下步骤以双机备份为例,单机备份同理,只是在镜像git项目的时候把git url换成单机中的git项目目录即可。

首先,查看系统软件库中是否有git和git的版本

CentOS 72环境下的输出如下:

CentOS 7x版本的仓库中已经附带了1831版本的git,可以直接安装。

CentOS 6x中的git是17x版本,自带库中git版本低的linux发行版可以添加git1831的源来安装git,但这个操作要求本机能访问互联网

其他版本的git理论上也可以,请自行测试

结果最后显示“安装完成”或“Complete”表示安装成功。可以直接使用git命令测试一下:

输出如下表示git安装成功并可用。

创建一个git用户,用来提供给外部用户以git url的方式访问git库。

在用户目录或其他对外目录中创建 /git/repos 目录,用来存放git库。

注意: 尽量使用git用户来创建该目录,方便以后git操作该目录,如果是使用其他用户创建的,记得使用以下命令将该目录的owner改为git:

为了方便访问,可以在根目录下创建一个软链连接到该目录:

这样设置后,假如以后有一个库叫 testgit ,那么就可以通过以下url来访问git库了:

创建一个测试库用来测试备份及连通性。

同主GIT服务器的《安装git》章节。

同主GIT服务器的《创建git库目录》章节。

目录结构尽量与主git服务器上的结构一致,如果不一致,使用软链的形式将git url配置为与主git服务器一致,这样保证在切换服务器时,客户端不用做修改操作。

以上个步骤中创建的 testgit 为例:

这样,主git服务器中的 testgit 就镜像到备份机中了。

如果主服务器的git项目发生了变更,可以将变更同步到备份机。

将以上同步命令写成脚本,添加一个定时任务来定时同步即可。

(待补充)

备份同步时每次都需要输入主git服务器的密码,比较麻烦,也不利于定时同步的脚本操作,可以使用ssh免密登录的方式,在主服务器上配置备份服务器的公钥。

一路Enter(回车键),完成后会打印出密钥的生成位置,通常在用户主目录的 ssh 目录中。默认情况下会生成以下两个文件:

一定要注意上述命令中的第三步,权限要设置对,否则认证不过去不能免密登录。

如果在实际运行中,主git服务器挂了一段时间,在这段时间里一直是备份git服务器在工作,那么在修复好主服务器后需要将这一段时间的变更同步回主服务器。

操作完成后备份库自上一次同步后的更改都推送到了主库。

首先要 ssh远程登陆工具比secureCRT等

案 基于SSH直接搭建

Git支持协议主要四种:

本: 需要文件共享系统权限控制

HTTP:速度慢

SSH:同支持读写操作支持匿名读取(Git默认协议)

GIT:快

搭建难易程度特点综合筛选合适ssh并且部服务器基本都ssh服务所省少麻烦基本思路给每ssh帐号家通用户名口令访问显选择做些余并且于repo权限难管理

使用Github候利用rsapub公钥/私钥式服务端拥用户公钥(pub)跨繁琐口令直接认证提交服务端根据同用户身份其权限着更加灵管理我采用种式

服务端

使远程库访问更加直观先服务器创建名git账户clone候面格式:

git clone git@server:somegit

创建新用户创建repo等目录

$sudo adduser git

$su git

$cd ~

$mkdir repos

HOMEssh目录没则创建创建authorized_keys文件文件用管理所git用户公钥面用户于项目着R+W权限

客户端

于每客户端我需要密钥公钥Github用户ssh目录定id_rsapubid_rsa两文件其第系统公钥另自要保存密钥没终端执行:ssh-keygen完自公钥提交给管理员注册行

步管理员团队员公钥添加authorized_keys比同susie加入:

$ cat susiepub >> authorized_keys

至家通git@server:repos/somegit访问公共版本库

问题

安全问题员登录git用户shell,细节权限支等控制

管理麻烦新建repo,或者增加员比较麻烦尤其修改候

案二 使用Gitolite服务

Gitolite 基于SSH协议构建便管理git repo应用通其源码安装

安装

安装按照官给定文档轻易实现:

$ git clone git://githubcom/sitaramc/gitolite

$ mkdir -p $HOME/bin

$ gitolite/install -to $HOME/bin

$ gitolite setup -pk YourNamepub

执行条命令候gitolite识别则通面两种式解决:

gitolite添加PATH面

通$HOME/bin/gitolite setup -pk YourNamepub 执行

至gitolite服务端搭建完毕发现HOME目录增加文件projectslist目录repositories,者我版本仓库每新建repo候其创建

使用

候说gitolite管理模式创建gitolite-adminrepo管理员通像repo提交配置文件实现git服务器控制

首先repo导入我workspace:前需要配置本ssh,gitolite要求管理员本密钥其注册公钥名字致比我安装候指定 -pk面 adminpub 则管理员本需要由admin应私钥我通~/ssh/config进行配置(注:些系统用confMac OSX 效能用config)

host gitolite

user git

hostname yourhostnamecom

port 22

identityfile ~/ssh/admin

我访问gitolite候自根据配置文件执行配置完根据面命令gitolite-admin转移本

git clone gitolite:gitolite-admingit

克隆完发现gitolite-admin面两目录其conf保存配置文件我通编辑面gitoliteconf文件管理git服务器keydir目录保存用户公钥pub文件

我讲修改repo 提交候gitolite自应用些配置管理程便

配置规则

打gitoliteconf文件看其示例:

To add new users alice, bob, and carol, obtain their public keys and add them to 'keydir' as alicepub, bobpub, and carolpub respectively

To add a new repo 'foo' and give different levels of access to these users, edit the file 'conf/gitoliteconf' and add lines like this:

repo foo

RW+ = alice

RW = bob

R = carol

面配置文件新建repo foo并且添加三位项目员每权限同提交push管理便效

视化

我能需要web界面管理些项目我目前知道三种式:

git源码自带组件cgi脚本实现使用gitolite服务

gitlab源框架基于ROR新版本再使用gitolite服务

FB源PHP框架 phabricator功能高端档

当资源有限,但是项目同时需要几个人协同开发,我们就需要配置一个简单的局域网内的git服务器,方便协同开发。

首先我们新建远端的git目录,目录名和本地仓库名一致,并且在目录下运行:

git init --bare

一个空的git仓库就建立好了。然后我们需要把本地的仓库和远端的关联起来。具体做法是,在本地git仓库的目录下执行:

git remote add origin ssh://用户名@ip/仓库路径

比如:git remote add origin ssh://android@1921683172/home/android/projects/gitserver/demoproject/。完成后,本地的提交,就可以push到远端啦。比如:

git push origin master

就可以把本地的master推送到远端。协同开发的同事可以通过如下命令获取远端的仓库

git clone ssh://android@1921683172/home/android/projects/gitserver/demoproject/

是不是很简单呢

ps:实际使用过程中发现了一个问题,即本机的ip地址不是静态的。如何解决这个问题呢?可以在每次ip改变以后,重置仓库的origin url:

git remote set-url origin {url}

以前一直听说过Github,但是自己一直不会用。最近不是太忙,于是想捣鼓捣鼓Github,没想到用了将近3个小时,才在Mac上配置成功。

首先简单介绍一下Git和Github

集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS )。这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

分布式版本控制系统( Distributed Version Control System,简称 DVCS )。在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

GitHub是一个用于使用Git版本控制系统的项目的基于互联网的存取服务。它是由GitHub公司(先前被称作用Logical Awesome)的开发者Chris Wanstrath, PJ Hyett, 和 Tom Preston-Werner 使用Ruby on Rails写成的。GitHub同时提供商业账户和为开源项目提供的免费账户。根据在2009年的Git用户调查,GitHub是最流行的Git存取站点。

它提供了像 feeds,followers 和显示开发者们怎样在他们的版本库的版本上工作的网络图表。

git是一个版本控制工具

github是一个用git做版本控制的项目托管平台。

1、下载,安装Git,注册GitHub;

从google code上可以获的Mac OS的dmg安装文件

下载地址:htt p:/ /git-osx-installergoogleco dec om/files/git-1712-intel-universal-snow-leopardd mg

安装没有什么好说的,打开dmg文件,然后运行pkg文件,一步一步往后装即可。git 会被安装到/usr/local/git/bin 目录下。

注册GitHub同样非常简单,选择免费的开源账户类型,按部就班走流程即可。

(注意:Git没有图形界面,Git won't add an icon to your dock, it's not that sort of application)

这一步骤,可以参考官方文档。链接:htt p s:/ /helpgith ubc om/articles/set-up-git

2、配置Git(在这步花了好长时间)

首先在终端进入ssh目录。如果你顺利进入了很好。应该是这样

$

cd ~/ssh

$

ls //如果目录下已有文件,建立一个备份文件夹,把原有文件备份进去

$

ssh-keygen -t rsa -C "你的邮箱@xxxcom" //之后一路回车即可

 但是我配置的时候一直提示 “no such file or directory”

在stackoverflow上找到了答案。

执行:mkdir ~/ssh 就好了。

首先查看电脑是否安装Git,终端输入:

安装过则会输出:

直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

1050794513@qqcom 是我的邮件名,回车会有以下输出

由于这里我原来已经创建过,这里我选 n ,没有创建过的,会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在 ~/ 下生成ssh文件夹,进去,打开id_rsapub,复制里面的key。

终端查看 ssh/id_rsapub 文件

回车后,就会新弹出一个终端,然后复制里面的key。

或者用cat命令查看

终端输出结果

说明已经链接成功。

然后克隆项目,终端输入

git@githubcom:wenmobo/LearnGitgit 是刚刚复制的ssh路径。

终端完整输出如下:

这时,工程已经被克隆到桌面了,如下图:

然后输入:

终端完整输出如下:

查看GitHub上的项目, LearnGit 已经上传成功啦,如下图所示:

1、 Git教程

2、 Github教程史上最全github使用方法:github入门到精通

3、 GotGitHub

先在Git@OSC上创建仓库 拿到Git@OSC仓库的HTTP连接http://gitoschinanet/lujianing/GitOSCgit

在Intellij IDEA工具栏中 VCS——Checkout from Version Control——Git 粘贴 URL 然后点击CLONE

会创建并且复制仓库文件到本地项目中 然后你就可以在本地项目中进行Git add commit等操作了

最后可以在项目中Git ——Repositroy——PUSH 提交到Git@OSC中了(第一次提示输入账号密码)

就是这么简单 有木有

GitLab是GitHub的免费私有库替代方案,并且安装与配置都很方便。

GitLab要求最少4GB内存,支持小团队使用没问题,实测2GB内存的VPS基本没法用,开swapfile也不行,动不动就60秒超时。因此4GB内存是必须的。

关于这一点,内存大户主要是Unicorn,基于ruby的http服务器。Unicorn会在启动后预先占用大部分内存,内存会随着使用逐渐增长,并且不会释放。根据GitLab和Unicorn的官方文档,这不是它们的锅,那么这个锅可能是ruby和rails了。解决方法是unicorn-work-kill,会根据请求次数和内存占用自动重启Unicorn。Omnibus版的GitLab是默认开启的。

GitLab分为社区版和企业版,在未付费的情况下,两者的功能是一样的。并且社区版整合了CI/CD,因此可以满足绝大部分的开发需求。

安装包主要包括Omnibus整合包,Docker、AWS等的云镜像,以及一些第三方维护的版本。其中Omnibus直接整合了所有服务端组件,适合自用和练手。

安装以Omnibus整合包为例,操作系统为Ubuntu1604。

Gitlab需要 curl,openSSH 和 ca-certificates 这几个组件:

不过服务器系统一般自带,所以是可选的。

邮件服务,用于GitLab发送找回密码的邮件:

不过如果服务器没有域名的话,大部分邮箱会拒收邮件,而管理员帐号可以直接重置其他账号的密码,所以是可选的。

官方提供的脚本:

这个脚本会自动添加源到apt 的source list,以及安全key。另外,如果自己服务器在国内,脚本会自动添加清华的镜像,速度还行。

先更新apt缓存:

推荐使用 apt 而不是 apt-get ,前者大多数情况下更简单一点。

然后是安装:

其中 EXTERNAL_URL ,改成自己的域名。没有域名的话,可以直接设置成IP的形式: http://1234 ,这个推测跟nginx服务以及GitLab中的项目地址有关,所以最好正确设置。当然也可以之后在配置文件里更改。

安装完成后,可以在配置文件中修改配置 /etc/gitlab/gitlabrb 。

比如之前的 EXTERNAL_URL :

官方还有一个关于 unicorn 的优化建议:

默认值是2,如果服务器只用于GitLab的话,官方建议是CPU核心数加一,可以提高服务器的响应速度。不过如果内存只有4G,或者服务器同时承载其他服务,就不要改了,以免内存不足。另外,这个参数最小值是2,设为1,服务器可能会卡死。

配置完成后,刷新配置:

每次修改完 gitlabrb ,都要刷新配置。

如果没有报错的话,GitLab就配置完毕并且正常运行了。接下来可以打开浏览器开始访问了。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 搭建Git服务器及备份服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情