小白学习centos7部署gitlab

1,234 阅读8分钟

前言

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。

清理yum源

使用默认的yum源,会导致获取gitlab的rpm之后,无法使用yum进行安装。

参考小白学习centos7清理yum源

安装gitlab

1. 安装curl policycoreutils-python openssh-server perl

yum install -y curl policycoreutils-python openssh-server perl

2. 启动ssh服务并且设置为开机启动

sudo systemctl enable sshd
sudo systemctl start sshd

3. 检查防火墙状态,开放ssh以及http、https服务,然后重新加载防火墙列表

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

4. 设置postfix开机自启,并启动,postfix支持gitlab发信功能

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

5. 创建gitlab的rpm的存放目录,并进入该目录

mkdir /home/download/gitlab

cd /home/download/gitlab

6. 下载Gitlab的rpm包至本地

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.9-ce.0.el7.x86_64.rpm

7. 使用yum安装gitlab,会帮我们解决依赖包

yum localinstall gitlab-ce-12.3.9-ce.0.el7.x86_64.rpm -y

安装成功后如下: image.png

8. 配置Gitlab域名

vi /etc/gitlab/gitlab.rb

找到external_url 'http://gitlab.example.com',可不修改,这样使用git拉取代码时,默认使用http://gitlab.example.com这个地址,可将其修改自己的服务器地址加gitlab的端口。

修改 gitlab 访问地址和端口,默认为80,我们改为82

external_url'http://192.168.3.5:82'
nginx['listen_port']=82 #这行是注释掉了,直接打开即可

修改unicorn端口,默认是8080,改成不怎么会用到的端口19080

unicorn['port'] = 19080

9. 关闭gitlab不需要的组件

vi /etc/gitlab/gitlab.rb

找到如下内容,并修改

node_exporter['enable'] = false 
redis_exporter['enable'] = false 
alertmanager['enable'] = false 
prometheus['enable'] = false 
prometheus['monitor_kubernetes'] = false 
postgres_exporter['enable'] = false 
pgbouncer_exporter['enable'] = false 
gitlab_exporter['enable'] = false 
prometheus_monitoring['enable'] = false 
grafana['enable'] = false

10. 初始化gitlab

这个初始化会得一会。第一次会初始化配置文件,随后每修改配置文件都要进行初始化进行重新加载配置

gitlab-ctl reconfigure

image.png

如果一直卡在ruby_block[wait for redis service socket] action run。等多长时间也不会往下执行。

解决方案

一. 重新再开一个终端,并执行以下命令

/opt/gitlab/embedded/bin/runsvdir-start

执行完成后,就会继续完成初始化了。

二. 或在当前终端使用以下命令,再初始化

nohup /opt/gitlab/embedded/bin/runsvdir-start &
gitlab-ctl reconfigure

三. 再或者CTRL+C强行终止,再运行以下命令

systemctl restart gitlab-runsvdir
gitlab-ctl reconfigure

如果执行报错了,请看文章最后问题部分

11. 查看组件状态以及端口

gitlab默认是运行在80端口

netstat -tnlp

如果不识别netstat命令,则先安装

yum install net-tools -y

image.png

12. 查看各个组件是否运行

gitlab-ctl status

image.png

如果某个组件停了,可以单独启动

gitlab-ctl start prometheus

13. 配置hosts解析并访问即可

第一次登陆修改密码;修改完成密码后,用户为root,密码为修改后的密码

image.png

image.png

image.png

汉化

1. 安装git

yum install git

2. 拉取gitlab的汉化代码

cd /home/download

git clone https://gitlab.com/xhang/gitlab.git

3. 停止GitLab并执行如下语句

