Gitlab和Github的区别就不多说了,一句话来概括就是:Gitlab是给企业私有化部署的Git 服务器 ,Github是互联网在线版的Git服务器!
Github对于开源项目建仓是免费使用的,那么Gitlab收不收费呢?分布式版本控制方面的功能Gitlab也是免费使用的,提供了社区版(Gitlab CE)给大家!Gitlab现在可强大了(2020年),已经有自己成套的DevOps落地解决方案(提高生产力的利器),但是这部分功能是在收费的旗舰版/企业版(Gitlab EE)上提供的!就像Github建私有化仓库的功能也是收费的一样,很正常!
本文内容简单轻松,车速也不快,各位同学不用坐太好也不用扶太稳!现在来正式从“零”开始搭建Gitlab服务器:
首先,百度里找到Giblab官网,先进去首页!不要太深入!(未来各位同学看到的界面可能会不一样,时代在进步,网站也在持续更新嘛!我这里的一系列截图是2020.06的)
看看这首屏的广告和设计,多么科技和魅力→DevOps、CI、CD,一个个的关键字都是当前中国各类互联网公司研发体系正在努力改造的方向(2020年)!看到那个大大的骚黄色写着“Try Gitlab fro FREE”的按钮没有→“免费试用Gitlab”的意思,也就是试用完后要收费的旗舰版GitlabEE的入口。在首页看了一圈也没看到传说中的免费的社区版GitlabCE的入口,咱到顶部导航菜单项”Install Gitlab”里看看:
还是30天试用期的旗舰版(企业版)的入口和安装说明!不过这里有个重要的信息要留意下“recommend at least 4GB of free RAMto run GitLab”,官方建议使用至少4GB的可用内存来运行Gitlab,那我们一会安装虚拟机或选用服务器时就要注意了,至少要4GB以上,最好是6GB以上,因为还要留些空间给操作系统用!我们再点进CentOS 8的Gitlab安装说明里,看看有没有咱想要的社区版(GitlabCE):
乍一看好像还是没有的样子,只是展开了在CentOS 8下的安装步骤和方法!那就看看CentOS 8中怎么装吧,看着看着,在最后发现了些什么:
在安装步骤的最后,有一个短短的链接,写着”CE or EE“,似乎有个CE版的入口,点进去:
新页面前面的好几段依然在讲使用旗舰版(企业版Gitlab EE)有多少好处….直到最后才放了一个免费社区版(GitlabCE)的链接“Install GitLab Community Edition”,藏得这么深,这是怕别人知道啊!续继点进去:
终于到了,现在浏览地址栏和页面中的安装说明的内容都已变成CE版的(将来看到这文章的同学,那时可能Gitlab官网已经改版了,社区版(GitlabCE)的入口位置和地址也可能换了,但只要Gitlab还有免费版,就肯定会在官网某个地方有个入口的!)。
找到了Gitlab CE版的安装说明,我们老样子,准备好新的CentOS 8.1虚拟机,根据官方建议,这台虚拟机内存和硬盘都设置大一点:
虚拟机准备好后,按着官方GitlabCE版的安装说明进行安装即可,其实很简单,认真算起来只有三步(由于我是root身份,所以不用sudo):
第一步:安装和启用policycoreutils、openssh-server和openssh-clients组件,并将它们开放防火墙(不要忘了reload防火墙):
# dnf install -y curl policycoreutils openssh-server openssh-clients# systemctl enable sshd# systemctl start sshd# firewall-cmd --permanent --add-service=http# firewall-cmd --permanent --add-service=https# systemctl reload firewalld
与邮件通知相关的Postfix组件其实可以暂时不用安装和配置,这个可以放到后面再来配置一个外部的SMTP服务器:
# dnf install postfix# systemctl enable postfix# systemctl start postfix
第二步:使用curl工具下载并配置GitlabCE版RPM安装包的仓库配置脚本(请确认你的虚拟机能联接网络,注意这只是RPM安装包的仓库配置脚本,并不是真正的安装包)
# curl -sS| bash
第三步:安装GitlabCE版并指定外部访问的URL地址,这里注意一下:外部访问URL地址使用一个自定义的域名,即使该域名实际上没有也没关系!另外如果你的服务器没有https相关的证书,那就不要用https,直接用http协议!客户端使用时你可以在HOST里做一下映射的,当然,有真实可以的域名就最好了!为什么要用域名来指定外部访问URL地址呢?因为后面你使和Gitlab时会发现这是一个明智的选择!
# EXTERNAL_URL="http://gitlab.xgclassroom.com" dnf install -y gitlab-ce
到这里你会发现要从第二步中配置的国外站下载多达700M的gitlab-ce包是有多么的艰难,预计耗时估计要10几个钟,惊不惊喜,意不意外!当然,如果你有国际网络科学就当我没说!!!
第三步的蜗牛速度是无法忍受的,Ctrl+C 掐断下载过程吧,换其它方法:
自己先从其他地方下载到gitlab-ce的rmp包,再上传到服务器进行安装;使用一个国内镜像地址进行在线安装;
这里我们讲一下第二种办法,使用国内镜像地址进行在线安装,这里我们选择清华大学提供的镜像服务器,因为它提供了比较全面的使用说明(,现在我们按说明来安装一下GitlabCE版(以下步骤是从承接上面的第二步开始的):
新的第二步:使用vi或vim新建并编辑yum源配置文件/etc/yum.repos.d/gitlab-ce.repo
# vim /etc/yum.repos.d/gitlab-ce.repo
填入以下yum源配置信息:
[gitlab-ce]name=Gitlab CE Repositorybaseurl=$releasever/gpgcheck=0enabled=1
新的第三步:使用yum包管理器安装GitlabCE版
# yum makecache# yum -y install gitlab-ce
有没有发现,在“新的第三步”里比原来的第三步少了个东西,啥东西呢?细心的同学肯定发现了,没有配置Gitlab服务器的外部访问地址(EXTERNAL_URL)!不要急,等待Gitlab装完后我们再去配一下就好了!国内镜像还是比较快的,几分钟就下载并装好了,出现骚气的狐狸头图标!
好了,现在该来补上“新的第三步”里缺失的Gitlab服务器的外部访问地址(EXTERNAL_URL),在哪里配置呢?熟悉Linux服务器各目录作的人应该都能猜到:Gitlab这么全球通用的版本控制软件,配置文件应该会也按照Linux约定放在 /etc 目录中吧!使用cd到/etc目录看一看或用 ls /etc/gitl再tab一下就知道了!
# ls /etc/gitlab/gitlab.rb
果然是有一个Gitlab的配置文件!使用cat命令查看一下发现内容不是一般的多,眼睛都会看瞎!那么我们用grep命令先过滤出包含外部访问地址(EXTERNAL_URL)配置内容先:
# grep -i 'EXTERNAL_URL' /etc/gitlab/gitlab.rb##! For more details on configuring external_url see:##! EXTERNAL_URL will be used to populate/replace this value.external_url 'http://gitlab.example.com'# registry_external_url 'https://registry.example.com'# pages_external_url "http://pages.example.com/"# gitlab_pages['artifacts_server_url'] = nil # Defaults to external_url + '/api/v4'# gitlab_pages['auth_redirect_uri'] = nil # Defaults to projects subdomain of pages_external_url and + '/auth'# gitlab_pages['gitlab_server'] = nil # Defaults to external_url# mattermost_external_url 'http://mattermost.example.com'# When the registry is automatically enabled using the same domain as `external_url`,# For example, if external_url is the same for two secondaries, you must specify# If it is blank, it defaults to external_url.
很好,现在确认与外部访问地址(EXTERNAL_URL)相关的内容就这么多,动手前先用cp命令备份一下/etc/gitlab/gitlab.rb文件,因为后面我们要做字符串直接替换这种高险操作!有备无患!
# cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak# ls /etc/gitlab/gitlab.rb gitlab.rb.bak
最后 ls确认备份成功后就可以动手了!
现在使用sed命令替换/etc/gitlab/gitlab.rb文件中的为
sed命令字符串替换格式: sed -i “s$要查找的字段$替换成的字段&g” 文件名 ,-i表示是in place edit的意思,即就地编辑更改;参数里开头的s是search的意思,可以换成d表示delete,最后的g是Global的意思,即全文搜索;
# sed -i "s#" /etc/gitlab/gitlab.rb
完了后,我们再用grep命令先筛选一下与外部访问地址(EXTERNAL_URL)相关的内容:
# grep -i 'EXTERNAL_URL' gitlab.rb##! For more details on configuring external_url see:##! EXTERNAL_URL will be used to populate/replace this value.external_url 'http://gitlab.xgclassroom.com'# registry_external_url 'https://registry.example.com'# pages_external_url "http://pages.example.com/"# gitlab_pages['artifacts_server_url'] = nil # Defaults to external_url + '/api/v4'# gitlab_pages['auth_redirect_uri'] = nil # Defaults to projects subdomain of pages_external_url and + '/auth'# gitlab_pages['gitlab_server'] = nil # Defaults to external_url# mattermost_external_url 'http://mattermost.example.com'# When the registry is automatically enabled using the same domain as `external_url`,# For example, if external_url is the same for two secondaries, you must specify# If it is blank, it defaults to external_url.
发现替换成功了!但是不要太激动,还要使用gitlab-ctl工具根据修改后的配置文件重新配置gitlab服务实例使配置生效:
# gitlab-ctl reconfigure...由于gitlab体系庞大,这将是一个要点时间的过程,等吧!...
gitlab服务实例重新配置完成后,可以使用gitlab-ctl工具查看一下gitblab的服务状态:

# gitlab-ctl statusrun: alertmanager: (pid 32119) 292s; run: log: (pid 31878) 325srun: gitaly: (pid 32004) 294s; run: log: (pid 31180) 401srun: gitlab-exporter: (pid 32013) 293s; run: log: (pid 31778) 342srun: gitlab-workhorse: (pid 31980) 294s; run: log: (pid 31506) 366srun: grafana: (pid 32136) 291s; run: log: (pid 31951) 302srun: logrotate: (pid 31615) 357s; run: log: (pid 31703) 354srun: nginx: (pid 31548) 363s; run: log: (pid 31568) 360srun: node-exporter: (pid 31998) 294s; run: log: (pid 31729) 347srun: postgres-exporter: (pid 32129) 291s; run: log: (pid 31905) 321srun: postgresql: (pid 31219) 398s; run: log: (pid 31326) 397srun: prometheus: (pid 32103) 293s; run: log: (pid 31843) 331srun: puma: (pid 31412) 377s; run: log: (pid 31433) 376srun: Redis: (pid 30999) 410s; run: log: (pid 31038) 407srun: redis-exporter: (pid 32017) 293s; run: log: (pid 31807) 337srun: sidekiq: (pid 31436) 375s; run: log: (pid 31454) 371s
还可以使用以下命令查看一下操作系统内存的使用情况,看看内存是否够gitlab用:
# free -mtotalusedfreeshared buff/cacheavailableMem:375720633948212991376Swap:8191128179
如果上述的结果中Swap分区使用得不是很多,那基本上表示内存是够gitlab服务用的,如果Swap分区占用了很多,那就要考虑给机器增加内存了,虚拟机增加内存很简单就不多说了!
最后从虚拟机的宿主机浏览器上用IP地址或域名(用域名的话需要先在宿主机的C:\Windows\System32\drivers\etc\hosts配置域名与IP地址映射,所以实际上还是IP)访问一下gitlab服务:
如上述截图,可以看到能正常访问我自己的搭的Gitlab服务器了,首次使用要求我们更改Gitlab服务的超级管理员root账号的密码,改密之后再登录就可以愉快的玩耍了!
Gitlab的使用相信IT人应该都比较熟,暂时就不多讲了!除了客户端SSH密钥应用方面要注意一点:不要尝试修改ssh-keygen生成的客户机默认密钥文件名,因为像Git for Windows类的Git客户端工具默认读取的密钥文件名是约定好的(虽然也可以通过配置更改,但很麻烦的)!
本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
Git - 版本控制工具Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 [4]Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。 开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。 尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。 例如 最近就迁移到 Git 上来了,很多 Freedesktop 的项目也迁移到了 Git 上。 Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户。 随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。 如前所述,作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。 GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。 为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。 已经有人将GitHub称为代码玩家的MySpace。 GitLab - 基于Git的项目管理软件GitLab 是一个用于仓库管理系统的开源项目。 使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
发表评论