前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CICD:CentOS 下 GitLab 安装

CICD:CentOS 下 GitLab 安装

作者头像
BUG弄潮儿
发布2021-04-12 11:19:15
2.1K0
发布2021-04-12 11:19:15
举报
文章被收录于专栏:JAVA乐园
GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过 Web 界面进行访问公开的或者私有的项目。GitLab 拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

0x01:yum 方式安装

  • 基础依赖库安装
代码语言:javascript
复制
yum -y install curl policycoreutils openssh-server openssh-clients postfix
  • 启动ssh服务 & 设置为开机启动
代码语言:javascript
复制
systemctl enable sshd && systemctl start sshd
  • 设置 postfix 开机自启,并启动,postfix 支持 GitLab 发信功能
代码语言:javascript
复制
systemctl enable postfix && systemctl start postfix
  • 开放 ssh 和 http服务,然后重新加载防火墙列表
代码语言:javascript
复制
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

如果关闭防火墙就不需要进行以上配置

  • 安装 gitlab-ce
代码语言:javascript
复制
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

yum install -y gitlab-ce

GitLab 分为 gitlab-ce 社区版gitlab-ee 企业收费版两个版本,这里安装社区版。由于网络问题,国内用户,建议使用清华大学的镜像源进行安装。

添加 yum 源

代码语言:javascript
复制
vim /etc/yum.repos.d/gitlab-ce.repo

再打开的 /etc/yum.repos.d/gitlab-ce.repo 文件中添加以下内容

代码语言:javascript
复制
#在编辑器中输入如下内容保存
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

建立元数据缓存,并再次安装 GitLab

代码语言:javascript
复制
yum makecache
yum -y install gitlab-ce

安装成功出现以下信息

代码语言:javascript
复制
                                                                                                                                                           1/1 It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.



     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=13-10

  验证中      : gitlab-ce-13.10.2-ce.0.el7.x86_64                                                                                                                                                              1/1 

已安装:
  gitlab-ce.x86_64 0:13.10.2-ce.0.el7                                                                                                                                                                              

完毕!
  • 修改 GitLab 配置
代码语言:javascript
复制
vi /etc/gitlab/gitlab.rb
  • 修改 GitLab 访问地址和端口,默认为80,改为8082
代码语言:javascript
复制
external_url 'http://192.168.56.9:8082'
nginx['listen_port'] = 8082
  • 重新加载配置及启动 GitLab
代码语言:javascript
复制
gitlab-ctl reconfigure
gitlab-ctl restart
  • 把 8082 端口添加到防火墙
代码语言:javascript
复制
firewall-cmd --zone=public --add-port=8082/tcp --permanent
firewall-cmd --reload

启动成功后,使用以下命令查看 GitLab 的启动状态

代码语言:javascript
复制
gitlab-ctl status

看到以上输出说明启动成功

  • 访问 http://192.168.56.9:8082

随后进入修改管理员 root 密码的页面,修改密码后,然后登录即可。

0x02:docker 方式安装

  • Docker 安装服务实在是太方便,通过 docker 来安装 Gitlab,运行如下命令查看 Gitlab 的镜像文件
代码语言:javascript
复制
docker search gitlab

看到镜像有很多,第四个镜像是中文版的,英语不好可以安装中文版的。其实,中文版也就是安装了一个语言包而已,有兴趣可以自己安装第一个,然后再手动配置中文包。

  • 获取 GitLab 镜像
代码语言:javascript
复制
docker pull gitlab/gitlab-ce

下载完毕后,先不急着运行 GitLab,为了避免容器运行时数据丢失,需要使用Docker volume(容器卷)方式来将数据映射到本地,这里创建 /usr/gitlab 目录来存放相应的数据,具体对应关系如下:

  • 启动服务
代码语言:javascript
复制
docker run  -d \
    --publish 8443:443 --publish 8090:80 --publish 8022:22 \
    --name gitlab \
    --volume /usr/gitlab/config:/etc/gitlab \
    --volume /usr/gitlab/logs:/var/log/gitlab \
    --volume /usr/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce  

-d 在后台启动

-publish 8443:443 把容器中应用的端口443映射为外部的8443端口

-publish 8090:80 把容器中应用的端口80映射为外部的8090端口

--name 容器启动之后的名字

-volume 把容器中的配置,日志,数据映射到容器外部

通过 --name 配置了 GitLab 的名字之后,后续可以通过这个 name 对容器进行相关的启动和停止操作

  • 查看启动情况
代码语言:javascript
复制
# 添加-a 参数,把启动的,没有启动的都列出来
docker ps -a
  • 配置Gitlab

