gitlab部署

系统版本

[root@localhost ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux release 9.1 (Plow)

gitlab包位置

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/yum/el9/gitlab-ee-16.7.2-ee.0.el9.x86_64.rpm

关闭防火墙

[root@localhost data]# systemctl stop firewalld
[root@localhost data]# systemctl disable firewalld
[root@localhost data]# getenforce 
Enforcing
[root@localhost data]# setenforce 0
[root@localhost data]# getenforce 
Permissive
[root@localhost data]# vim /etc/selinux/config 
[root@localhost data]# cat /etc/selinux/config |grep -v '#'|grep 'SELINUX='
SELINUX=disabled

安装gitlab

[root@localhost data]# yum -y install gitlab-ee-16.7.2-ee.0.el9.x86_64.rpm 

许可证生成

ruby安装
[root@localhost data]# yum -y install ruby.x86_64 
查看ruby版本
ruby -v
安装gitlab-license
gem install gitlab-license
创建生成ruby证书的源文件 license.rb
require "openssl"
require "gitlab/license"key_pair = OpenSSL::PKey::RSA.generate(2048)
File.open("license_key", "w") { |f| f.write(key_pair.to_pem) }public_key = key_pair.public_key
File.open("license_key.pub", "w") { |f| f.write(public_key.to_pem) }private_key = OpenSSL::PKey::RSA.new File.read("license_key")
Gitlab::License.encryption_key = private_keylicense = Gitlab::License.new
license.licensee = {"Name" => "none","Company" => "none","Email" => "example@test.com",
}
license.starts_at = Date.new(2020, 1, 1) # 开始时间
license.expires_at = Date.new(2050, 1, 1) # 结束时间
license.notify_admins_at = Date.new(2049, 12, 1)
license.notify_users_at = Date.new(2049, 12, 1)
license.block_changes_at = Date.new(2050, 1, 1)
license.restrictions = {active_user_count: 10000,
}puts "License:"
puts licensedata = license.export
puts "Exported license:"
puts data
File.open("GitLabBV.gitlab-license", "w") { |f| f.write(data) }public_key = OpenSSL::PKey::RSA.new File.read("license_key.pub")
Gitlab::License.encryption_key = public_keydata = File.read("GitLabBV.gitlab-license")
$license = Gitlab::License.import(data)puts "Imported license:"
puts $licenseunless $licenseraise "The license is invalid."
endif $license.restricted?(:active_user_count)active_user_count = 10000if active_user_count > $license.restrictions[:active_user_count]raise "The active user count exceeds the allowed amount!"end
endif $license.notify_admins?puts "The license is due to expire on #{$license.expires_at}."
endif $license.notify_users?puts "The license is due to expire on #{$license.expires_at}."
endmodule Gitlabclass GitAccessdef check(cmd, changes = nil)if $license.block_changes?return build_status_object(false, "License expired")endendend
endputs "This instance of GitLab Enterprise Edition is licensed to:"
$license.licensee.each do |key, value|puts "#{key}: #{value}"
endif $license.expired?puts "The license expired on #{$license.expires_at}"
elsif $license.will_expire?puts "The license will expire on #{$license.expires_at}"
elseputs "The license will never expire."
end
生成证书
[root@localhost data]# ruby license.rb
License:
#<Gitlab::License:0x00007f8c819aedf8>
Exported license:
eyJkYXRhIjoiT0FKSDd6Mmw1S2k1Z3pWb2FJN0E5YSt1ZlE0bkxmN3JtOVQ1
bm5BVkozc29pVXN0cHNwYzdWUmN4amNyXG54dkR3QURDWkRQLzdpandMWFM0
SEozY0FYRVFHakNLbWNNaUxYQXFtanJtVitzZ0pnOGlQY1FCdlo0OUpcblpS
VjU0NkNTWEdQL1kzc081MkU5dGF3dHY1VS9YanNkbzdBczFWNmd2SittelNm
MVowRWZNaHExd0x4V1xuZEFCdk9aUklaOUM0V0xaZjk0SXRDalNjMnVFTk5H
ZkhVWDljZUxhR05wZnpMMlRLRTE3a3ZIc0xIcVdvXG5WVGEyTk83L04xVGt0
UDljTFcwOFNVRUJBZEJlK25adnBEaXNWV3JadC94UXBUVXZSV1kwcUFDU01z
NHNcbmxBYWZabWVCdFoyZUx6bnNUZW1XVnNkUDJjNDh5RTRjaGVMNUU0U3RF
V1N4cmV5bUZGam91QTlRTkF0N1xuRzBLNlV0U2MwZnRmUDNtMXpua29XQlFk
a29nNnN6dERQRTVodC9MN0lGY2txZzZ2OHc4NStlT0RRY0Y3XG4yZDZyaDZO
T1JMeWhGankwQ1Q5b1R5UDJma3VidUxtZjRjaDMrK2xaekMyT2hDdndvOG9p
SE9iSnhqRHRcbitIdGtjTXNEbTZJaFlydjlvcmliWWhNa3RabFVxNHlQRWF1
Ym5YM2k2SDZENVQ3UGRwWDhOUmNPR0VZM1xuQm04SlpDQk1HTThudUREbXY4
L2l6ZDBtczF0ajRrUm1OMnE1T3BOQzdjTVJybUw2YWU3ek9STmdMOWo1XG40
eDNDSWpzWFVXaDFMVmtvSmZqS2ZKVHlObkZneGl6dzg2RUVnMFo2R3VZR1Bj
eUFLL0YzVDRaMHpocEtcbkNRclE5Sy9FLzFQYW16UWlmcDY1UlorVlJlTTlk
ZlArdmVCRGh4V3JPRVpDXG4iLCJrZXkiOiJxeGxZMXNwWVpEMWtlOEk5ZkxY
RFBXdTRjVTBhVm0zaHhPR3VPVit2aWRrc2liT05kd1JGbFlEN1J4cEVcbmZk
L0pmMjRiVmgwWTV0dW8zVkNXTHlRTVRuSFVIa2h5SVV1aGhHNkNCZGQ5aW1O
YkVFYzFESE5ZN3N1NVxuR3lQeWNUSkxIZGxlVjRSUzIvV3VLQkwxRFcwYnRO
NmxCMGJXME5XNjdDWFRteXlFWnQ1bFdBMWtsQ1krXG5xcmRrUzZObW43cTdV
WjNxK0ZJang5Y3pld281S3lCQ2RFbUxGRG5EL2t2a1pEQlMyTTRJTC9MaTAz
dDVcbjAwMlhsb2dTSXFPM1VubGM1TUV4WkMrdnVHNGFNYVFtT29pdUhXbmhq
UVBRb3BlQlBZdENSTTJZRk9oblxuUTIyVVRMdndIUXpERDVaV08rZ2M2MURP
bTBzWWMwNlYvazcyYTZRMjF3PT1cbiIsIml2IjoiMzdGVWxtT2dkZ09ic0Nr
eVFqMk5Pdz09XG4ifQ==
Imported license:
#<Gitlab::License:0x00007f8c819b3038>
This instance of GitLab Enterprise Edition is licensed to:
Name: none
Company: none
Email: example@test.com
The license will expire on 2050-01-01
生成的三个文件,GitLabBV.gitlab-license为许可证
GitLabBV.gitlab-license license_key  license_key.pub 
使用许可证
cp license_key.pub /opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub
重启gitlab加载许可证
gitlab-ctl restart
修改证书等级
vi /opt/gitlab/embedded/service/gitlab-rails/ee/app/models/license.rb
# 将
# restricted_attr(:plan).presence || STARTER_PLAN
# 替换成
# restricted_attr(:plan).presence || ULTIMATE_PLAN
重新加载配置
gitlab-ctl reconfigure

账密及登陆

初始账密,账户为root
cat /etc/gitlab/initial_root_password

密码更改

命令行密码更改
<root@gitlab ~># cd /opt/gitlab/bin
<root@gitlab bin># gitlab-rails console
[root@localhost ~]# gitlab-rails console
--------------------------------------------------------------------------------Ruby:         ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5) [x86_64-linux]GitLab:       15.7.2 (a72992de385) FOSSGitLab Shell: 14.14.0PostgreSQL:   13.8
------------------------------------------------------------[ booted in 30.12s ]
Loading production environment (Rails 6.1.6.1)
irb(main):001:0> u=User.where(id:1).first
=> #<User id:1 @root>
irb(main):002:0> User.all
=> #<ActiveRecord::Relation [#<User id:1 @root>]>
irb(main):003:0> u.password='ghx778899'
=> "ghx778899"
irb(main):004:0> u.password_confirmation='ghx778899'
=> "ghx778899"
irb(main):005:0> u.save!
=> true
irb(main):006:0> exit
页面更改密码
http://192.168.73.150/-/profile/password/edit
填写旧密码,新密码,新密码确认,Save password
登陆gitlab,并上传许可证
http://192.168.73.30/admin/application_settings/general
Add License ➔ Expand ➔ 选择上面的 GitLabBV.gitlab-license 然后上传(Add license)  ➔ 勾选服务条款 ➔ 点击 添加许可证

