4.gitlab详解
1.什么是gitlab
gitlab是一个开源分布式的版本控制系统,ruby语言开发完成
2.gitlab的作用
1).对项目的源代码进行集中管理,方便查看
2).可以对源代码进行源码控制
3).权限管理,能控制用户的增删改查代码的权限
4).不依赖互联网环境
3.为什么用gitlab
1).开源免费,维护简单。适合中小型企业
2).能定期的对数据进行备份,防止数据的丢失。
4.gitlab安装配置优化
4.1 gitlab安装
setenforce 0 #管理selinux
systemctl stop firewalld && systemctl disable firewalld #关闭防火墙
yum install -y curl openssh-server postfix wget #安装组件
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.0.0-ce.0.el7.x86_64.rpm #下载rpm包
yum localinstall -y gitlab-ce-15.0.0-ce.0.el7.x86_64.rpm #安装gitlab的rpm包
4.2 配置gitlab
配置gitlab域名
external_url 'http://gitlab.rongbiz.com'
4.3 配置gitlab邮箱
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.126.com"
gitlab_rails['smtp_port'] = 25 # 网易端口为25
gitlab_rails['smtp_user_name'] = "xcv-12345@126.com"
gitlab_rails['smtp_password'] = "RKONWQJDMRNVNMHS" # POP3/SMTP/IMAP服务授权密码
gitlab_rails['smtp_domain'] = "126.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_display_name'] = 'gitlab-administortra' # 显示名字
gitlab_rails['gitlab_email_from'] = "xcv-12345@126.com" # 发件邮箱
user["git_user_email"] = "xcv-12345@126.com"
4.4 关闭gitlab组件
由于gitlab核心功能是代码托管,有些额外的组件比较浪费资源,所以考虑关闭。
prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false
grafana['enable'] = false
4.5 gitlab初始化组件
第一次需要初始化gitlab服务,后续如果对gitlab配置文件进行修改,也需要执行初始化进行重新配置
gitlab-ctl reconfigure
gitlab-ctl status
gitlab-ctl stop
gitlab-ctl start
4.6 gitlab配置文件
external_url 'http://gitlab.rongbiz.com'
gitlab_rails['time_zone'] = 'Asia/Shanghai' #时区
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_display_name'] = 'gitlab-administortra' # 显示名字
gitlab_rails['gitlab_email_from'] = "tec@rongbiz.com" # 发件邮箱
user["git_user_email"] = "tec@rongbiz.com"
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465 # 网易端口为25
gitlab_rails['smtp_user_name'] = "tec@rongbiz.com"
gitlab_rails['smtp_password'] = "xxxxxxxxxx" # POP3/SMTP/IMAP服务授权密码
gitlab_rails['smtp_domain'] = "rongbiz.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false
grafana['enable'] = false
4.7 验证gitlab邮箱
gitlab-rails console
# irb(main):001:0>
# Notify.test_email(‘接收方地址’,‘邮件标题’,‘邮件内容’).deliver_now
Notify.test_email('xxxxxxxxxxx@qq.com','hello','hello').deliver_now
5.gitlab用户与用户组
user1(user)
dev(group) --> project项目
user2(user) /
ps:
- 如果使用user创建一个仓库 那么这个仓库的owner是user
- 如果使用group创建一个仓库 那么这个仓库的owner是group
5.1 用户组的权限
- 主程序员: 能够对master dev 分支进行操作
- 开发者: 仅能对分支进行操作
6.gitlab升级
升级步骤
gitlab-ce-12.3.5 --> gitlab-ce-12.10.9(当前大版本的最新版) --> gitlab-ce-13.0.0 --> gitlab-ce-13.12.9(当前大版本的最新版)
yum localinstall gitlab-ce-xxxxx
7.gitlab忘记密码
1.在 root 用户下执行
gitlab-rails console -e production
2.获得用户数据,修改用户密码
irb(main):001:0> user=User.where(id:1).first
#更改密码并确认密码
irb(main):002:0> user.password="rongbiz"
irb(main):003:0> user.password_confirmation="rongbiz"
#保存退出
irb(main):004:0> user.save!
irb(main):005:0>quit
nginx反向代理gitlab服务
upstream git {
server 172.16.0.122:80;
}
server {
listen 80;
server_name gitlab.xxxx.com gitlab.xxxx.net;
access_log /var/log/nginx/gitlab_access.log main;
access_log /var/log/nginx/c2p_access.log json;
error_log /var/log/nginx/gitlab_error.log ;
#开启http1.1 长连接传输
proxy_http_version 1.1;
proxy_set_header Connection "";
#开启cache
proxy_buffering on;
proxy_buffer_size 64k;
proxy_buffers 4 64k;
location / {
#屏蔽外放ip访问 允许公司ip访问这个location
if ( $remote_addr !~ "(123.235.50.95|180.76.155.107|27.223.91.246|47.105.104.152|39.65.7.8|112.255.189.136|221.215.113.150|180.76.155.107|112.255.189.136|27.223.12.118|121.196.178.117|121.41.122.24|47.105.50.218|118.178.142.13|120.55.93.127|222.173.94.214)" ) {
rewrite ^(.*) https://www.rongbiz.com redirect;
}
# 设置最大允许上传单个的文件大小
client_max_body_size 2048m;
proxy_redirect off;
#以下确保 gitlab中项目的 url 是域名而不是 http://git,不可缺少
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 反向代理到 gitlab 内置的 nginx
proxy_pass http://git;
index index.html index.htm;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构