依旧是写在前面的话♠:很多IT人从业N年也许都还没有亲自搭过一次Gitlab服务器,是不是?有木有?!通常都是背着自己的笔记电脑到一家公司入职,或入职后领到公司分配的电脑,然后分配了Git账号,拿了将要负责的项目的Git地址,把项目clone下来!然后日复一日的一直pull→commit→push→checkout→merge→离职!!!现在全民(IT农民工的“民”)Git的年代,可能你自己也用了几百年Git,却从来没有亲自部署过Gitlab服务器,被别人知道了不好的!虽然现在社会分工明确也细,部署Gitlab由运维的难兄难弟去就好了,但如果你去一家创业公司,可能就要你来部署搭建了!所以我决定把这个过程记录一下,把要注意的一些细节也提醒一下,就有了这篇随笔了!嗯,博客园“随笔”这个名字取得真好!

  Gitlab和Github的区别就不多说了,一句话来概括就是:Github是互联网在线版的Git服务器,Gitlab是给企业私有化部署的Git服务器

  Github开源项目是免费使用的,那么Gitlab收不收费?单是分布式版本控制方面的功能Gitlab也是免费使用的,提供了社区版(Gitlab CE)给大家随便用!Gitlab现在(2020)可强大了,已经有自己成套的DevOps落地解决方案(提高生产力的利器)→当然,这部分功能是在旗舰版/企业版(Gitlab EE)上提供的,要钱的版本!就像Github私有化仓库的功能也是要收费的一样,很正常!

  本文内容简单轻松,我车速也不快,各位同学不用坐太好也不用扶太稳!好了,现在来正式从“零”开始搭建Gitlab服务器:

  百度里找到Giblab官网,先进去首页!不要太深入!(各们同学看到的可能会不一样了,时代在进步,网站在更新嘛!我这里的一系列截图是2020.06的,将来肯定会有所不同)

  看看这首屏的广告和设计,多么科技和魅力→DevOps、CI、CD,一个个的关键字都是中国各类互联网公司研发体系正在努力改造的方向!哦呵...看到那个大大的骚黄色按钮写着“Try Gitlab fro FREE”→“免费试用Gitlab”,这是试用后要收费的样子....,首页看了一圈也没看到传说中的免费的社区版(Gitlab CE),咱到顶部导航菜单项"Install Gitlab"里看看:

  嗯,很好,又是大大的30天试用期的旗舰版(企业版)的入口和安装步骤说明!不过这里有个重要的信息要留意下“recommend at least 4GB of free RAM to run GitLab”,官方建议使用至少4GB的可能内存来运行Gitlab,那我们一会安装虚拟机或选用服务器时就要注意了,至少要4GB以上,最好是6GB以上,因为还要留下空间给操作系统嘛!我们再点进Gitlab将来要部署到的服务器版本CentOS 8里,看看有没有咱想要的社区版(Gitlab CE):

  乍一看好像还是没有的样子,只是展开了在CentOS 8下的安装步骤和方法!那就看看CentOS 8中怎么装吧,看着看着,好像发现了些什么:

  在安装步骤的最后,有一个小小人链接,写着"CE or EE",似乎有个CE版的入口,深入一下,了解一下!点进去:

  前面的好几段依然在讲使用旗舰版(企业版Gitlab EE)有多少好处....直到最后才放了一个免费的社区版(Gitlab CE)的链接“Install GitLab Community Edition”,藏得这么深,真的是深怕别人知道啊!再深入一下,点进去:

  终于,浏览地址栏和页面中的安装说明的内容都变成CE版的了(将来看到这文章的同学,那时可能Gitlab官网已经改版了,社区版(Gitlab CE)的入口位置和地址也可能换了,但只要Gitlab还有免费版,就肯定会在官网某个地方有个入口的!)。

  找到了Gitlab CE版的安装说明,我们老样子,准备好新的CentOS 8.1虚拟机,根据官方建议,这台虚拟机内存和硬盘都设置大一点:

  虚拟机准备好后,按着官方Gitlab CE版的安装说明进行安装即可,其实很简单,认真算起来只有三步(由于我是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工具下载并配置Gitlab CE版RPM安装包的仓库配置脚本(请确认你的虚拟机能联接网络,注意这只是RPM安装包的仓库配置脚本,并不是真正的安装包)

# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash

  第三步:安装Gitlab CE版并指定外部访问的URL地址,这里注意一下:外部访问URL地址使用一个自定义的域名,即使该域名实际上没有也没关系!另外如果你的服务器没有https相关的证书,那就不要用https,直接用http协议!客户端使用时你可以在HOST里做一下映射的,当然,有真实可以的域名就最好了!为什么要用域名来指定外部访问URL地址呢?因为后面你使和Gitlab时会发现这是一个明智的选择!

# EXTERNAL_URL="http://gitlab.xgclassroom.com" dnf install -y gitlab-ce

  到这里你会发现要从第二步中配置的国外站下载多达700M的gitlab-ce包是有多么的艰难,预计耗时估计要10几个钟,惊不惊喜,异不异外!!!当然,如果你有国际网络VPN就当我没说!!!


  第三步的蜗牛速度是无法忍受的,Ctrl+C 掐断下载过程吧,换其它方法:

  1. 自己先从其他地方下载到gitlab-ce的rmp包,再上传到服务器进行安装;
  2. 使用一个国内镜像地址进行在线安装;

  这里我们讲一下第二种办法,使用国内镜像地址进行在线安装,这里我们选择清华大学提供的镜像服务器,因为它提供了比较全面的使用说明(https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/),现在我们按说明来安装一下Gitlab CE版(以下步骤是从承接上面的第二步开始的):

  重来的第二步:使用vi或vim新建并编辑yum源配置文件 /etc/yum.repos.d/gitlab-ce.repo

# vim /etc/yum.repos.d/gitlab-ce.repo

  填入以下yum源配置信息:

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

  重来的第三步:使用yum包管理器安装Gitlab CE版

# 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文件中的 http://gitlab.example.com 为 http://gitlab.xgclassroom.com

# sed -i "s#http://gitlab.example.com#http://gitlab.xgclassroom.com#g" /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 status
run: alertmanager: (pid ) 292s; run: log: (pid ) 325s
run: gitaly: (pid ) 294s; run: log: (pid ) 401s
run: gitlab-exporter: (pid ) 293s; run: log: (pid ) 342s
run: gitlab-workhorse: (pid ) 294s; run: log: (pid ) 366s
run: grafana: (pid ) 291s; run: log: (pid ) 302s
run: logrotate: (pid ) 357s; run: log: (pid ) 354s
run: nginx: (pid ) 363s; run: log: (pid ) 360s
run: node-exporter: (pid ) 294s; run: log: (pid ) 347s
run: postgres-exporter: (pid ) 291s; run: log: (pid ) 321s
run: postgresql: (pid ) 398s; run: log: (pid ) 397s
run: prometheus: (pid ) 293s; run: log: (pid ) 331s
run: puma: (pid ) 377s; run: log: (pid ) 376s
run: redis: (pid ) 410s; run: log: (pid ) 407s
run: redis-exporter: (pid ) 293s; run: log: (pid ) 337s
run: sidekiq: (pid ) 375s; run: log: (pid ) 371s

  还可以使用以下命令查看一下操作系统内存的使用情况,看看内存是否够gitlab用:

# free -m
total used free shared buff/cache available
Mem:
Swap:

  如果上述的结果中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客户端工具默认读取的密钥文件名是约定好的(虽然也可以通过配置更改,但很麻烦的)

CentOS8.1中搭建Gitlab服务器的更多相关文章

  1. Ubuntu搭建Gitlab服务器

    想到Gitlab就必定会想到SVN,因为两者都是代码管理系统,作为开发人员来说,用习惯了SVN的图形化界面和SVN代码更新和提交的方式, 可能就会觉得使用git会比较麻烦,其实不然git使用起来非常方 ...

  2. 搭建GitLab服务器

    前言 每一个开发工作者无非身处2中开发环境:1.开源环境  2.闭源开发环境,若你身处闭源环境或对自己代码安全性要求较高,搭建和使用自己GitLab服务器是必不可少的环节. 可以通过各种方式搭建自己的 ...

  3. CentOS7 搭建gitlab服务器

    本文介绍如何在CentOS7.2上搭建Gitlab服务器,并简单介绍如何使用. Preface 使用的是CentOS7.2的操作系统,安装当前最新版Gitlab服务器,下载地址:清华大学开源软件镜像站 ...

  4. Centos7使用docker搭建gitlab服务器

    了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...

  5. 在Ubuntu中搭建KMS服务器

    介绍 基于vlmcsd搭建的KMS服务器. 根据github上的说明,这个工具是用C写的,没有任何依赖,可以直接运行.而且它横跨几乎现在所有的系统平台,如Android, FreeBSD, Solar ...

  6. Windows中搭建ftp服务器

    使用工具Quick Easy FTP Server Windows中搭建FTP服务器有什么用呢? 确实没有用,直到有一次,我在VM中安装了Linux虚拟机,但是文件怎么也上传不到这个虚拟机中. 然后用 ...

  7. 在Windows下搭建Gitlab服务器

    一.GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 可通过Web界面进行访问公开的或者私人项目.它拥有与Github类 ...

  8. git操作:在CentOS7上面搭建GitLab服务器

    在这篇文章中将要讲解如何在CentOS7上面搭建本地的GitLab服务器. 一.安装并配置必要的依赖关系 首先要在CentOS系统上面安装所需的依赖:ssh.防火墙.postfix(用于邮件通知).w ...

  9. centos6.5上搭建gitlab服务器(亲测可用哦)

    最近的版本控制中,git可谓是脱缰的野马,一发不可收拾.当然git的设计模式也是愈发的成熟,让人刮目相看,完美解决了svn上的不足之处.在目前分布式横行的天下,git可谓是占得了一席之地. 废话少说, ...

随机推荐

  1. Dynamics 365 联系人Contact的快速创建窗体,如何知道父窗体是哪个实体,通过window.top.parent.Xrm.Page.getUrl()可以知道父窗体的URL

    Dynamics 365 联系人Contact的快速创建窗体,如何知道父窗体是哪个实体?相信有人会遇到过这种头疼的问题,我这里分享一种方式: 在contact快速创建窗体的onload时间执行如下代码 ...

  2. Jmeter(二) - 从入门到精通 - 创建测试计划(Test Plan)(详解教程)

    1.简介 上一篇中宏哥已经教你把JMeter的测试环境搭建起来了,那么这一篇我们就将JMeter启动起来,一睹其芳容,首先宏哥给大家介绍一下如何来创建一个测试计划(Test Plan). 2.创建一个 ...

  3. 存储系列之 RAID技术原理简介

    引言:RAID技术是现代大规模存储的基础,“基础(技术)是拿来革命的”.我查raid相关资料时,查布尔运算,竟然一路查到“香农原理”,这不是有个视频中HW的任总提到的吗,多基础的东西,任总却毫不含糊, ...

  4. 朱刘算法 有向图定根的最小生成树poj3164

    关于为什么不能用Prim求解此类问题,如下 Prim可以看成是维护两个顶点集或者看成维护一颗不断生成的树(感觉前一种说法好一点) 倘若是有向图有三个顶点1.2.3 边的情况如下 1->2:    ...

  5. airflow的安装和使用 - 完全版

    之前试用了azkaban一小段时间,虽然上手快速方便,但是功能还是太简单,不够灵活. Airflow使用代码来管理任务,这样应该是最灵活的,决定试一下. 我是python零基础,在使用airflow的 ...

  6. Swiper的jquery动态渲染不能滑动

    <!-- 下面俩行代码就是解决异步加载数据导致swiper不轮播的关键 --> observer: true,//修改swiper自己或子元素时,自动初始化swiper observePa ...

  7. IO字节流与字符流的操作

    字节流:        FileInputStream读取,FileOutputStream输出 字节流使用数组缓冲区复制文件,最后得出所使用的时间 public class work2 { publ ...

  8. Siemens PLC分类和基本性能指标

    PLC分类 整体式plc也成为单元式,特点是电源,中央处理器单元以及I/O借口都集成在一个机壳内. 标准摸板试结构化,也成为组合式,特点是电源,中央处理器单元模板以及I/O模板在结构上都是相互独立的, ...

  9. JS中Class的两种写法

    写法一:使用函数: var ClassName = function() { this.message = 'dat.gui'; this.speed = 0.8; this.displayOutli ...

  10. SpringCloud(一)- SpringCloud简介

    唯能极于情,故能极于剑 有问题或错误请及时联系小编或关注小编公众号 “CodeCow”,小编一定及时回复和改正,期待和大家一起学习交流 一.SpringCloud 1.1.Cloud 是什么 ?: 官 ...