查看激活信息

http://192.168.73.30/admin/subscription

页面设置为中文

http://192.168.73.150/-/profile/preferences
Localization ➔ Language ➔ 简体中文 ➔ Save changes

关闭任意注册功能

http://192.168.73.30/admin/application_settings/general
注册限制 ➔ 已启用注册功能(勾选框去掉) ➔ 保存更改

更改项目中使用git push或者pull 指向的地址

vi /etc/gitlab/gitlab.rb
将 external_url 'http://gitlab.example.com'
改为 external_url 'http://192.168.73.30'

启用https

配置加密认证文件
输入的密码为: KDJF*lkskd_234KDKlk55
#  openssl genrsa -des3 -out nginx.key 2048  #实际使用中看服务器性能,如果足够好也可以使用4096位秘钥
Generating RSA private key, 1024 bit long modulus
.......++++++
...++++++
e is 65537 (0x10001)
Enter pass phrase for nginx.key:                 #输入密码,自定义,不少于4个字符
Verifying - Enter pass phrase for nginx.key:     #确认密码# openssl req -new -key nginx.key -out nginx.csr
Enter pass phrase for nginx.key:                             #输入刚刚创建的密码# openssl rsa -in nginx.key -out nginx_nopass.key
Enter pass phrase for nginx.key:        #之前RSA秘钥创建时的密码
writing RSA key# openssl x509 -req -days 3650 -in nginx.csr  -signkey nginx.key -out nginx.crt    
Signature ok
subject=/C=CN/ST=ShangHai/L=ShangHai/O=ACBC/OU=Tech/CN=*.mydomain.com/emailAddress=admin@mydomain.com
Getting Private key
Enter pass phrase for nginx.key:          #RSA创建时的密码# ls
nginx.crt  nginx.csr  nginx.key  nginx_nopass.key
配置gitlab配置文件
[root@localhost data]# cp nginx* /etc/gitlab/
[root@localhost data]# ll /etc/gitlab/nginx*
-rw-r--r--. 1 root root 1115  1月 12 19:35 /etc/gitlab/nginx.crt
-rw-r--r--. 1 root root  952  1月 12 19:35 /etc/gitlab/nginx.csr
-rw-------. 1 root root 1854  1月 12 19:35 /etc/gitlab/nginx.key
-rw-------. 1 root root 1704  1月 12 19:35 /etc/gitlab/nginx_nopass.key
[root@localhost data]# chmod 755 /etc/gitlab/nginx*[root@localhost data]# vim /etc/gitlab/gitlab.rb
external_url 'https://192.168.73.30'
nginx['ssl_certificate'] = "/etc/gitlab/nginx.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/nginx_nopass.key"
重新配置gitlab
[root@localhost data]#  gitlab-ctl reconfigure
重新访问gitlab
gitlab新地址:
https://192.168.73.30

