CentOS8 快速搭建 Gitlab 服务器
- 写在前面的话
- 第一步
- 第二步
- 第三步
- 新的第二步
- 新的第三步
- 还有其他一些常用命令如下
- 附加
写在前面的话
很多 IT 人从业 多年也许都还没有亲自搭过一次 Gitlab 服务器,我就是其中之一!通常都是入职后,拿到上面给的 Git 地址把项目 clone 下来!然后日复一日的 crud 搬砖,直到离职。也许用了几百年 Git 了,但是从来没有亲自部署过 Gitlab 服务器!虽然现在社会分工越来越细,部署 Gitlab 服务器通常都是运维的兄弟去做了,但如果你去一家创业公司,很可能就要你来部署的!所以该走的路我们还是得走一下!
现在来正式从 “零” 开始搭建 Gitlab 服务器:
首先来看看Gitlab 和 Github 的区别,一句话来概括就是:
Gitlab 是给企业私有化部署的 Git 服务器;
Github 是互联网在线版的 Git 服务器!
Github 对于开源项目建仓是免费使用的,那么 Gitlab 收不收费呢?分布式版本控制方面的功能 Gitlab 也是免费使用的,提供了社区版 (Gitlab CE) 给大家!Gitlab 现在可强大了,已经有自己成套的 DevOps 落地解决方案 (提高生产力的利器),但是这部分功能是在收费的旗舰版 / 企业版 (Gitlab EE) 上提供的!就像 Github 建私有化仓库的功能也是收费的一样,很正常!
不啰嗦了,快速开始吧:
进入官网如下图,按箭头依次点击:
官方建议使用至少 4GB 的可用内存来运行 Gitlab,我们选用服务器时就要注意了,至少要 4GB 以上。点击CentOS 8 一直往下滑
在安装步骤的最后,有一个短短的链接,写着 “CE or EE”,似乎有个 CE 版的入口,点进去如下图:
新页面前面的好几段依然在讲使用旗舰版 (企业版 Gitlab EE) 有多少好处… 直到最后才放了一个免费社区版 (Gitlab CE) 的链接 “Install GitLab Community Edition”,藏得这么深,这是怕别人知道啊!续继点进去:
继续点:
服务器准备好后,按着官方 Gitlab CE 版的安装说明进行安装即可,其实很简单,认真算起来只有三步 (由于我是 root 身份,所以不用 sudo):
第一步
安装和启用 policycoreutils、openssh-server 和 openssh-clients 组件,并将它们开放防火墙 (不要忘了 reload 防火墙):
dnf install -y curl policycoreutils openssh-server openssh-clients
# Enable OpenSSH server daemon if not enabled: sudo systemctl status sshd
systemctl enable sshd
systemctl start sshd
# Check if opening the firewall is needed with: sudo systemctl status firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl reload firewal
与邮件通知相关的 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 | sudo bash
第三步
安装 Gitlab CE 版并指定外部访问的 URL 地址,这里注意一下:外部访问 URL 地址使用一个自定义的域名,即使该域名实际上没有也没关系!另外如果你的服务器没有 https 相关的证书,那就不要用 https,直接用 http 协议!客户端使用时你可以在 HOST 里做一下映射的,当然,有真实可以的域名就最好了!为什么要用域名来指定外部访问 URL 地址呢?因为后面你使用 Gitlab 时会发现这是一个明智的选择!
EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ce
到这里你会发现要从第二步中配置的国外站下载多达 700M 的 gitlab-ce 包是有多么的艰难,预计耗时估计要 10 几个钟,如果没有科学上网的话还是要采用别的方法!
蜗牛速度是无法忍受的,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
现在使用 sed 命令替换 /etc/gitlab/gitlab.rb 文件中的 http://gitlab.example.com 为 http://gitlab.xxxxx.com ,xxxxx为你的域名。
sed 命令字符串替换格式: sed -i “s$ 要查找的字段 $ 替换成的字段 & g” 文件名 ,-i 表示是 in place edit 的意思,即就地编辑更改;参数里开头的 s 是 search 的意思,可以换成 d 表示 delete,最后的 g 是 globa 的意思,即全文搜索;
# 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.xxxxxx.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-ctl status
启动服务:
gitlab-ctl start
重启服务:
gitlab-ctl restart
停止服务:
gitlab-ctl stop
列出所有服务:
gitlab-ctl service-list
最后从虚拟机的宿主机浏览器上用 IP 地址或域名 (用域名的话需要先在宿主机的 /etc/hosts 配置域名与 IP 地址映射,所以实际上还是 IP) 访问一下 gitlab 服务:
访问成功如下图 ,密码在 /etc/gitlab/initial_root_password 文件中,登陆后可修改:
附加
语言改成中文:
进入 Preference,翻到最后,找到 Language,设置简体中文并保存。