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

在 Centos 上在线安装 GitLab

作为程序员,其中一个愿望是拥有一个自己的代码存储库。在支持私有部署的代码存储库产品中,GitLab 是比较著名的了,所以今天我总结了一下在 Centos 上安装 GitLab 的过程。

依赖

基础依赖

首先,需要安装部分基础的依赖,需要安装的依赖见如下命令:

yum install -y curl policycoreutils-python openssh-server

上面安装完成之后需要将 sshd 服务设置开机自启并且立即启动:

# 设置开机自启
systemctl enable sshd
# 立即启动 sshd 服务(如果已经启动的话,这句命令可能执行失败)
systemctl start sshd

Postfix 依赖

GitLab 发送邮件的功能需要用到 Postfix

yum -y install postfix# 设置开机自启
systemctl enable postfix
# 立即启动 postfix
systemctl start postfix

开放端口

这里介绍 firewall 防火墙的命令。

首先需要开放 sshd 服务的端口。firewall 可以通过指定服务名称的方式来开放端口:

# 开放 sshd 服务用到的端口
firewall-cmd --add-service=sshd --permanent

可以指定端口开放:

# 开放访问端口,本次教程我们使用 8090 作为范例
firewall-cmd --add-port=8090/tcp --permanent

开放端口之后记得刷新一下防火墙:

firewall-cmd --reload

安装 GitLab

下面的命令是安装 GitLab CE 也就是社区版,如果想要安装 GitLab EE 企业版的话,需要把下面两条命令中的关键字 gitlab-ce 替换为 gitlab-ee 之后再执行命令。

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

更改配置文件

配置文件的位置在这里:/etc/gitlab/gitlab.rb

简单的访问只需要修改配置文件中的 external_url 配置,将其更改为自己的域名,比如我想使用域名:git.a.com,端口是 8090(上面配置的),使用 http 协议,那么这里应该配置:

external_url="http://git.a.com:8090"

注意:
external_url 是用于访问 GitLab 时的URL,显示在地址栏中的和克隆项目时都是使用这个URL作为前面的部分。
但是,这里的配置并不意味着 GitLab 自带的 Nginx 会监听这里的端口

启动 GitLab

这次修改了配置文件,需要让 GitLab 重新配置,所以执行命令:

gitlab-ctl reconfigure

如果只是单纯的启动 GitLab,只需要使用 start 即可:

gitlab-ctl start

安装成功的访问

GitLab 会默认生成一个文本文档: /etc/gitlab/initial_root_password ,这个文件的有效期为 24H,到期后自动删除。里面存储的是 root 账户的密码,记得抓紧时间修改。

进阶 GitLab 的搭建

通常情况下,我们自己搭建好之后向外提供 GitLab 的服务,一般都使用 80(http) 或者 443(https) 端口。当服务器资源较少时(即一台服务器可能安装了多个对外服务,如:GitLab、个人blog等),只能根据域名来区分每个服务了(因为都使用 80 或者 443 端口)。那么此时需要禁用 GitLab 自身的 Nginx 模块,转而使用我们自己的 Nginx(方便分配域名资源)。

注意:
下面的端口都使用 80 端口了。
记得把 external_url 里面的端口删除。

首先,需要禁用 GitLab 自身的 Nginx 模块,修改配置文件中的 nginx['enable']false

nginx['enable'] = false

GitLab 修改配置文件需要 reconfigure

gitlab-ctl reconfigure

接着在我们自己安装 Nginx 的配置文件中增加如下配置:

