gitlab安装部署及问题解决(实践篇)

2023-05-16

 系统环境:centos7.9

gitlab版本:11.1.4

一、GitLab简介


GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。公司自用为GitLab,公有的为GitHub。

二、GitLab系统架构


git用户的主目录通常是/home/git(~git表示主目录路径),GitLab主要以/home/git用户身份安装在用户主目录中git。在主目录中是gitlabhq服务器软件所在的位置以及存储库(尽管存储库位置是可配置的)。裸存储库位于/home/git/repositories。GitLab是一个ruby on rails应用程序,因此可以通过研究ruby on rails应用程序的工作原理来学习内部工作的细节。为了通过SSH提供存储库,有一个名为gitlab-shell的附加应用程序,它安装在/home/git/gitlab-shell。

GitLab 应用程序是下面所述的所有组件的集合:

1. repository:代码库,可以是硬盘或 NFS 文件系统
2. Nginx:Web 入口
3. 数据库:包含以下信息:
    - repository 中的数据(元数据,issue,合并请求 merge request 等)
    - 可以登录 Web 的用户(权限)
4. Redis:缓存,负责分发任务
5. sidekiq:后台任务,主要负责发送电子邮件。任务需要来自 Redis
6. Unicorn:Gitlab 自身的 Web 服务器,包含了 Gitlab 主进程,负责处理快速/一般任务,与 Redis 一起工作。工作内容包括:
    -  通过检查存储在 Redis 中的用户会话来检查权限
    -  为 Sidekiq 制作任务
    -  从仓库(warehouse)取东西或在那里移动东西
7. gitlab-shell:用于 SSH 交互,而不是 HTTP。gitlab-shell 通过 Redis 与 Sidekiq 进行通信,并直接或通过 TCP 间接访问 Unicorn
8. gitaly:后台服务,专门负责访问磁盘以高效处理 git 操作,并缓存耗时操作。所有的 git 操作都通过 Gitaly 处理
9. gitlab-workhorse:反向代理服务器,可以处理与 Rails 无关的请求(磁盘上的CSS、JS 文件等),处理Git Push/Pull 请求,处理到Rails的连接(修改由Rails发送的响应或发送给 Rails 的请求,管理 Rails 的长期 WebSocket 连接等)。
10. mail_room:处理邮件请求。回复 GitLab 发出的邮件时,GitLab 会调用此服务

Sidekiq. Unicorn 和 GitLab-shell 是GitLab中处理任务的 3 个程序。

三、Gitlab安装、配置、启动管理


安装Gitlab必要的依赖项
安装命令:yum install -y curl policycoreutils-python openssh-server

安装Postfix以发送通知电子邮件
安装命令:yum install postfix
激活命令:systemctl enable postfix
启用命令:systemctl start postfix

下载GitLab软件包(社区版),地址:https://packages.gitlab.com/gitlab/gitlab-ce

查看Gitlab相关目录,命令:find / -name gitlab

Gitlab目录结构
/opt/gitlab/                                           # 主目录
/etc/gitlab/                                           # 放置配置文件
/var/opt/gitlab/                                     # 各个组件
/var/log/gitlab/                                     # 放置日志文件
/var/opt/gitlab/git-data/repositories     #数据库的地址  
/var/opt/gitlab/postgresql/data            #gitlab组和项目的地址
/etc/gitlab/gitlab.rb                                   #gitlab配置文件

初始化Gitlab命令(保存配置或重新载入配置):

gitlab-ctl reconfigure

Gitlab服务的启停管理
启动服务: gitlab-ctl start
停止服务: gitlab-ctl stop
重启服务: gitlab-ctl restart
查看状态: gitlab-ctl status

Gitlab的supervisor方式启动服务
服务启动命令:   systemctl start gitlab-runsvdir.service
服务停止命令:   systemctl stop gitlab-runsvdir.service
服务重启命令:   systemctl restart gitlab-runsvdir.service
开机启动命令:   systemctl enable gitlab-runsvdir.service
取消开机启动命令:   systemctl disable gitlab-runsvdir.service
服务查看命令:   systemctl list-unit-files

