企业级Git Server服务的部署与应用

《企业级Git Server服务的部署与应用》要点:
本文介绍了企业级Git Server服务的部署与应用,希望对您有用。如果有疑问,可以联系我们。

Git

开源的普及,让使用Git来进行版本控制管理的开发者、团队、企业也越来越多.

市场上,无论国内外,提供的免费的Git托管服务商也越来越多.Github当然首当其冲,还有Gitlab、Bitbucket等.国内基于Git的代码托管也非常多,如果是面向企业,收费其实都不低.最重要的,也不是收费问题,源代码对于企业来说是机密等级非常高的小编,放在自己的服务器上安全等级相对来说要高一点.所以企业就需要有自己内部的Git服务解决方案了.

今天就来说说企业级的Git应用部署.

1安装Git

当然先说Git的安装,这里都以CentOS 6.x 64位操作系统为例.

首先去下载Git的源代码,当然从下面的网址去下载:

https://github.com/git/git/releases

或者:

https://www.kernel.org/pub/software/scm/git

目前可以看到Git的最新版已经发布到了2.12,我们就以这个Releases版本为例(懂C和C++的童鞋可以去折腾下Git的开发版).

Git

Git软件版本的迭代更新还是发布的比较频繁的.下载了Git源码(从Github下载可能还是需要花费一些时间,原因你懂的),先别急着解压,先来做另一件事.

2安装系统依赖包

直接使用yum进行安装:

yum install perl-ExtUtils-MakeMaker expat expat-devel xmlto perl-ExtUtils-MakeMakerasciidoc

如果有些软件提示找不到的,给CentOS装上epel的Yum源,即可安装成功.

3配置编译

拿到源代码之后就行就是下面的三步了:

  • 解压
  • 编译
  • 安装

这里重点说说编译配置,来看看配置参数:

./configure –prefix=/usr/local/git \

–with-gitconfig=/usr/local/git/etc/gitconfig \

–with-gitattributes=/usr/local/git/etc/gitattributes \

–with-editor=/usr/bin/vim \

–with-expat \

–with-shell=/bin/bash \

–with-perl=/usr/bin/perl \

–with-zlib=/usr \

–with-curl \

–with-libpcre \

–with-openssl \

–with-iconv

这里我们把Git安装到/usr/local/git目录下面,如果有Python环境的也可以通过–with-python指定Python解释器.

在执行完configure配置命令后,编译有两种方式:

常规编译:

make all -j 2

make install

这样安装,不会编译man文档,编译的时间比较快.

带man文档的安装方式:

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/extras/RPMS/asciidoc-8.6.9-1.el6.rfx.noarch.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/docbook2x-0.8.8-1.el6.rf.x86_64.rpm

yum localinstall asciidoc-8.6.9-1.el6.rfx.noarch.rpm docbook2x-0.8.8-1.el6.rf.x86_64.rpm

yum install xmlto texinfo

ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

make -j 2 all doc info

make install install-gitweb install-doc install-man install-html install-info

注意这里,安装man文档时,需要解决几个依赖,否则会报错.这大概就是一个比较完整的编译安装,其实官方也提供man文档的下载,可以不自行编译.

https://www.kernel.org/pub/software/scm/git/git-manpages-2.12.0.tar.gzhttps://www.kernel.org/pub/software/scm/git/git-htmldocs-2.12.0.tar.gz

4Git初始配置

完成了Git的编译安装后,需要进行一些初始设置.如果不设置,会出现一些问题.

n -s /usr/local/git/bin/git /usr/bin/

ln -s /usr/local/lib/libcharset.so.1 /lib/libcharset.so.1

ldconfig

mkdir /usr/local/git/etc

git –version

这里有一个动态库的链接配置,需要留意.执行git –version的时候,就可以看到显示为2.12的版本.到这里,git就正式可用了,但是还是作为客户端来使用的.

5整合Apache

安装了Git之后,就需要整合Apache,来提供基于http的Git服务.Apache服务器可以使用Yum来安装,这里不多赘述.整合Apache配置:

<VirtualHost *:80>

ServerName git.test.com

ServerAdmin git@test.com

SetEnv GIT_PROJECT_ROOT /data/git

SetEnv GIT_HTTP_EXPORT_ALL

ScriptAlias / /usr/local/git/libexec/git-core/git-http-backend/

<Location />

AuthType Basic

AuthName “Test Git Repository”

AuthUserFile /etc/httpd/conf.d/git.auth

Require valid-user

</Location>

</VirtualHost>

注意加粗部分的配置,这一句“/usr/local/git/libexec/git-core/git-http-backend/”就是用来整合Git和Apache的.

另外git.auth是用来做登录授权配置的,配置这授权文件使用htpasswd命令进行配置.配置了git.auth之后,启动Apache,就可以使用http来提供Git服务了.

6创建第一个版本库

我们来创建第一个版本库:

cd /data/git

git init –bare TestPorject.git

这里还需要注意一个问题,需要把版本库所在目录授权给Apache的运行用户,否则会出现无法进行git push的操作.这是Linux层的文件权限控制问题.