gitlab操作

gitlab状态查看:  gitlab-ctl status
gitlab启动:     gitlab-ctl start
gitlab停止:     gitlab-ctl stop
gitlab重启:     gitlab-ctl restart
gitlab重新加载配置文件: gitlab-ctl reconfigure

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/616545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Docker 部署 Halo 博客系统

:::info 项目地址&#xff1a;https://github.com/halo-dev/halo ::: 一、Halo 介绍 1&#xff09;Halo 简介 Halo 是一款强大易用的开源建站工具&#xff0c;它让你无需太多的技术知识就可以快速搭建一个博客、网站或者内容管理系统。具备可插拔架构、主题套用、富文本编辑器…

Hive数据定义(1)

hive数据定义是hive的基础知识&#xff0c;所包含的知识点有&#xff1a;数据仓库的创建、数据仓库的查询、数据仓库的修改、数据仓库的删除、表的创建、表的删除、表的修改、内部表、外部表、分区表、桶表、表的修改、视图。本篇文章先介绍&#xff1a;数据仓库的创建、数据仓…

CCF模拟题 202305-1 重复局面

试题编号&#xff1a; 202305-1 试题名称&#xff1a; 重复局面 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 题目背景 国际象棋在对局时&#xff0c;同一局面连续或间断出现3次或3次以上&#xff0c;可由任意一方提出和棋。 问题描述 国际象棋每一个局面可以用…