gitlab-ctl stop
\cp  /home/download/gitlab/*  /opt/gitlab/embedded/service/gitlab-rails/  -rf

4. 重新配置并启动

gitlab-ctl reconfigure

gitlab-ctl restart

汉化成功后,如下: image.png

GitLab的命令

语法:

gitlab-ctl command (subcommand)

Service Management Commands
start启动所有服务
stop关闭所有服务
restart重启所有服务
status查看所有服务状态
tail查看日志信息
service-list列举所有启动服务
graceful-kill平稳停止一个服务

例子:

  • 启动所有服务
gitlab-ctl start
  • 启动单独一个服务
gitlab-ctl start nginx
  • 查看日志,查看所有日志
gitlab-ctl tail
  • 查看具体一个日志,类似tail -f
gitlab-ctl tail nginx

General Commands

help帮助
reconfigure修改配置文件之后,需要重新加载下
show-config查看所有服务配置文件信息
uninstall卸载这个软件
cleanse删除gitlab数据,重新白手起家

例子:

  • 显示所有服务配置文件
gitlab-ctl show-config
  • 卸载gitlab
gitlab-ctl uninstall
  • 检查gitlab
gitlab-rake gitlab:check SANITIZE=true --trace 

关闭pipeline

  1. 停止gitlab
gitlab-ctl stop
  1. 编辑/etc/gitlab/gitlab.rb
gitlab_rails['gitlab_default_projects_features_builds'] = false
  1. 重新配置,并启动
sudo gitlab-ctl reconfigure

sudo gitlab-ctl start

QQ邮箱配置

默认情况下,GitLab用qq邮箱注册是发不出确认邮件的。查看了网上很多邮箱配置的教程,大部分都是误导的。

像这类软件,归根到底总结为一句话:一切以官网文档为准

qq邮箱最好用企业邮箱,本人用个人邮箱进行测试是有些小问题的。

正确配置如下:

vi /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"

gitlab_rails['smtp_port'] = 465

gitlab_rails['smtp_user_name'] = "xxxx@xx.com"

gitlab_rails['smtp_password'] = "password"

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['smtp_enable_starttls_auto'] = true

gitlab_rails['smtp_tls'] = true

gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'

完全卸载gitlab

1. 停止gitlab

gitlab-ctl stop

2. 卸载gitlab(注意这里写的是gitlab-ce)

rpm -e gitlab-ce

3. 查看gitlab进程

ps aux | grep gitlab

4. 杀掉第一个进程(就是带有好多…的进程)

杀掉后,在ps aux | grep gitlab确认一遍,还有没有gitlab的进程。若还存在,可以把它的主要组件的进程也杀一遍。如果不确定,可以使用pkill -f gitlab,终止所有带有"gitlab"关键字的进程。

5. 删除所有包含gitlab文件

find / -name gitlab | xargs rm -rf

若你没有全杀权限。那么可以可以把这三个目录给干掉也可以:

rm -rf  /opt/gitlab
rm -rf  /etc/gitlab
rm -rf  /var/log/gitlab

6. 重新安装

yum localinstall gitlab-ce-12.3.9-ce.0.el7.x86_64.rpm -y

相关报错\color{red}{相关报错}

1. Gitlab重新安装,在执行"gitlab-ctl reconfigure"配置环节出现如下错误

执行命令:

gitlab-ctl reconfigure

错误信息: Snipaste_2024-06-05_22-43-04.png

问题原因分析:

丢失了报错中的这两个配置文件,进入/etc/sysctl.d目录发现,这两个文件都是通过链接到/opt/gitlab/embedded/etc/目录下。
然而/opt/gitlab/embedded/etc/确实没有这两个文件。

image.png

解决方法一:

从别的备份机(或者在别的机器上重新安装一次,"gitlab-ctl reconfigure"之后生成这两个文件)将这两个文件拷贝回来!

解决方法二:

vi /etc/gitlab/gitlab.rb

找到unicorn['port']作如下修改:

# unicorn['port'] = 8080 
修改为: unicorn['port'] = 8090

重新加载配置文件

gitlab-ctl reconfigure

Snipaste_2024-06-05_22-43-39.png 再次报错,然后再修改/etc/gitlab/gitlab.rb,修改为原来的配置

vi /etc/gitlab/gitlab.rb

# unicorn['port'] = 8080

再次重新加载配置文件就OK了

gitlab-ctl reconfigure

再次查看,发现上面配置中报错的两个文件已经存在了 image.png

最后再启动gitlab

gitlab-ctl start

2. ShellCommandFailed: Expected process to exit with [0], but received ‘1‘

执行命令:

gitlab-ctl reconfigure

出现错误: Snipaste_2024-06-05_22-41-27.png

解决方法:

  • 停止gitlab服务
sudo gitlab-ctl stop
  • 修改目录权限
sudo chmod 755  /var/opt/gitlab/postgresql
  • 重启gitlab-runsvdir
sudo systemctl restart gitlab-runsvdir
  • 重新配置
sudo gitlab-ctl reconfigure
  • 启动
gitlab-ctl start
  • 查看gitlab组件状态,发现prometheus组件未启动,处于down状态,重启也不生效,但不影响访问gitlab
gitlab-ctl status
  • 尝试启动
gitlab-ctl restart prometheus

发现启动成功了。

3. warning: redis: unable to open supervise/ok: file does not exist

执行命令:

sudo gitlab-ctl reconfigure

卡住不动后,按ctr+c强行停止,然后执行命令

gitlab-ctl stop

*解决方案:

sudo systemctl restart gitlab-runsvdir

sudo gitlab-ctl reconfigure

参考