GItlab 安装

2023-11-06

1、安装相关U依赖

$ yum -y install policycoreutils openssh-clients postfix

2、启动ssh服务&设置为开机启动

$ systemctl enable sshd & sudo systemctl start sshd

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

$ systemctl enable postfix && systemctl start postfix

4、开放ssh 以及http服务,然后重新加载防火墙列表

$ firewall-cmd --add-service=ssh --permanent
$ firewall-cmd --add-service=http --permanent
$ firewall-cmd --reload

5、下载gitlab 包,并且安装

安装

$ wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm 
 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-13.6.7-ce.0.el6.x86_64.rpm

$ rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm 

6、修改gitlab 配置

vi /etc/gitlab/gitlab.rb

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

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

7、重载配置及启动gitlab

gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-ctl start # 启动所有 gitlab 组件;
gitlab-ctl stop # 停止所有 gitlab 组件;
gitlab-ctl restart # 重启所有 gitlab 组件;
gitlab-ctl status # 查看服务状态;
gitlab-ctl reconfigure # 启动服务;
vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
gitlab-ctl tail # 查看日志;

此时有可能报错

报错:There was an error running gitlab-ctl reconfigure:
ruby_block[authorize Grafana with Gitlab] (monitoring::grafana line 92) had an error: NoMethodError: undefined method ‘zero?’ for nil:NilClass

解决办法

分配2G空间

sudo dd if=/dev/zero of=/root/swapfile bs=1M count=1500;

制作文件并生效

sudo mkswap /root/swapfile
sudo swapon /root/swapfile

设置开机启动
sudo vim /etc/fstab 在最后一行加进去

/root/swapfile swap swap defaults 0 0

最后free -m查看是否生效
生效后重新执行gitlab-ctl reconfigure 即可

8、把端口添加到防火墙

firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload

启动成功后,访问: xxxx:82 看到一下修改管理员root密码的页面,修改密码后,然后登录即可

Gitlab 安装问题

1、Gitlab访问出现403"Forbidden"现象

问题原因分析:

可能因较多的并发导致的访问被拒绝, Gitlab使用rack_attack做了并发访问的限制!

解决办法:

打开/etc/gitlab/gitlab.rb文件,查找 gitlab_rails[‘rack_attack_git_basic_auth’] 关键词,取消注释,

修改ip_whitelist白名单属性,加入Gitlab部署的IP地址。

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
......
 gitlab_rails['rack_attack_git_basic_auth'] = {
   'enabled' => true,
   'ip_whitelist' => ["127.0.0.1","172.16.60.222"],   //把gitlab服务器IP地址添加
   'maxretry' => 10,
   'findtime' => 60,
   'bantime' => 3600
 }  

然后进行重新配置

[root@gitlab ~]``# gitlab-ctl reconfigure

2、Gitlab访问出现502的现象

Gitlab访问出现:Whoops, GitLab is taking too much time to respond.

问题原因分析:

1)unicorn原8080默认端口被容器中别的进程已经占用,必须调整为没用过的
2)gitlab的timeout设置过小,默认为60

解决办法:

1)关闭gitlab服务

[root@gitlab ~]``# gitlab-ctl stop

2)选择一个没有被系统占用的端口作为unicorn端口,比如8877端口(lsof -i:8877 确认此端口没有被占用)

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
unicorn['port'] = 8877
gitlab_workhorse['auth_backend'] = "http://localhost:8877"

3)重新生成配置,并进行重启。

[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl restart

3、Gitlab启动失败,或重新安装时出现卡的状态

问题现象:在卸载gitlab然后再次安装执行sudo gitlab-ctl reconfigure的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行!

解决办法:

1)按ctrl + c 强制结束
2)执行"systemctl restart gitlab-runsvdir" 命令
3)接着再执行"gitlab-ctl reconfigure"

如果Gitlab服务器重启后,启动"gitlab-ctl start"失败,解决办法相同。

