CICD:CentOS 下 GitLab 安装_centos

GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过 Web 界面进行访问公开的或者私有的项目。GitLab 拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

0x01:yum 方式安装

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

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

  •  安装 gitlab-ce
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 源

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

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

#在编辑器中输入如下内容保存
[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

yum makecache
yum -y install gitlab-ce

安装成功出现以下信息

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 配置
vi /etc/gitlab/gitlab.rb
  • 修改 GitLab 访问地址和端口,默认为80,改为8082
external_url 'http://192.168.56.9:8082'
nginx['listen_port'] = 8082
  • 重新加载配置及启动 GitLab 
gitlab-ctl reconfigure
gitlab-ctl restart
  • 把 8082 端口添加到防火墙
firewall-cmd --zone=public --add-port=8082/tcp --permanent
firewall-cmd --reload

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

gitlab-ctl status

CICD:CentOS 下 GitLab 安装_git_02

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

  • 访问 http://192.168.56.9:8082

CICD:CentOS 下 GitLab 安装_git_03

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

0x02:docker 方式安装

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

CICD:CentOS 下 GitLab 安装_git_04

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

  • 获取 GitLab 镜像
docker pull gitlab/gitlab-ce

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

CICD:CentOS 下 GitLab 安装_centos_05

  • 启动服务
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 对容器进行相关的启动和停止操作

  • 查看启动情况
# 添加-a 参数,把启动的,没有启动的都列出来
docker ps -a

CICD:CentOS 下 GitLab 安装_linux_06

  • 配置Gitlab

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

进入容器

docker exec -it gitlab bash

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

vi /etc/gitlab/gitlab.rb

修改 IP 和端口

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

# 可以使用/ 来查找关键字,找到指定的内容,然后通过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 配置文件

vi /etc/ssh/sshd_config

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

2. 重启sshd服务

systemctl restart sshd

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

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 文件的最后添加如下配置 [ 也可以不添加 ]

# 是否启用
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 配置

gitlab-ctl reconfigure

修改 gitlab.yml 文件

cd /opt/gitlab/embedded/service/gitlab-rails/config
#修改port 为8090
vim gitlab.yml

重启 GitLab 服务

gitlab-ctl restart

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

一些常用命令

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服务