当前位置: 首页 > news >正文

linux下安装gitlab

检查当前系统 yum --version
关闭防火墙 / 放行端口(80、443、22) # 放行端口 firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --permanent --add-service=ssh firewall-cmd --reload

2.安装依赖

yum install -y curl policycoreutils-python openssh-server openssh-clients postfix systemctl enable sshd && systemctl start sshd systemctl enable postfix && systemctl start postfix

3.导入gutlab官方源(社区免费版)

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash

4.安装gitlab,绑定域名

EXTERNAL_URL="https://***.***.com" yum install -y gitlab-ce

5.配置文件

1.gitlab配置

vim /etc/gitlab/gitlab.rb # 对外访问域名 external_url 'https://***.***.com' # 使用自带nginx 配置SSL证书路径 nginx['ssl_certificate'] = "your.crt" nginx['ssl_certificate_key'] = "your.key" nginx['listen_port'] = 443 nginx['redirect_http_to_https'] = true # 或使用全局nginx代理 # 关闭 GitLab 内置 Nginx nginx['enable'] = false # 网络类型(默认tcp) gitlab_workhorse['listen_network'] = "tcp" # workhorse接收代理请求端口 gitlab_workhorse['listen_addr'] = '127.0.0.1:9000' # workhorse转发到Puma后端地址 gitlab_workhorse['auth_backend'] = 'http://localhost:8080' # 固定Puma应用端口 gitlab_rails['puma_port'] = 8080 # 设置全站默认简体中文 gitlab_rails['gitlab_default_language'] = "zh_CN" # 开启完整翻译加载 gitlab_rails['extra_languages'] = ["zh_CN"] # 开启SMTP邮件发送功能,false则Gitlab不会发任何邮件(注册通知、密码重置、合并提醒等) gitlab_rails['smtp_enable'] = true # 邮箱服务商的SMTP服务器地址,如qq是smtp.qq.com、163是smtp.163.com gitlab_rails['smtp_address'] = "xxx.xxx.com" # TLS加密端口,465是绝大多数邮箱SSL/TLS专用端口;普通无加密端口常用25 gitlab_rails['smtp_port'] = 465 # 用来登录发信服务器的完整邮箱账号 gitlab_rails['smtp_user_name'] = "你的发件邮箱" # 邮箱登录凭证:普通邮箱填登录密码;QQ/163等第三方邮箱必须填【授权码】,不能填登录密码 gitlab_rails['smtp_password'] = "邮箱密码/授权码" # 邮箱域名,和smtp地址后缀一致,xxx.com对应前面smtp.xxx.com gitlab_rails['smtp_domain'] = "xxx.com" # 认证方式,固定填login,主流邮箱都适配这种账号密码校验模式 gitlab_rails['smtp_authentication'] = "login" # 自动开启STARTTLS安全加密传输,防止邮件内容明文泄露 gitlab_rails['smtp_enable_starttls_auto'] = true # 强制启用SSL/TLS加密,搭配465端口必须开启,25端口一般关闭此项 gitlab_rails['smtp_tls'] = true # 收件人邮箱里看到的【发件人名称/邮箱】,统一伪装成gitlab@bjljsy.com发出邮件 gitlab_rails['gitlab_email_from'] = 'xxx@xxx.com'

2.全局nginx代理