upstream gitlab {# 下面的写法固定server unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket;
}server {listen 80;server_name gitlab.a.com;location ^~ / {proxy_pass http://gitlab;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

启动或者重启 Nginx:

# 启动 Nginx
nginx
# 重启 Nginx
nginx -s reload

访问 http://gitlab.a.com 就可以了。

使用 https 访问

https 的配置这里就不是重点了,这里说一下 location 模块内的配置,注意最后两行的配置:

location ^~ / {proxy_pass http://gitlab;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 下面的内容不加的话,可能会有 422 错误proxy_set_header X-Forwarded-Proto https;proxy_set_header X-Forwarded-Ssl on;
}

相关文章:

在 Centos 上在线安装 GitLab

作为程序员,其中一个愿望是拥有一个自己的代码存储库。在支持私有部署的代码存储库产品中,GitLab 是比较著名的了,所以今天我总结了一下在 Centos 上安装 GitLab 的过程。 依赖 基础依赖 首先,需要安装部分基础的依赖&#xff…...

模型解释性:SHAP包的使用

本篇博客介绍另一种事后可解释性方法:SHAP(SHapley Additive exPlanation)方法。 1. Shapley值理论 Shapley值是博弈论中的一个概念,通过衡量联盟中各成员对联盟总目标的贡献程度,从而根据贡献程度来进行联盟成员的利益分配,避免…...

算法训练营 day45 动态规划 0-1背包理论 分割等和子集

算法训练营 day45 动态规划 0-1背包理论 分割等和子集 0-1背包理论 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 在下面的讲解中&…...

SSM框架

1.mybatis的底层原理 本质上就是使用反射和动态代理来实现对应的映射关系 2.日志级别 3.传递参数 单个参数的传递和多个参数的传递 Emp selectOne(Param(“xingming”) String name); List selectByCondition(Param(“name”) String name,Param(“sal”) double sal); 4.#和…...

教育行业需要什么样的客服系统?

某教育公司拥有素质教育、成人教育、智慧教育等多个业务板块,日常通过电商、线上媒体、线上线下授课等方式进行业务开展和品牌宣传,取得了非常不错的成绩,受到了很多人的好评反馈。 对于这样一个教育公司,客户来源广泛&#xff0…...

花房集团任命新首席财务官:已跌破IPO发行价,活跃用户下滑

上市刚满2个月,花椒母公司花房集团(HK:03611)的高管就发生了变更。2023年2月12日,花房集团披露的公告显示,董事会宣布赵磊为该公司首席财务官(CFO),自2023年2月10日起生效。 据贝多…...

儿童绘本馆图书借阅租赁知识付费小程序源码交流

1.分类图书 2.书单推荐 4.会员卡次、期限购买 5.借阅时间选择 6.积分签到 7.优惠Q领取 前端uniapp开发 后端thinkphp开发 完全开源 <template> <view class"sp-section sp-index"> <!-- search --> <view class&qu…...

Vue3 中 axios 的安装及使用

目录前言&#xff1a;一、什么是 axios &#xff1f;二、Axios 的配置项三、Axios 的请求方式四、自定义创建实例五、Axios 请求错误处理六、Axios 解决跨域问题七、Axios 请求案例随机笑话大全总结&#xff1a;前言&#xff1a; 在编写vue里的项目时&#xff0c;必须要用和后台…...

Django设计模式以及模板层介绍

MVC和MTV 传统的MVC作用&#xff1a;降低模块间的耦合度&#xff08;解耦&#xff09;Django的MTV模式 作用&#xff1a;降低模块间的耦合度&#xff08;解耦&#xff09;什么是模板 1、模板是可以根据字典数据动态变化的html网页2、模板可以根据视图中传递的字典数据动态生成相…...

Linux信号一门搞定

1.信号是什么&#xff1f; 信号其实就是一个软件中断。 例&#xff1a; 输入命令&#xff0c;在Shell下启动一个前台进程。用户按下Ctrl-C&#xff0c;键盘输入产生一个硬件中断。如果CPU当前正在执行这个进程的代码&#xff0c;则该进程的用户空间代码暂停执行&#xff0c;…...

手撸一个动态Feign,实现一个“万能”接口调用

Feign&#xff0c;在微服务框架中&#xff0c;是的服务直接的调用变得很简洁、简单&#xff0c;而不需要再编写Java Http调用其他微服务的接口。 动态feign 对于fegin调用&#xff0c;我们一般的用法&#xff1a;为每个微服务都创建对应的feignclient接口&#xff0c;然后为每…...

Linux Capabilities 入门

目录 Linux capabilities 是什么&#xff1f; capabilities 的赋予和继承 线程的 capabilities Permitted Effective Inheritable Bounding Ambient 文件的 capabilities Permitted Inheritable Effective 运行 execve() 后 capabilities 的变化 案例 Linux capab…...

驱动 day6

关于设备树的理解&#xff1a; 设备树&#xff08;Device Tree&#xff09;是一种用于特定硬件设备的解释语法树。它用来表示存储有关主板硬件和CPU架构信息的数据在内核中的传递格式&#xff0c;使内核可以更好地了解硬件并支持它们&#xff0c;而不必编写固定的代码。设备节点…...

附录2-tensorflow目标检测

源码来自作者Bubbliiiing&#xff0c;我对参考链接的代码略有修改&#xff0c;网盘地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;dvb1 目录 1 参考链接 2 环境 3 数据集准备 3.1 VOCdevkit/VOC2007 3.2 model_data/voc_classes.txt 3.3 voc_an…...

常见的EMC问题

电磁兼容设计的目的就在于满足产品功能要求、减少调试时间&#xff0c;使产品满足电磁兼容标准的要求&#xff0c;并且使产品不会对系统中的其它设备产生电磁干扰。 电磁兼容设计中常见的问题有哪些&#xff1f; 1、电磁兼容设计可以从电路设计&#xff08;包括器件选择&…...

Redis内存存储效率问题

目录 内存碎片是如何形成的&#xff1f; 如何判断是否有内存碎片&#xff1f; 如何清理内存碎片&#xff1f; INFO命令 面向 Prometheus 的 Redis-exporter 监控 实习期间&#xff0c;了解到&#xff0c;企业级开发中多个项目使用Redis&#xff0c;运行Redis实例的有可能是…...

3.28 haas506 2.0开发教程-example-蓝牙多设备扫描(仅支持M320,HD1)

haas506 2.0开发教程-example-蓝牙多设备扫描案例说明蓝牙信息克隆1.手机蓝牙改名信息克隆代码测试案例说明 开发板扫描蓝牙设备&#xff0c;获取并打印蓝牙设备mac地址。mac地址每个设备不同&#xff0c;且不能更改。本案例仅适用于M320开发板和HD1-RTU。案例使用手机与iBeac…...

C语言经典编程题100例(41~60)

目录41、习题4-4 特殊a串数列求和42、习题4-6 水仙花数43、习题4-7 最大公约数和最小公倍数44、习题7-5 找鞍点45、练习5-1 求m到n之和46、练习5-2 找两个数中最大者47、练习5-3 数字金字塔48、习题5-1 符号函数49、习题5-2 使用函数求奇数和50、习题5-3 使用函数计算两点间的距…...

git日常使用命令

实习这段时间使用了很多git指令来提交代码&#xff0c;简单记录一下日常使用的指令&#xff1a; 提交代码通常顺序&#xff1a; 1.git status 查看本地修改项 2.git add . 提交全部文件 &#xff08;这个 .是全部文件&#xff09;到暂存区 3.git commit -m ‘本次提交的说明’…...

ES6对象展开运算符浅拷贝or深拷贝

ES6中提出的对象展开运算符“…”就是用来展开元素的。有了它就不用代码循环遍历了&#xff0c;偷懒专用。 1. 合并数组 展开原有数组中的所有元素&#xff0c;可以合并成一个新的数组。 var a[1,2,3]; var b[4,5,6]; var c[...a,...b]; console.log(c) // 输出&#xff1a;…...

搭建专属汽车电子测试 AI 助手

专栏&#xff1a;《AI 汽车电子测试实战》第 15 篇 作者&#xff1a;一线汽车电子测试工程师 适合人群&#xff1a;想搭建私有 AI 助手的测试团队、关注数据安全的工程师开篇&#xff1a;为什么需要专属 AI 助手&#xff1f; 这是我上个月在某车企的 AI 部署项目中的真实经历。…...

2026论文降重神器盘点!毕业论文“AIGC痕迹”怎么破?

【CSDN技术引言&#xff1a;拒绝“开源背调”式的学术翻车】 哈喽各位同行和科研圈的战友们。最近后台私信快炸了&#xff0c;今年这届硕博生仿佛遭遇了“灭顶之灾”。某985高校前天出炉的抽检结果直接把大家看傻了&#xff1a;明明自己逐字逐句手敲的论文&#xff0c;知网查重…...

OpenClaw技能扩展指南:为GLM-4.7-Flash添加自定义功能

OpenClaw技能扩展指南&#xff1a;为GLM-4.7-Flash添加自定义功能 1. 为什么需要自定义技能 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动整理电脑上的照片时&#xff0c;发现现有的技能库无法满足我的特殊需求——按照拍摄地点和人物自动分类。这让我意识到&#xff0…...

OpenClaw技能开发入门:为百川2-13B量化模型定制自动化模块

OpenClaw技能开发入门&#xff1a;为百川2-13B量化模型定制自动化模块 1. 为什么选择OpenClaw开发技能&#xff1f; 去年冬天&#xff0c;我为了给团队搭建一个内部天气查询助手&#xff0c;尝试过至少三种不同的自动化方案。要么是API调用太复杂&#xff0c;要么是自然语言处…...

三步掌握EdgeRemover:Windows系统Edge浏览器专业卸载方案

三步掌握EdgeRemover&#xff1a;Windows系统Edge浏览器专业卸载方案 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 还在为Windows系统中Microsoft Ed…...

OpenClaw任务编排:GLM-4.7-Flash复杂流程设计

OpenClaw任务编排&#xff1a;GLM-4.7-Flash复杂流程设计 1. 为什么需要任务编排 去年我接手了一个市场分析项目&#xff0c;需要每周手动收集竞品动态并生成报告。重复性的复制粘贴和格式调整消耗了大量时间&#xff0c;直到发现OpenClaw可以通过编排GLM-4.7-Flash模型实现全…...

CDN图片服务与动态参数优化

前言在现代Web应用中&#xff0c;图片已经不再是简单的静态资源&#xff0c;而是需要根据设备、网络、浏览器能力动态优化的核心内容。CDN图片服务提供了强大的动态处理能力&#xff0c;结合前端的智能参数拼接&#xff0c;可以实现图片加载的极致优化。一个典型的电商场景&…...

项目管理工具怎么选?8款主流产品测评与选型建议

项目管理工具怎么选&#xff1f;真正需要比较的&#xff0c;不只是功能多少&#xff0c;而是它是否适合团队的协作方式、项目复杂度和管理阶段。本文围绕场景匹配、流程灵活性、信息沉淀、管理视图和落地成本&#xff0c;对8款主流项目管理工具做一轮顾问式测评。引言很多企业在…...

新版药典解读:生物制品生产用动物细胞基质的质量控制修订重点

2025年版《中国药典》已正式实施2个多月&#xff0c;其对生物制品生产用动物细胞基质的质量控制要求进行了重要修订。本次修订对生物制品生产企业和检测机构的影响路径和深度虽有差异&#xff0c;但都指向一个核心转变&#xff1a;从“遵循规定”到“证明科学性”。接下来&…...

终极简单教程:如何使用bilibili-parse免费获取B站视频资源

终极简单教程&#xff1a;如何使用bilibili-parse免费获取B站视频资源 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 想要快速获取B站视频资源却不知道从何入手&#xff1f;bilibili-parse作为一款简…...