Postman接口测试工具最全实用教程

一、postman简介 1、postman的特点 postman只做http协议的接口的测试&#xff0c;是一种最广泛REST接口测试客户端软件。postman支持http协议的所有请求方式&#xff0c;包括get、post、head、put、delete等。postman支持各种额外的头部字段的添加。postman除了可以模拟普通表…

C语言快速排序——qsort函数

上面的是我们标准C语言库里面对qsort函数的介绍&#xff0c;我们先来从排序说起&#xff1a; 这就不得不提出编程中最最基础的排序算法---冒泡排序 对于一个任意的无序数列&#xff0c;我们如果想要把他排成顺序数列的话&#xff0c;我们就可以让每一项跟后面的一项去比较&…

【设计模式】builder 创建者设计模式详解(包含电商应用场景及代码示例)

一、builder 简介 在常见的设计模式中&#xff0c;“Builder” 通常是指一种设计模式&#xff0c;而不是具体的类或方法。Builder 模式是一种创建型设计模式&#xff0c;其目的是通过提供一个独立的构建器类来构建一个复杂对象。 建造者模式&#xff08;Builder Pattern&…

大模型在游戏行业的应用分析

文章目录 一、大模型作用1&#xff09;节省美术成本2&#xff09;模仿用户肖像&#xff0c;精准投放3&#xff09;买量流程的自动化4&#xff09;缩短视频素材制作周期5&#xff09;例如新营销形式宣传&#xff08;图生图&#xff09;5&#xff09;故事设计6&#xff09;辅助代…

figma导入psd实战笔记

最近发现figma特别好用 并且插件生态特别庞大 如 将设计图转成vue react react-native 项目 flutter 项目 最重要的是 可以集成vscode 插件使用 使用蓝湖久了 感觉蓝湖 有写繁琐 同事扩展功能有限 Figma: The Collaborative Interface Design ToolFigma is the leading collabo…

欧拉函数算法总结

知识概览 欧拉函数为1~n中与n互质的数的个数。假设一个数N分解质因数后的结果为 则欧拉函数 这可以用容斥原理来证明。 欧拉函数的应用 欧拉定理&#xff1a;若a与n互质&#xff0c;则。 费马小定理&#xff1a;欧拉定理中的n为质数p时&#xff0c;可以得到若a与p互质&#xff…

深入理解计算机系统(2):信息的表示和处理