[root@gitlab ~]# systemctl restart gitlab-runsvdir
[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl start

4、Gitlab异常关机,导致gitlab启动失败!gitlab-runsvdir方式启动没反应(僵尸状态)

问题现象:Gitlab部署的服务器异常断电,机器重启后,尝试启动gitlab服务,启动失败!通过gitlab-runsvdir方式启动一直没有反应!一直在卡顿状态!日志也没有任务输入!

执行下面的启动命令报错:
[root@gitlab ~]# gitlab-ctl start      // 或者 "gitlab-ctl restart"
fail: alertmanager: runsv not running
fail: gitaly: runsv not running
fail: gitlab-monitor: runsv not running
fail: gitlab-workhorse: runsv not running
fail: logrotate: runsv not running
fail: nginx: runsv not running
fail: node-exporter: runsv not running
fail: postgres-exporter: runsv not running
fail: postgresql: runsv not running
fail: prometheus: runsv not running

那么尝试通过supervisor进程方式启动gitlab,发现一直在卡顿中,根本没有任何反应!

[root@gitlab ~]# systemctl restart gitlab-runsvdir

查看日志,发现也没有任务启动信息打印到日志中 (日志都是之前的)

[root@gitlab ~]``# /usr/bin/gitlab-ctl tail

gitlab-runsvdir启动在卡顿中,gitlab服务也没有起来

root@gitlab ~]# cat /etc/systemd/system/multi-user.target.wants/gitlab-runsvdir.service
[Unit]
Description=GitLab Runit supervision process
After=multi-user.target
  
[Service]
ExecStart=/opt/gitlab/embedded/bin/runsvdir-start           #最后通过这条命令启动了Gitlab
Restart=always
  
[Install]
WantedBy=multi-user.target
  
执行下面的启动,虽然发现这个也会一直在卡顿中,但是不影响gitlab服务启动。
[root@gitlab ~]# /opt/gitlab/embedded/bin/runsvdir-start
  
重新打开一个终端窗口,发现gitlab已经有新的日志信息打入了,gitlab也服务已经起来了
[root@gitlab ~]# /usr/bin/gitlab-ctl tail
[root@gitlab ~]# ps -ef|grep gitlab
  
这时候关闭上面执行"/opt/gitlab/embedded/bin/runsvdir-start"的卡顿的终端窗口,发现gitlab也还是启动状态(ps -ef|grep gitlab)
[root@gitlab ~]# ps -ef|grep gitlab
[root@gitlab ~]# lsof -i:80
[root@gitlab ~]# gitlab-ctl status
run: alertmanager: (pid 29804) 1640s; run: log: (pid 29789) 1640s
run: gitaly: (pid 29795) 1640s; run: log: (pid 29781) 1640s
run: gitlab-monitor: (pid 29799) 1640s; run: log: (pid 29785) 1640s
run: gitlab-workhorse: (pid 29794) 1640s; run: log: (pid 29780) 1640s
run: logrotate: (pid 29798) 1640s; run: log: (pid 29783) 1640s
run: nginx: (pid 29800) 1640s; run: log: (pid 29786) 1640s
run: node-exporter: (pid 29802) 1640s; run: log: (pid 29788) 1640s
run: postgres-exporter: (pid 29805) 1640s; run: log: (pid 29790) 1640s
run: postgresql: (pid 29796) 1640s; run: log: (pid 29782) 1640s
run: prometheus: (pid 29797) 1640s; run: log: (pid 29784) 1640s
run: redis: (pid 29818) 1640s; run: log: (pid 29793) 1640s
run: redis-exporter: (pid 29817) 1640s; run: log: (pid 29792) 1640s
run: sidekiq: (pid 29801) 1640s; run: log: (pid 29787) 1640s
run: unicorn: (pid 29807) 1640s; run: log: (pid 29791) 1640s
  
查看日志也有新信息写入,一切正常了!
[root@gitlab ~]# /usr/bin/gitlab-ctl tail  