7克隆与提交版本库

这里就属于客户端的操作了.在创建好了上面的第一个版本库后,就可以在客户端进行Git操作了:

git clone http://git.test.com/TestPoject.git

在Clone的过程中,需要输入在git.auth文件中配置的用户名和密码,这点需要注意.

完成Clone操作了,就看可以在客户端完全使用git来管理你的代码了.

这样把Git部署在自己的服务器上,就完全不限制仓库的数量和容量问题,想创建多少就多少.

8配置基础管理Web端

我们在配置好了上面的http服务后,可以使用git clone http://git.test.com/project.git进行代码的克隆,这里虽然提供了http服务,但还不能在浏览器里访问,要实现这一Web基础功能,还需要对Apache进行下一步的配置:

<VirtualHost *:81>

ServerName git.test.com

ServerAdmin git@test.com

<Location />

AuthType Basic

AuthName “Test Git Repository”

AuthUserFile /etc/httpd/conf.d/git.auth

Require valid-user

</Location>

DocumentRoot /var/www/gitweb

<Directory /var/www/gitweb>

Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch

AllowOverride All

order allow,deny

Allow from all

AddHandler cgi-script cgi

DirectoryIndex gitweb.cgi

</Directory>

</VirtualHost>

注意这里使用的81端口,不能再用80端了.

上面有一个/var/www/gitweb的目录,这个目录需要放置一些脚本文件:

