CentOS8.1中搭建Gitlab服务器
依旧是写在前面的话♠:很多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 掐断下载过程吧,换其它方法:
- 自己先从其他地方下载到gitlab-ce的rmp包,再上传到服务器进行安装;
- 使用一个国内镜像地址进行在线安装;
这里我们讲一下第二种办法,使用国内镜像地址进行在线安装,这里我们选择清华大学提供的镜像服务器,因为它提供了比较全面的使用说明(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服务器的更多相关文章
- Ubuntu搭建Gitlab服务器
想到Gitlab就必定会想到SVN,因为两者都是代码管理系统,作为开发人员来说,用习惯了SVN的图形化界面和SVN代码更新和提交的方式, 可能就会觉得使用git会比较麻烦,其实不然git使用起来非常方 ...
- 搭建GitLab服务器
前言 每一个开发工作者无非身处2中开发环境:1.开源环境 2.闭源开发环境,若你身处闭源环境或对自己代码安全性要求较高,搭建和使用自己GitLab服务器是必不可少的环节. 可以通过各种方式搭建自己的 ...
- CentOS7 搭建gitlab服务器
本文介绍如何在CentOS7.2上搭建Gitlab服务器,并简单介绍如何使用. Preface 使用的是CentOS7.2的操作系统,安装当前最新版Gitlab服务器,下载地址:清华大学开源软件镜像站 ...
- Centos7使用docker搭建gitlab服务器
了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...
- 在Ubuntu中搭建KMS服务器
介绍 基于vlmcsd搭建的KMS服务器. 根据github上的说明,这个工具是用C写的,没有任何依赖,可以直接运行.而且它横跨几乎现在所有的系统平台,如Android, FreeBSD, Solar ...
- Windows中搭建ftp服务器
使用工具Quick Easy FTP Server Windows中搭建FTP服务器有什么用呢? 确实没有用,直到有一次,我在VM中安装了Linux虚拟机,但是文件怎么也上传不到这个虚拟机中. 然后用 ...
- 在Windows下搭建Gitlab服务器
一.GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 可通过Web界面进行访问公开的或者私人项目.它拥有与Github类 ...
- git操作:在CentOS7上面搭建GitLab服务器
在这篇文章中将要讲解如何在CentOS7上面搭建本地的GitLab服务器. 一.安装并配置必要的依赖关系 首先要在CentOS系统上面安装所需的依赖:ssh.防火墙.postfix(用于邮件通知).w ...
- centos6.5上搭建gitlab服务器(亲测可用哦)
最近的版本控制中,git可谓是脱缰的野马,一发不可收拾.当然git的设计模式也是愈发的成熟,让人刮目相看,完美解决了svn上的不足之处.在目前分布式横行的天下,git可谓是占得了一席之地. 废话少说, ...
随机推荐
- Gitlab 修改ldap认证
1. 备份数据 2. 修改配置 使用自己搭建的openldap 使用用户中心的openldap 说明:base属性执行所有员工,user_filter属性主要用来实现分组功能.上面的配置是只有ldap ...
- 初识JAVA(学习记录)
Java 1.1Java简介 Java是一种跨平台的,面向对象的程序设计语言.无论是电脑还是手机,到处都运行着JAVA开发的应用程序:JAVA程序可以在任何计算机.操作系统以及支持JAVA的硬件设备上 ...
- node的http模块
node中的几个常用核心模块的api返回的都是eventEmitter的实例,也就是说都继承了on和emit方法,用以监听事件并触发回调来处理事件. http模块处理网络请求通常是创建一个server ...
- 曹工谈Spring Boot:Spring boot中怎么进行外部化配置,一不留神摔一跤;一路debug,原来是我太年轻了
spring boot中怎么进行外部化配置,一不留神摔一跤:一路debug,原来是我太年轻了 背景 我们公司这边,目前都是spring boot项目,没有引入spring cloud config,也 ...
- 数独c++
#include <bits/stdc++.h> using namespace std; const int maxn = 10; bool maps[maxn][maxn], row[ ...
- ThreadLocal 内存泄漏问题深入分析
写在前面 ThreadLocal 基本用法本文就不介绍了,如果有不知道的小伙伴可以先了解一下,本文只研究 ThreadLocal 内存泄漏这一问题. ThreadLocal 会发生内存泄漏吗? 先给出 ...
- DPDK Hash Library原理(学习笔记)
0 前言 本文主要翻译至DPDK的官方编程指南,在谷歌翻译的基础上根据自己的理解做了一些修改.网上搜索的很多中文翻译大多是翻译后直接黏贴上来,有时候连语句都读不通.希望本文能够对你有所帮助. 1 介绍 ...
- Git基本操作命令合集
平时自己敲敲代码,使用Git命令也渐渐多了起来.使用起来的确很方便,今天来分享下Git基本概念和本地代码提交到github上的过程,很简单的,多操作几次就会了. Git定义 Git 是一个开源的分布式 ...
- 控制层技术:Servlet+reflection、Struts2、Spring MVC三者之间的比较学习
Servlet Struts2 Spring MVC 处理用户提交的数据 基于MVC设计模式的Web应用程序 是一个框架 是MVC框架 导入servlet包,配置web.xml文件 web.xml & ...
- JedisPool的使用-连接池
为什么要使用JedisPool 1,获取Jedis实例需要从JedisPool中获取 2,用完Jedis实例需要返还给JedisPool 3,如果Jedis在使用过程中出错,则也需要还给JedisPo ...