5、Gitlab重新安装,在执行"gitlab-ctl reconfigure"配置环节出现了下面报错:

[root@gitlab ~]# gitlab-ctl reconfigure
.........
.........
STDERR: sysctl: cannot open "/etc/sysctl.d/90-omnibus-gitlab-kernel.sem.conf": No such file or directory
sysctl: cannot open "/etc/sysctl.d/90-omnibus-gitlab-net.core.somaxconn.conf": No such file or directory
---- End output of sysctl -e --system ----
Ran sysctl -e --system returned 255

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

[root@gitlab ~]# ll /etc/sysctl.d/
total 0
lrwxrwxrwx  1 root root 58 Nov 10 22:23 90-omnibus-gitlab-kernel.sem.conf -> /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.sem.conf
lrwxrwxrwx  1 root root 61 Nov 10 22:23 90-omnibus-gitlab-kernel.shmall.conf -> /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.shmall.conf
lrwxrwxrwx  1 root root 61 Nov 10 22:23 90-omnibus-gitlab-kernel.shmmax.conf -> /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.shmmax.conf
lrwxrwxrwx  1 root root 66 Nov 10 22:25 90-omnibus-gitlab-net.core.somaxconn.conf -> /opt/gitlab/embedded/etc/90-omnibus-gitlab-net.core.somaxconn.conf
lrwxrwxrwx. 1 root root 14 Oct 30 09:13 99-sysctl.conf -> ../sysctl.conf
  
[root@gitlab ~]# ll /opt/gitlab/embedded/etc
total 12
-rw-r--r-- 1 root root  24 Apr 12 23:18 90-omnibus-gitlab-kernel.shmall.conf
-rw-r--r-- 1 root root  28 Apr 12 23:17 90-omnibus-gitlab-kernel.shmmax.conf
-rwxr-xr-x 1 root root 196 Apr 12 23:16 gitconfig
  
[root@gitlab ~]# ll /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.sem.conf
ls: cannot access /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.sem.conf: No such file or directory
[root@gitlab ~]# ll /opt/gitlab/embedded/etc/90-omnibus-gitlab-net.core.somaxconn.conf
ls: cannot access /opt/gitlab/embedded/etc/90-omnibus-gitlab-net.core.somaxconn.conf: No such file or directory
  
解决方法一:
从别的备份机(或者在别的机器上重新安装一次,"gitlab-ctl reconfigure"之后生成这两个文件)将这两个文件拷贝回来!
  
解决方法二:
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
# unicorn['port'] = 8080
修改为:
unicorn['port'] = 8090
  
之后重新加载配置文件
[root@gitlab ~]# gitlab-ctl reconfigure
  
再次会报错,然后再修改/etc/gitlab/gitlab.rb,修改为原来的配置
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
# unicorn['port'] = 8080
  
再次重新加载配置文件就OK了!
[root@gitlab ~]# gitlab-ctl reconfigure
  
再次查看,发现上面配置中报错的两个文件已经存在了
[root@gitlab ~]# ll /opt/gitlab/embedded/etc/
total 20
-rw-r--r-- 1 root root  30 Apr 12 23:33 90-omnibus-gitlab-kernel.sem.conf
-rw-r--r-- 1 root root  24 Apr 12 23:18 90-omnibus-gitlab-kernel.shmall.conf
-rw-r--r-- 1 root root  28 Apr 12 23:17 90-omnibus-gitlab-kernel.shmmax.conf
-rw-r--r-- 1 root root  26 Apr 12 23:35 90-omnibus-gitlab-net.core.somaxconn.conf
-rwxr-xr-x 1 root root 196 Apr 12 23:16 gitconfig
[root@gitlab ~]# ll /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.sem.conf
-rw-r--r-- 1 root root 30 Apr 12 23:33 /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.sem.conf
[root@gitlab ~]# ll /opt/gitlab/embedded/etc/90-omnibus-gitlab-net.core.somaxconn.conf
-rw-r--r-- 1 root root 26 Apr 12 23:35 /opt/gitlab/embedded/etc/90-omnibus-gitlab-net.core.somaxconn.conf
  