server { listen 80; server_name ***.***.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name ***.***.com; ssl_certificate your.crt; ssl_certificate_key your.key; location / { # gitlab 监听的端口 proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Connection ""; } }

六.常用命令

gitlab-ctl restart # 全部重启 gitlab-ctl status # 查看所有组件运行状态 gitlab-ctl tail # 实时查看日志排错 gitlab-ctl stop # 停止服务 # 重新编译加载所有翻译语言包 gitlab-rake gettext:compile # 查看gitlab当前版本 gitlab-rake gitlab:env:info | grep Version # 直接升级到最新稳定社区版 yum update gitlab-ce ss -ltnp | grep 8080 # 确认 gitlab-workhorse 监听 8080 端口 free -h # 检查内存

七.登录后台

管理员账号:root 查看初始密码 cat /etc/gitlab/initial_root_password

复制 20 位密码,浏览器打开:https://***.***.com

时效规则:执行一次 gitlab-ctl reconfigure 后 24 小时,该文件会被 GitLab 自动删除。
密码登录失败(已改过密码 / 文件即将失效)使用 Rails 控制台强制重置 root 密码

# 进入gitlab rails交互终端 gitlab-rails console # 查询root管理员用户 user = User.where(username: 'root').first # 设置新密码(替换成你自己的高强度密码) user.password = '新密码123456!' user.password_confirmation = '新密码123456!' # 保存生效 user.save! # 退出控制台 exit
#给 root 管理员设置中文 gitlab-rails console user = User.find_by(username: 'root') user.preferred_language = 'zh_CN' user.save! exit #批量给所有存量用户统一设置中文(可选) gitlab-rails console User.all.each do |u| u.preferred_language = 'zh_CN' u.save! rescue nil end exit # 查看文件权限与归属 ls -l /opt/gitlab/embedded/service/gitlab-rails/locale/gitlab.pot # 放开写入权限 chmod u+w /opt/gitlab/embedded/service/gitlab-rails/locale/gitlab.pot chown -R git:git /opt/gitlab/embedded/service/gitlab-rails/locale/ chmod -R 755 /opt/gitlab/embedded/service/gitlab-rails/locale/

八.常见故障

1.502 Bad Gateway

内存不足,临时加交换分区

fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile
http://www.jsqmd.com/news/984629/

相关文章:

  • 基于Keras的垃圾分类图像识别实战包(含训练模型、50张实拍测试图与完整设计报告)
  • SpringData JPA也能写sql,为什么还要用mybatis?
  • 物理层的FPGA实现的思考总结(1)
  • Paperxie 工科攻坚利器:AI 代码生成一键搞定毕业论文程序源码难题
  • 防眩光AG+硬化复合板厂家推荐:复合功能板适合哪些应用场景
  • 番禺洛浦奢侈品回收第一名|金小福名表名包名酒钻石翡翠黄金全品类专业回收 - 花生花生1
  • PyMuPDF:这个 Python 库,把 PDF 所有操作都覆盖了
  • 苹果WWDC26引爆全端AI产品,Meta/WIMI微美全息加速抢滩XR眼镜硬件市场
  • BiliBili-UWP桌面版终极秘籍:告别卡顿,打造你的专属B站体验
  • 2026年AI问答流量服务公司选购指南:技术架构、行业应用与决策框架 - 优质品牌商家
  • LumeValley|企业级Agent全栈开发,AI智能体规模化落地
  • 2026必看!独立开发者高性价比AI编程工具大全
  • Boss-Key:Windows用户的隐私守护神,一键隐藏窗口的终极解决方案
  • 2026 主流 GEO 源码厂商实测:云罗 GEO、摘星智能、棋引科技技术与落地能力对比
  • Effective C++ 条款06:若不想使用编译器自动生成的函数,就应该明确拒绝
  • 重新定义音乐自由:插件化播放器如何让你真正掌控音乐体验
  • 抗垢水路:SEGE在硬水地区保持清爽
  • idea+git插件+云备份实现项目新分支新建维护
  • 视觉伺服:基于图像的IBVS与基于位置的PBVS
  • 如何让《Honey Select 2》游戏体验全面升级:HS2-HF_Patch终极指南
  • Whisky终极指南:在macOS上轻松运行Windows程序的5个简单步骤
  • 3分钟搞定Windows和Office激活:KMS_VL_ALL_AIO智能脚本全解析
  • 3个月完成全链路升级:300人汽配制造企业SAP升级落地真实案例
  • 告别手忙脚乱:如何用League-Toolkit让英雄联盟游戏体验更丝滑
  • Docker Compose 深度剖析:一文打尽所有配置信息
  • 基于Spring Boot的智能停车导航与管理系统设计与实现
  • MPV播放器终极配置指南:从零构建专业级媒体播放体验
  • 阿里云Linux部署PHP项目:LNMP搭建+域名HTTPS+性能优化全流程
  • 前端周刊2026W22 | React 13周年、TanStack Router、Deno 2.8、Node.js 26、npm 分阶段发布
  • 【人工智能】Gemini回复:“Cherry studio跟Monica 选一个,你选谁?理由是?”