Gitlab服务日志查看:/usr/bin/gitlab-ctl tail         #可以查看到gitlab所有插件的日志情况

四、Centos下Gitlab快速安装的操作记录


1. Gitlab安装过程(自己虚拟机上)

yum install curl openssh-server postfix cronie policycoreutils-python        #下载所需要的软件包

systemctl start postfix                                      #启动postfix

rpm -ivh gitlab-ce-11.1.4-ce.0.el7.x86_64.rpm                        #RPM安装gitlab

 更改gitlab的配置文件

cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-bak.rb                        #先将配置文件进行备份

vim /etc/gitlab/gitlab.rb

external_url 'http://192.168.26.128'                                #修改访问地址

 gitlab_rails['time_zone'] = 'Asia/Shanghai'                              #修改时区

 gitlab-ctl reconfigure                   #初次配置gitlab服务

如果开启了防火墙,请注意注意配置iptables规则,和sexlinux,然后浏览器访问测试。

如果访问出现502报错,类似下图的这种,请参考以下链接进行排查。

502问题排查链接

 安装后的小细节

 1、Gitlab如果是编译安装的默认管理员账号密码是:admin@local.host|5iveL!fe,如果是 rpm包安装则管理员账号密码是root|5iveL!fe

                首次访问的时候,如果不知道管理员账号和密码,尽管可以注册用户,但注册的用户都不是管理员。这个时候,可以重置管理员的密码,管理员默认是root。
                重置管理员密码(密码要是8位)的方法如下:

Gitlab管理员的登录权限就是:root/root@123,管理员的默认邮箱是部署机的本机邮箱,也是从本机发的邮件。这也就是为什么在开头要安装postfix。

[root@gitlab ~]# gitlab-rails console production

Loading production environment (Rails 4.2.10)

irb(main):001:0> user = User.where(id:1).first

irb(main):002:0> user.password='root@123'

irb(main):003:0> user.password_confirmation = 'root@123'

irb(main):004:0> user.save!

修改gitlab中的邮件配置为本机。

cat /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml|grep 192.168.26.128                #查看邮件配置是否是本机

 


访问http://192.168.26.128/admin/application_settings

如下:在管理员账号(root)登录后,先把"注册"功能关了,这样就只能在管理员账号下创建用户。关闭注册功能方法

3. Gitlab批量添加账号

[root@gitlab ~]# cat gitlab.sh

#!/bin/bash

#批量创建gitlab用户

userinfo="userinfo.text"

while read line

do

    password=`echo $line |awk '{print $1}'`

    mail=`echo $line |awk '{print $2}'`

    username=`echo $line |awk '{print $3}'`

    name=`echo $line |awk '{print $4}'`

    curl -d"reset_password=$password&email=$mail&username=$username&name=$name&private_token=ucUctguWU6-2qrvRnGiB" "http://192.168.62.128/api/v4/users"

done <$userinfo

[root@gitlab ~]# cat userinfo.text

1  zhanjiang.feng@wang.com zhanjiang.feng zhanjiang.feng

1  hongkang.yan@wang.com hongkang.yan hongkang.yan

1  yansong.wang@wang.com yansong.wang yansong.wang

1  bo.xue@wang.com bo.xue bo.xue

1  junlong.li@wang.com junlong.li junlong.li

1  luyu.cao@wang.com luyu.cao luyu.cao

1  xueqing.wang@wang.com xueqing.wang xueqing.wang

1  xu.guo@wang.com xu.guo xu.guo

1  bing.xing@wang.com bing.xing bing.xing

1  mengmeng.li@wang.com linan linan


 注意上面脚本中的private_token(这个很重要,否则批量创建不了用户)的值是从gitlab的管理员账号登录后的"settings-Account"界面里找到的,

如下:注意:上面userinfo.text文件里的四行分别表示密码,邮箱,用户名,别名。上面命令执行后,就可以批量创建用户了!
其中密码用1表示重置密码,也就是用户创建之后,会给用户邮箱发送两封邮件:
-> 一封确认绑定邮箱的邮件,一定要点击这个邮件里的confirm确认地址(否则登录无效);
-> 另一封是重置用户密码的邮件。重置后就可以使用邮箱或用户名登陆了。

 访问脚本中gitlab的用户接口地址http://192.168.26.128/api/v4/users,试试能否访问!

    Email的smtp设置                           

   上面默认是用部署机本地的postfix发邮件。如果要想使用第三方邮箱发邮件,请见下面                                      