信息存储 大多数计算机使用 8 位的块&#xff0c;或者字节(byte)&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c;称为虚拟内存(virtual memory)。内存的每个字节都由一个唯一的数字来标识…

vcruntime140_1.dll无法继续执行代码怎么办?6个修复方法分享

找不到vcruntime1401.dll”。这个错误提示通常意味着我们的计算机缺少了一个重要的动态链接库文件。本文将介绍vcruntime1401.dll是什么文件、它的作用以及当电脑丢失该文件时可能产生的影响&#xff0c;并提供6个解决方法来解决这个问题。 一、vcruntime1401.dll是什么文件&a…

Linux指令(一)

今天来学习Linux的一些基本的指令。 今天要学习的指令有ls&#xff0c;pwd&#xff0c;mkdir&#xff0c;cd&#xff0c;touch&#xff0c;rm等。 指令的格式 在Linux中&#xff0c;指令的语法通常遵循以下格式&#xff1a; command [options] [arguments] command 是要执行…

便捷特惠的快递寄件快递物流折扣平台 ,通常都有什么常见问题?

首先&#xff0c;最重要的一点是怎么寄快递更便宜&#xff1f; 我们在寄快递时&#xff0c;尽量把包裹压缩空间大一点&#xff0c;这样在体积上面就会减少一部分的费用呢&#xff0c;另外就是选择有优惠的平台下单。例如在闪侠惠递平台下单&#xff0c;单单打折&#xff0c;单…

AC修炼计划(AtCoder Beginner Contest 335)A-F

传送门&#xff1a; AtCoder Beginner Contest 335 (Sponsored by Mynavi) - AtCoder A&#xff0c;B&#xff0c;C&#xff0c;D还算比较基础&#xff0c;没有什么思路&#xff0c;纯暴力就可以过。 这里来总结一下E和F E - Non-Decreasing Colorful Path 最开始以为是树形…

终于学会听英文歌了:Because of You

作词 : Ben Moody/David hodges/Kelly Clarkson 作曲 : Ben Moody/David hodges/Kelly Clarkson I will not make the same mistakes that you did 我不會 重蹈你的覆轍 I will not let myself cause my heart so much misery 我不會 讓我自己心煩憂苦 I will not break the wa…

【C++】:C++中的STL序列式容器vector源码剖析

⛅️一 vector概述 vector的使用语法可以参考文章&#xff1a;​ 总的来说&#xff1a;vector是可变大小数组 特点&#xff1a; 支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢 元素保存在连续的内存空间中&#xff0c;因此通过下标取值非常快 在容器中间位置添加…

自研OS,手机厂商的「私心」与软件厂商的「灾难」

作者 | 辰纹 来源 | 洞见新研社 在卷完了配置参数&#xff0c;影像跑分&#xff0c;屏幕快充、存储影像、续航折叠……手机还能怎么卷&#xff1f; 过去的2023年&#xff0c;手机厂商们不约而同的将目标瞄准了自研系统。 站在民族情感层面&#xff0c;中国手机“去安卓化”…

Springboot+vue学生考试系统

Springbootvue学生考试系统 演示视频 【Springbootvue学生考试系统】 https://www.bilibili.com/video/BV1gk4y1Q7em/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 主要功能&#xff1a; 管理员可以添加题库分配课程教师&#xff0c;指定考试范围指定…

SpringMVC拦截器 (Interceptor)

什么是拦截器 Spring MVC中的拦截器&#xff08;Interceptor&#xff09;类似于Servlet中的过滤器&#xff08;Filter&#xff09;&#xff0c;它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、判断用户是否登录等。 拦截器依赖于web框架&#xff0c;在…

二极管选型怎么选?常用参数要熟练~

同学们大家好&#xff0c;今天我们继续学习杨欣的《电子设计从零开始》&#xff0c;这本书从基本原理出发&#xff0c;知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例&#xff0c;可以说是全面系统地介绍了电子设计所需的知识…