cp -rap /usr/local/git/share/gitweb/* /var/www/gitweb/

然后需要配置/var/www/gitweb/gitweb.cgi这个文件:

our $projectroot = “/data/git“;

our $home_link_str = “Projects”;

这里$projectroot就需要改成版本库的根目录,这里使用的是/data/git目录.

重启下Apache,然后就可以在浏览器上访问:http://git.test.com:81/,这里也是需要输入用户名和密码(也即里git.auth文件里配置的).

GitWeb

GitWeb的UI效果就如上图所示,这里我们使用https://git.kernel.org/cgit/来演示.

9仓库的备份

服务已经部署好了,并且运行起来了.但还有个很重要的问题需要引起注意,那就是:

备份,备份,备份!!

得说三遍才行!!

还记得今年年初Gitlab丢数据的故障,这可是国际级的版本托管且比较有影响力的故障事件了.

备份可以使用Shell脚本,设置定时任务来实现备份.主要注意备份下面几个文件或目录:

  • /data/git
  • /etc/httpd/conf.d/git.auth
  • /etc/httpd/conf.d/git.conf

其中/data/git目录就是仓库的根目录了,另外两个文件就是与Apache进行整合的配置文件和Git访问的用户权限控制文件.

备份的方式注意一定要进行异地备份,不要备份在本机,这可是常识性问题了.

到这里,就可以正式启用Git服务来给自己的企业做代码托管了.

10第三方Git Server的解决方案

这里推荐几款市场上比较火的第三方的开源的Git Server解决方案:

  • Gogs
  • Gitlab CC

Gogs是基于Go语言开发的,Gitlab基于Ruby开发的.Gitlab比Gogs更重量级、更加麻烦一点,但网上也有一些一键安装的Gitlab的脚本,基本可以成功安装.Gogs来说相对轻量级一点,部署也比较容易一点,同时具备了Github的大部分功能.

关于Gogs和Gitlab的具体部署,这里就不多说了,官方都有提供比较详细的教程和文档,可以参照官方的说明来部署.其实不管是Gogs或者Gitlab,或者自己部署Git http服务,但离不开底层的Git软件.

文章来自微信公众号:Python运维圈

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


起步 处理器架构,参考 x86是指intel的开发的一种32位指令集 intel和amd早期的cpu都支持这种指令集 AMD比Intel率先制造出了商用的兼容x86的CPU,AMD称之为AMD64 Intel选择了设计一种不兼容x86的全新64为指令集,称之为IA-64,后来支持AMD64的指令集,
pscp pscp -P 22 C:\work\test.txt root@192.168.1.5:/home/data pscp -P 22 root@192.168.1.5:/home/data/test.txt C://work// 检索 find / -name default.config
文件处理 ls -a # 显示所有文件 ls -l # 显示详细信息 ls -d # 显示路径 mkdir /目录名称 # 创建目录 cd /目录名称 # 切换目录 pwd # 显示当前路径 rmdir /目录名称 # 删除目录 cp -rp [目录名称] [目标目录] # 复制目录到目标目录 cp
准备一台电脑(我就用联想拯救者r7000演示) 参考博客制作启动盘 插上U盘,启动电脑,一直按F2 进入如下页面后,将U盘设置为第一启动项,点击exit,保存并退出 之后进入如下页面,选择第三项 进入如下页面,选择第四项 进入如下页面,选择第一项,选中后,先不要点Enter 按e键,将inst.st
认识 Linux系统是参考了UNIX系统作为模板开发的,但没有使用UNIX的代码;是UNIX的一种,但不是衍生版 在Linux内核的基础上开发是发行版 分区 逻辑分区永远从5开始 步骤 挂载:可理解为分配盘符,挂载点即是盘符名;不同之处:Linux中是以空目录名称作为盘符 Hda 第一块硬盘 Hda
文件处理命令 以 . 开头的文件是隐藏文件 以 - 开头表示这是一个文件 以 d 开头表示是一个目录 以 l 开头表示是一个软链接 第一个root是所有者,第二个root是所属组 ls -h 以文件默认大小后缀 显示 ls -i 查看i节点(唯一标识) 所有者:只能有一个,可变更 所属组:只能有一个
参考 01 02 03 前提环境 本地安装VirtualBox,并安装CentOS8,配置网络后,window系统上putty能连接到CentOS8服务器 配置步骤 右键服务器复制 启动复制后的服务器,查看ip和hostname发现和原来的服务器一样,需要修改 hostname # 查看主机名 vi
文件搜索命令 星号匹配任意字符,问号匹配任意单个字符 -iname 根据文件名查找且不区分大小写 -ok 命名会有一个询问的步骤 如果没有找到指定文件,可输入命令:updatedb 更新文件资料库;除tmp目录不在文件资料库收录范围之内 locate -i 文件名 # 检索时不区分大小写 which
安装环境 安装最新版的Virtual Box,点击安装 下载centos8镜像 创建虚拟机,可参考 选择下载到本地的镜像 设置启动顺序 点击启动 启动过程中报错:“FATAL:No bootable medium found!” 1.没有选择iso镜像 2.光驱没有排在第一位置 3.镜像只能选择x8
Linux严格区分大小写 所有内容文件形式保存,包括硬件 Linux不靠扩展名区分文件类型 挂载:将设备文件名和挂载点(盘符)连接的过程 Linux各个目录的作用 bin表示二进制 服务器注意事项 远程服务器不允许关机,只能重启 重启时应该关闭服务 不要在服务器访问高峰运行高负载命令 远程配置防火墙
IDE连接Linux,上传下载文件 参考1 参考2 连接Linux 上传下载文件 本地项目打包后上传 查看是否上传成功,右键下载 补充 后端项目开发完成后,需clean掉临时文件target文件夹,且只推送修改过的文件 前端项目开发的过程中,需要在每个子组件中使用scoped,确保每个子组件中的编码
起步 LTS与普通版本的区别 LTS版本的发布周期更长,更加稳定 安装jdk sudo mkdir /usr/lib/jvm # 在Ubuntu中创建目录 pscp D:\安装包\linux源码包\jdk-8u291-linux-x64.tar.gz chnq@192.168.0.102:/tmp
前言 最近在b站上看了兄弟连老师的Linux教程,非常适合入门:https://www.bilibili.com/video/BV1mW411i7Qf 看完后就自己来试着玩下,正好手上有台空闲的电脑就尝试不使用虚拟机的方式安装Linux系统 安装步骤 制作启动盘 下载ISO镜像,我这里下载的是Cen
新建虚拟电脑 设置内存和处理器 设置硬盘大小 完成 设置 查看光驱 设置启动顺序 点击启动 选择第1项 进入图形安装界面 选择安装位置,开始安装 设置root密码 重启 登录 查看本地文件夹 配置网络,点击设置 查看宿主机ip C:\Users\ychen λ ipconfig 无线局域网适配器 W
源码包安装需手动下载后安装 二进制包则在package目录下 rpm命令管理rpm包 若某个rpm包依赖于某个模块,需要到网站www.rpmfind.net查询该模块依赖的包,安装这个包后自动安装模块,之后就能安装rpm包了 安装升级时使用包全名 查询卸载时使用包名 虚拟机中的Linux系统安装rp
首先进入命令模式,再输入以下命令 命令模式用于输入命令 插入模式可对文件编写操作 编辑模式下的命令是在冒号后输入 :12, 15d # 删除指定范围的行,这里是删除12到15行 :n1,n2s/old/new/g ## 表示从n1行到n2行,old表示旧的字符串 vim使用小技巧:自定义快捷键,如快
使用源码包安装,需要自己指定安装位置,通常是 /usr/local/软件名/ linux中要想启动执行文件,应使用绝对路径 /绝对路径/rpm包名 start ## 执行方式一 service rpm包名 start ## 执行方式二 使用源码包安装后,由于自定义安装路径,就不能使用service命
网络命令 在收邮件的用户中,输入 mail 可查看邮件信息,输入序列号查看详细信息 在mail命令下,输入h 查看所有邮件的列表 输入:d 序列号 # 删除邮件 last # 统计所有用户登录或重启时间,用于日志查询 lastlog # 显示包括未登录用户的登录时间 lastlog -u 用户id
若要使用yum管理,必须能连接网络,首先配置网络IP 进入yum源文件中启动容器 使用yum源头安装rpm包不需要进入package路径,同时也不需要使用包全名,会有yum自动管理 安装软件组
简介 client即是本机安装的docker,相当于git Docker_host相当于centos系统 registry则是docker仓库,相当于GitHub 镜像用于创建docker容器,一个镜像可以创建多个docker容器 容器是由镜像创建的运行实例,(镜像相当于类,容器相当于类创建的对象)