配置时,需要进入容器当中配置,如果直接修改映射到容器外部的配置文件,总会出现一些奇怪的问题,为了避免出现问题所以直接修改容器里的配置文件。

进入容器

代码语言:javascript
复制
docker exec -it gitlab bash

修改 /etc/gitlab/gitlab.rb 文件

代码语言:javascript
复制
vi /etc/gitlab/gitlab.rb

修改 IP 和端口

该部分内容的修改是为了解决,在 GitLab 创建项目时,项目访问地址是容器id 的问题

代码语言:javascript
复制
# 可以使用/ 来查找关键字,找到指定的内容,然后通过n来下一个查找
# 在gitlab创建项目时候http地址的host(不用添加端口)
external_url 'http://192.168.56.9:80'
# 在gitlab创建项目时候ssh地址的host
gitlab_rails['gitlab_ssh_host'] = '192.168.56.9'(不用添加端口)
# docker run 的时候我们把22端口映射为外部的8022了,这里修改下
gitlab_rails['gitlab_shell_ssh_port'] = 8022

另外,对应 ssh 的 22 端口的映射问题,第一种方案就是在 docker 启动 gitlab-ce 把 ssh 的 22 端口映射成另外的端口,然后修改 gitlab_shell_ssh_port 配置项为映射时的端口;另一种方案就是修改 ssh 的默认端口。修改 ssh 默认端口 22 的操作方案如下:

通常 gitlab 会与 gi t配置使用,而 git 会采用 ssh 协议来操作 git 仓库,而 gitlab-ce 连接宿主机时也使用 ssh,如果不修改默认 sshd 端口,git 使用默认配置就会出现问题,这里将主机的 sshd 端口从 22 端口改为其他端口,比如 2280。

1. 编辑 sshd_config 配置文件

代码语言:javascript
复制
vi /etc/ssh/sshd_config

将 #Port 22 注释去掉,将数字 22 更改为 2280。

2. 重启sshd服务

代码语言:javascript
复制
systemctl restart sshd

3. 配置firewall,使 2280 端口可以对外提供服务,否则无法使用 ssh 进行远程登录了。

代码语言:javascript
复制
semanage port -a -t ssh_port_t -p tcp 2280
firewall-cmd --permanent --add-port=2280/tcp
firewall-cmd --reload 

简单来说一种就是修改 GitLab 容器相应的端口;另外一种就是修改宿主机 sshd 端端口。但生产环境通常会不启用 22 端口,避免被人恶意暴力尝试

在 gitlab.rb 文件的最后添加如下配置 [ 也可以不添加 ]

代码语言:javascript
复制
# 是否启用
gitlab_rails['smtp_enable'] = true
# SMTP服务的地址
gitlab_rails['smtp_address'] = "smtp.qq.com"
# 端口
gitlab_rails['smtp_port'] = 465
# 你的QQ邮箱(发送账号)
gitlab_rails['smtp_user_name'] = "440902123@qq.com"
# 授权码
gitlab_rails['smtp_password'] = "kx1x@123dd"
# 域名
gitlab_rails['smtp_domain'] = "smtp.qq.com"
# 登录验证
gitlab_rails['smtp_authentication'] = "login"

# 使用了465端口,就需要配置下面三项
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'

# 你的QQ邮箱(发送账号)
gitlab_rails['gitlab_email_from'] = '440902123@qq.com'

重新加载 GitLab 配置

代码语言:javascript
复制
gitlab-ctl reconfigure

修改 gitlab.yml 文件

代码语言:javascript
复制
cd /opt/gitlab/embedded/service/gitlab-rails/config
#修改port 为8090
vim gitlab.yml

重启 GitLab 服务

代码语言:javascript
复制
gitlab-ctl restart

GitLab 容器启动后,访问 http://92.168.56.9:8090 就可以进入 GitLab 访问页面,第一步要做的就是给 root 用户设置密码;设置完后,通过 root + 设置的密码就可以登录。为了方便管理,经常创建不同的组,然后通过不同的组来管理组下的成员。

一些常用命令

代码语言:javascript
复制
gitlab-ctl reconfigure    # 重载配置
gitlab-ctl check-config    # 检查配置并启动
gitlab-ctl diff-config    # 将用户配置与包可用配置进行比较
gitlab-ctl status    # 查看所有启动组件的进程和状态
gitlab-ctl service-list    # 查看所有服务
gitlab-ctl stop    # 停止GitLab服务
gitlab-ctl start    # 启动GitLab服务 
gitlab-ctl restart    # 重启GitLab服务 
gitlab-ctl once    # 如果GitLab服务已停止则启动服务,如果GitLab服务已启动则重启GitLab服务
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档