企业级GitLab搭建
企业级GitLab搭建
一、简介
1.GitLab概述
是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。
GitLab拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
GitLab官网:https://about.gitlab.com/
2.GitHub概述
Github概述:gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。
3.GitLab和GitHub的区别
相同点:
-
二者都是基于web的Git仓库,在很大程度上GitLab是仿照GitHub来做的;
-
它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所
不同点:
1、GitHub如果要使用私有仓库,是需要付费的。GitLab可以在上面创建私人的免费仓库。
2、GitLab:让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:
- 允许免费设置仓库权限;
- 允许用户选择分享一个project的部分代码;
- 允许用户设置project的获取权限,进一步的提升安全性;
- 可以设置获取到团队整体的改进进度;通
- 过innersourcing让不在权限范围内的人访问不到该资源。
从代码私有性方面来看,有时公司并不希望员工获取到全部的代码,这个时候GitLab无疑是更好的选择。但对于开源项目而言,GitHub依然是代码托管的首选。
4.git相关概念
git:是一种版本控制系统,是一个命令,是一种工具
gitlib:是用于实现git功能的开发库
github:是一个基于git实现的在线代码托管仓库,包含一个网站界面,向互联网开放
gitlab:是一个基于git实现的在线代码仓库托管软件,一般用于在企业内网搭建git私服
注:gitlab-ce 社区版;gitlab-ee是企业版,收费
二、GitLab平台搭建
1.实验环境
CentOS 7.4(虚拟机需要6G,不然后期运行时,内存不够用,直接报错。)
# 备份YUM文件
cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 下载HUAWEI的YUM文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
# 清空缓存
yum clean all
# 加载YUM缓存
yum makecache
2.安装Gitlab组件
yum install curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python net-tools git patch
# 开机自启POSTFIX,默认使用POSTFIX发送邮件
systemctl enable postfix
systemctl start postfix
# 防火墙设置
iptables -F #清空规则
systemctl stop firewalld
systemctl disable firewalld
3.防火墙配置
4.安装GitLab
将下载的软件包gitlab-ce-10.2.3-ce.0.el7.x86_64.rpm 上传到linux系统中。
rpm -ivh gitlab-ce-10.2.3-ce.0.el7.x86_64.rpm # 安装GitLab
配置并启动GitLab
gitlab-ctl reconfigure # 重新配置应用程序。相当于初始化一下
可以使用gitlab-ctl管理gitlab
例如查看gitlab状态:
gitlab-ctl status
5.查看端口状况
netstat -antup | grep :80
到此,GitLab安装成功!!!
默认使用nginx做为web服务器。
访问: http://IP
三、排错
总有很多人按照这个方法安装完后出现不同的错误,出现比较多的问题已经罗列。
1.出现502报错
注:如果后期web界面访问时,总报502,要把防火墙清空规则,另外内存要大于4G,不然后内存不足,也报502错误,因为内存不足会导致很卡,从而响应超时。
解决:
iptables -F #清空规则
free -m #已经使用4G以上内存
2.图片加载不完全
解决:
- 编辑配置文件
# 编辑GITLAB的配置文件/ETC/GITLAB/GITLAB.RB
查找Gravatar关键字
- 如果不开启https的话,用http就可以了,配置文件增加如下所示的
plain_url
修改为:
gitlab_rails['gravatar_plain_url'] = 'http://cdn.libravatar.org/avatar/%{hash}?s=%{size}&d=identicon'
#gitlab_rails['gravatar_plain_url'] = 'https://seccdn.libravatar.org/avatar/%{hash}?s=%{size}&d=identicon'
- 停止GitLab服务
gitlab-ctl stop
- 重新加载配置
gitlab-ctl reconfigure
- 启动服务
gitlab-ctl start
- 再次重新启动
gitlab-ctl restart
- 访问正常(默认头像正常显示)
四、登录GitLab
这里需要填入新密码,第一次登录gitlab,需要为root用户修改密码,root用户也是gitlab的超级管理员。
然后会自动跳转到登录页面
登录成功,到此GitLab就完成了!!!
五、管理GitLab
gitlab-ctl stop # 关闭gitlab
gitlab-ctl start # 启动gitlab
gitlab-ctl restart # 重启gitlab
最终,gitlab是安装到
vim /etc/gitlab/gitlab.rb # 修改gitlab外部访问地址
改:external_url 'http://gitlab.example.com' 为:external_url 'http://ip'
注:这里必须修改,不然后后期访问时,用户到地址是:http://gitlab.example.com/xxx ,根本不能访问。 修改后获得的地址是:http://ip/xxxx
重启GitLab服务
gitlab-ctl reconfigure
gitlab-ctl restart
正常登录,形式为HTTP://IP/USER
六、汉化
其实这个版本是可以汉化的,但是,身为一名合格的PYTHON攻城狮,即使看不懂也不汉化,13格瞬间提升档次(我没有档次,所以我选择汉化!!!emo了)。
把下载好的git汉化补丁gitlab-patch-zh.tat.gz
上传到LINUX并解压之
1.停止服务
gitlan-cli stop
2.备份
比较原版本号和汉化版本之前的区别,并把有区别的文件导出到/root
下
cd /opt/gitlab
git diff v10.2.3 v10.2.3-zh > /root/file/10.2.3-zh.diff
注意:这里必须要停止了GitLab才能比对。
3.打补丁
将10.2.3-zh.diff作为补丁更新到gitlab中
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < /root/file/10.2.3-zh.diff # 这个目录下存储着关于web前端相关的页面
gitlab-ctl restart #重启服务