最后再启动gitlab
[root@gitlab ~]# gitlab-ctl start

6、Gitlab更改默认Nginx

更换gitlab自带Nginx,使用自行编译Nginx来管理gitlab服务。

自行编译的nginx服务和gitlab在同一台机器上
1)编辑gitlab配置文件禁用自带Nignx服务器
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
...
#设置nginx为false,关闭自带Nginx
nginx['enable'] = false
...
  
2)检查默认nginx配置文件,并迁移至新Nginx服务 (即将下面两个gitlab自带nginx的配置文件迁移到自行编译的新的nginx配置中)
/var/opt/gitlab/nginx/conf/nginx.conf                #nginx配置文件,包含gitlab-http.conf文件
/var/opt/gitlab/nginx/conf/gitlab-http.conf          #gitlab核心nginx配置文件
  
[root@gitlab ~]# cp /var/opt/gitlab/nginx/conf/nginx.conf /etc/nginx/conf.d/
[root@gitlab ~]# cp /var/opt/gitlab/nginx/conf/gitlab-http.conf /etc/nginx/conf.d/
  
3)重启gitlab服务
[root@gitlab ~]# gitlab-ctl reconfigure  
[root@gitlab ~]# gitlab-ctl restart
  
重启自行编译的nginx服务
[root@gitlab ~]# service nginx restart
  
如果访问报502。原因是nginx用户无法访问gitlab用户的socket文件。
重启gitlab需要重新授权
[root@gitlab ~]# chmod -R o+x /var/opt/gitlab/gitlab-rails  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GItlab 安装 的相关文章