[root@gitlab ~]# # cat /etc/gitlab/gitlab.rb|grep -v "^#"|grep -v "^$"

external_url'http://192.168.26.182'

gitlab_rails['gitlab_email_from'] ='xxxxxx@qq.com'

gitlab_rails['smtp_enable'] =true

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

gitlab_rails['smtp_port'] = 25

gitlab_rails['smtp_user_name'] ="xxxxxx@qq.com"

gitlab_rails['smtp_password'] ="*******"

gitlab_rails['smtp_domain'] ="qq.com"

gitlab_rails['smtp_authentication'] ="login"

gitlab_rails['smtp_enable_starttls_auto'] =true

user['git_user_email'] ="xxxxxx@qq.com"

 gitlab-ctl reconfigure

   修改Gitlab登录界面                                                         

选择gitlab新的主题风格,新主题会在左边栏展示选择项

gitlab-12版本以后就可以在设置中配置中文界面显示了。

查看gitlab版本号

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

 

 

注: 

以上为本人实际搭建过程中的经验总结,如果有什么问题,可以在评论区留言,大家一起探讨进步!

                                                                                                                       

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gitlab安装部署及问题解决(实践篇) 的相关文章

随机推荐

  • 使用任务设计四个并行输入数的排序组合逻辑

    1 使用冒泡排序算法 xff0c 编写一个任务 xff0c 完成四个8位2进制输入数据的 xff08 1 xff09 冒泡排序思想 xff1a xff08 如下图 xff09 xff08 2 xff09 从上面的算法思想中可以看出 xff0
  • C#之enum,枚举类型的简介和使用

    枚举类似于数组 xff0c 但两者的定义方法和设计目的不同枚举中的值会放在栈中枚举类型不能直接放在方法中 xff0c 一般放在命名空间中或与类同级枚举使用enum关键字进行定义 xff0c 枚举类型的定义其实和类的成员定义相似 xff0c
  • 用pip命令把python包安装到指定目录

    pip3 install bs4 target 61 D Python37 Lib site packages pip2或者pip3 包管理系统 install 安装 bs4 xff1a 要安装Python的包 指定安装目录 xff1a t
  • VScode配置C++以及一些问题解决方案

    如果有CLion的 xff0c 那就用CLion吧 xff0c 我个人觉得CLion是一个非常好的IDE Vscode配置C 43 43 VScode配置C 43 43 的详细过程 xff0c 请看官网 xff1a Get Started
  • BlockCode 少儿编程 1《拔萝卜》

    1题目 34 拔萝卜 34 34 拔萝卜 xff0c 拔萝卜 xff0c 嗨呦拔萝卜 老太婆 xff0c 小姑娘 xff0c 小黄狗 xff0c 小花猫快来一起拔萝卜 34 34 老太婆 xff0c 小姑娘 xff0c 小黄狗 xff0c
  • Wifiphisher —— 非常非常非常流氓的 WIFI 网络钓鱼框架

    编者注 xff1a 这是一个非常流氓的 WIFI 网络钓鱼工具 xff0c 甚至可能是非法的工具 xff08 取决于你的使用场景 xff09 在没有事先获得许可的情况下使用 Wifiphisher 攻击基础网络设施将被视为非法活动 使用时请
  • BlockCode 少儿编程 2 《做早操》

    1 题目 34 做早操 34 34 小朋友们排成一队做早操 xff0c 小明前面有4个小朋友 xff0c 后面有3个小朋友 34 34 4个同学 xff0c 3个同学 34 34 这队一共多少个小朋友 xff1f 34 2 编程知识 CPU
  • BlockCode 少儿编程 10 《分铅笔》

    1 题目 34 分铅笔 34 34 妈妈给姐姐买了8支铅笔 xff0c 给弟弟买了4支铅笔 xff0c 姐姐分给弟弟 xff0c 使得姐弟俩两人的铅笔一样多 34 34 8支 xff0c 4支 34 34 姐姐最后有几只铅笔 xff1f 3
  • USB3.0扩展坞集线器Hub引起鼠标卡顿飘解决方法

    大部分USB3 0扩展坞集线器Hub会引起鼠标卡顿飘 xff0c 尤其是无线鼠标 蓝牙鼠标 xff0c 无线键盘也会出现输入迟缓的问题 mac 和 Windows都是这样 解决方法 xff1a 1 xff09 usb3 0集线器插入2 0接
  • 禁止鼠标唤醒睡眠的电脑,无线鼠标、蓝牙鼠标

    经常一不小心碰到鼠标就会唤醒睡眠的电脑 xff0c 有时咳嗽声大一点也能唤醒 解决方法 xff1a xff08 1 xff09 打开 设备管理器 在 此电脑 上右键 xff0c 属性 左侧找到设备管理器 或者 xff0c 在开始按钮上右键
  • C#与C++ dll 之间传递字符串string wchar_t* char* IntPtr

    1 由C 向C 43 43 dll 传入字符串时 xff0c 参数直接用string xff0c 设置编码格式 CharSet Unicode CharSet Ansi C 43 43 dll接收使用wchar t 或 char 2 由C
  • SwiftUI 导航 NavigationStack NavigationLink navigationDestination

    导航的显示区域使用NavigationStack 导航的新视图会显示在NavagationStack中 左右分栏导航使用NavigationSplitView 触发导航的按钮使用NavigationLink 示例1 显示颜色视图 struc
  • SwiftUI 数组初始化 append 不工作 无效 init中 State Array

    State的数组在初始化函数init是不能添加数据的 xff0c append在init中无效 xff0c 不能添加数据 实现方法如下 xff1a 采用视图控件的回调函数 appear if myArray count 61 61 0 my
  • SwiftUI List 中 多个 按钮 button 同时触发 buttonStyle

    在list中的一个单元格中设置多个按钮会出现同时触发的问题 xff0c 解决方法是增设按钮的类型属性 buttonStyle borderless 在List的单元格中 xff0c 按钮的下面 buttonStyle borderless
  • 隐私策略

    隐私权声明 软件注重对您的个人隐私的保护 我们不会在任何情况下收集您的信息 本隐私权声明适用于本软件的所有相关服务 您个人信息的搜集 本软件不收集任何您的个人信息 控制您的个人信息 本软件不控制您的任何个人信息 您个人信息的安全 严格保护您
  • MMPlayer同步文件到手机应用中的方法

    自己准备好要同步的文件 xff0c 如mp3 mp4 xff0c 然后按照如下操作 xff1a xff08 1 xff09 mac电脑插上iPhone xff08 2 xff09 打开访达Finder xff08 3 xff09 在左上列表
  • 全世界到底有多少软件开发人员?

    埃文斯数据公司 Evans Data Corporation 2019 最新的统计数据 xff08 原文 xff09 显示 xff0c 2018 年全球共有 2300 万软件开发人员 xff0c 预计到 2019 年底这个数字将达到 264
  • 并查集【通俗易懂】【知识点】

    为了解释并查集的原理 xff0c 我将举一个有爱的例子 话说江湖上散落着各式各样的大侠 xff0c 有上千个之多 他们没有什么正当职业 xff0c 整天背着剑在外面走来走去 xff0c 碰到和自己不是一路人的 xff0c 就免不了要打一架
  • QtreeWiget各节点之间连线样式设置

    QTreeWidget树状图默认各节点直接是没有线连接的 xff0c 看着层次感不强 xff0c 用户体验不太好 xff0c 所以需要设置一下样式 方法一 xff1a 通过对qtreewidget进行qss样式设置 效果图如下 xff1a
  • gitlab安装部署及问题解决(实践篇)

    系统环境 xff1a centos7 9 gitlab版本 xff1a 11 1 4 一 GitLab简介 GitLab 是一个用于仓库管理系统的开源项目 xff0c 使用Git作为代码管理工具 xff0c 并在此基础上搭建起来的web服务