前言
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进行安装。
安装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
安装成功后如下:
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
如果一直卡在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
12. 查看各个组件是否运行
gitlab-ctl status
如果某个组件停了,可以单独启动
gitlab-ctl start prometheus
13. 配置hosts解析并访问即可
第一次登陆修改密码;修改完成密码后,用户为root,密码为修改后的密码
汉化
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
汉化成功后,如下:
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
- 停止gitlab
gitlab-ctl stop
- 编辑
/etc/gitlab/gitlab.rb
gitlab_rails['gitlab_default_projects_features_builds'] = false
- 重新配置,并启动
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
1. Gitlab重新安装,在执行"gitlab-ctl reconfigure"配置环节出现如下错误
执行命令:
gitlab-ctl reconfigure
错误信息:
问题原因分析:
丢失了报错中的这两个配置文件,进入/etc/sysctl.d目录发现,这两个文件都是通过链接到/opt/gitlab/embedded/etc/目录下。
然而/opt/gitlab/embedded/etc/确实没有这两个文件。
解决方法一:
从别的备份机(或者在别的机器上重新安装一次,"gitlab-ctl reconfigure"之后生成这两个文件)将这两个文件拷贝回来!
解决方法二:
vi /etc/gitlab/gitlab.rb
找到unicorn['port']作如下修改:
# unicorn['port'] = 8080
修改为: unicorn['port'] = 8090
重新加载配置文件
gitlab-ctl reconfigure
再次报错,然后再修改
/etc/gitlab/gitlab.rb,修改为原来的配置
vi /etc/gitlab/gitlab.rb
# unicorn['port'] = 8080
再次重新加载配置文件就OK了
gitlab-ctl reconfigure
再次查看,发现上面配置中报错的两个文件已经存在了
最后再启动gitlab
gitlab-ctl start
2. ShellCommandFailed: Expected process to exit with [0], but received ‘1‘
执行命令:
gitlab-ctl reconfigure
出现错误:
解决方法:
- 停止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
参考
- Centos7安装Gitlab
- CentOS7安装GitLab、汉化、邮箱配置及使用
- Gitlab的中文汉化
- centos7清理yum源
- 彻底干净卸载gitlab并重新安装
- 解决 command not found: netstat
- Gitlab初始化卡住不动
- warning: redis: unable to open supervise/ok: file does not exist
- ShellCommandFailed: Expected process to exit with [0], but received ‘1‘
- GItlab 安装
- 解决gitlab-ce prometheus 无法启动
- 掘金写文章,修改字体颜色
- Install self-managed GitLab
- 可持续化扩展(一)之GitLab全局取消流水线