随机推荐

  • Qt全局宏和变量

    1 Qt 全局宏定义 Qt版本号 QT VERSION major lt lt 16 minor lt lt 8 patch 检测版本号 QT VERSION CHECK major minor patch major lt lt 16 m
  • virtio代码分析(一)-qemu部分

    virtio内容众多 代码分布于qemu linux dpdk等中 而且分为frontend和backend 可以运行于userspace也可以运行于kernelspace 极其难以理解 不看代码只看原理性文档往往流于表面 只有真正看懂了代
  • 大数据准备——安装JDK

    1 解压Linux版本的JDK压缩包 命令行敲入 mkdir home software cd home software rz 上传jdk tar包 这里添加自己tar包的名字 如果rz命令不能使用 先执行yum install lrzs
  • C语言关键字解析

    在C语言中有32个关键字 如下表所示 释 1 声明 1 告诉编译器 这个名字已经匹配到一块内存上 2 告诉编译器 这个名字已经预定了 其他地方再也不能用它来作为变量名或对象名 2 定义 编译器创建一个对象 为这个对象分配一块内存空间 并给它
  • 前端 配色网站 自用 免费 颜色很全

    1 中国色彩 http zhongguose com 3 ColorHex https www colorhexa com 4 优色网配色专区 https color uisdc com 4 ColorDrop https www colo
  • cuda学习

    GPU中有多个流处理器SM 当一个线程块被指定给一个SM后 里面的线程会被划分成线程束 32个线程 在SM上交替运行 也就是说SM上一个时刻只有一个线程束在运行 函数修饰符 global 表示该函数只能在GPU上运行 但是可以从CPU或者G
  • qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method

    最近在做一个网络音乐播放器时 由于出现qt network ssl QSslSocket cannot call unresolved function SSLv23 client method 而不能播放网络歌曲 上网搜了半天 都说要在电
  • Jmeter(二十七) - 从入门到精通 - Jmeter Http协议录制脚本(详解教程)

    1 简介 LoadRunner的录制功能让性能测试脚本编写对于不懂代码的人变成了一件容易上手的事 但是由于LoadRunner收费高昂 庞大 一般企业很少用 除非必须使用 Jmeter作为性能测试中的王者也少不了提供录制功能 Jmeter的
  • 靠!我被项目经理和同事嘲笑了,因为不会远程debug调试...

    大家好 我是曹尼玛 刚从培训机构毕业 去一家单位上班一周了 这一周项目经理让我熟悉了项目业务 架构和设计 不算难 凭借我培训机构第一名的成绩 还是很顺溜 今天项目经理把同事们叫到一起 说线上438x6项目出现奇葩问题 但是开发环境初步测试没
  • SSM框架练习—主从表的业务模型

    需要实现的整体功能 系统的登录并进行用户名的校验 团购信息的列表展示 团购信息的添加 团购信息的检索 1 数据库创建 CREATE DATABASE mydb USE mydb drop table if exists vaccunit C
  • MySQL数据库关于表的一系列操作

    MySQL中的数据类型 varchar 动态字符串类型 最长255位 可以根据实际长度来动态分配空间 例如 varchar 100 char 定长字符串 最长255位 存储空间是固定的 例如 char 10 int 整数型 最长11位 lo
  • 【数据结构 c语言版 】线性表的链式表示和实现

    目录 一 单链表的表示和实现 1 单链表的存储结构 1 1 头指针 头结点与首元结点 1 2 带头结点单链表和不带头结点单链表的比较 2 单链表的初始化 3 单链表的长度 4 单链表的插入 5 单链表的删除 6 单链表的查看 7 单链表的撤
  • auto-gpt部署:openai key, google api key,google engine id

    获取OpenAI API Key 1 打开platform openai com 输入你的OpenAI帐号和密码 2 点击左上角personal gt view api keys gt api keys gt create new scre
  • 不花钱,让"情圣"ChatGPT教你怎么追马斯克

    大家好 我是播妞 你知道吗 如今爆火的ChatGPT 曾经和马斯克还有一段七年的 纠葛 最近 OpenAI发布了史上最强聊天机器人ChatGPT 这个诞生于GPT 3基础上的AI很快走红网络 要说这家伙 天南海北无所不知 可能是夸张了点 但
  • Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例源码分析

    郁闷 做了WCE嵌入式驱动这么久还没热身够 又被调到做window xp下的驱动开发 没办法 只能受令了 现在就开始自己的学习之旅吧 转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家提出意见
  • 正则匹配html标签和内容,正则匹配HTML标签(不保留内容和保留内容、过滤标签的的属性)...

    1 匹配双标签 包括内容 过滤标签 不保留内容 var reg1 gt n gi var str1 我是被删除的123123 console log str1 replace reg1 2 匹配标签 不包括内容 过滤标签 保留内容 var
  • Python爬虫之正则表达式

    正则表达式 正则表达式就是规则表达式 在接触爬虫前 正则表达式就是用来过滤的 接触爬虫后发现真的就是过滤用的hhh 正则表达式在爬虫中的作用就是过滤出想要的字符 然后获取 如果不用正则表达式 那么就会将网页中大量信息全部爬出 造成大量内存浪
  • 数字图象处理之二维码图像提取算法(五)

    在预处理之后 接下来就要进行码字提取 在码字提取部分 我们采用的就是霍夫 Hough transform 变换 通过霍夫变换我们可以知道整个二维码倾斜的角度 然后我们就可以进行二维码的矫正 霍夫变换具体如下 采用分级的Hough变换方法 不
  • CSS3动画基础学习

    放在前面的 浏览器支持问题 Internet Explorer 10 Firefox 以及 Opera 支持 keyframes 规则和 animation 属性 而Chrome 和 Safari 需要前缀 webkit CSS3中动画是什
  • GItlab 安装

    1 安装相关U依赖 yum y install policycoreutils openssh clients postfix 2 启动ssh服务 设置为开机启动 systemctl enable sshd sudo systemctl s