当前位置: 首页 > 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;…...

leaflet 上传包含shp的zip文件,在map上解析显示图形(059)

第059个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中本地上传包含shp的zip文件,利用shapefile读取shp数据,并在地图上显示图形。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果加载shapefile.js方式安装引用jszip(…...

CAN总线详细介绍

1.1 CAN是什么&#xff1f; CAN 最终成为国际标准 &#xff08; ISO11898(高速应用)和 ISO11519&#xff08;低速应用&#xff09;&#xff09;&#xff0c;是国际上应用最广泛的现场总线之一。 1.2 CAN总线特点 多主方式: 可以多主方式工作&#xff0c;网络上任意一个节点…...

python如何完成对 Excel文件的解密后读取?

通常为了防止重要的Excel文件数据内容的泄露&#xff0c;需要对文件整体进行加密与解密的操作。 对于文件的加解密过程&#xff0c;python也有很多非标准库来帮助我们完成操作&#xff0c;这里主要说明如何完成对Excel文件的解密与读取操作。 这里我们使用到的是msoffcrypto-…...

微服务实战--高级篇:RabbitMQ高级

服务异步通信-高级篇 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送…...

autoCAD2022 - 设置新的原点

文章目录autoCAD2022 - 设置新的原点概述笔记UCS原点设置功能的菜单位置ENDautoCAD2022 - 设置新的原点 概述 上次整板子的dxf时, 原来的原点不合适, 想调整一下. 当时整完了, 没记录. 这次用的时候, 又找半天… 设置新原点的功能, 不在顶部菜单中, 而是在视图右上角的UCS图标…...

spring boot 配置 mybatis-plus多数据源

简介Mybatis-puls 多数据源的使用&#xff0c;采用的是官方提供的dynamic-datasource-spring-boot-starter包的 DS 注解&#xff0c;具体可以参考官网&#xff1a;https://gitee.com/baomidou/dynamic-datasource-spring-boot-starterpom.xml文件引入如下依赖主要引入dynamic-d…...

独立产品灵感周刊 DecoHack #047 - 安卓手机上最有用的APP

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。&#x1f4bb; 产品推荐 1. Bouncer Tempor…...

【面试题】JavaScript中递归的理解

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库递归 RecursionTo iterate is human, to recurse, divine. 理解迭代&#xff0c;神理解递归。本文会以 JavaScript为主、有部分 Rust 举例说明。…...

PyTorch学习笔记

PyTorch学习笔记&#xff08;一&#xff09;&#xff1a;PyTorch环境安装 往期学习资料推荐&#xff1a; 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 安装参考&#xff1a; 1.视频教程&#xff1a;3分钟深度学习【环境搭建】CUDA Anacon…...

SpringBoot2知识点记录

SpringBoot2知识点记录1.SpringBoot2基础入门1.1 环境要求1.1.1 maven设置1.2 第一个程序 HelloWorld1.2.1 创建maven工程1.2.2 引入依赖1.2.3 创建主程序1.2.4 编写业务1.2.5 测试1.2.6 简化配置1.2.7 简化部署1.3 自动装配1.3.1 SpringBoot特点1.3.1.1 依赖管理1.3.1.2 自动装…...

wordpress全局阴影/steam交易链接在哪看

前言&#xff1a;这篇文章对于工作多年的可能用处不大,但对于刚刚接触Java的同学肯定是有一些帮助,现在我总结我接触liunx后常见的一些命令 1&#xff1a;日志查询常用的命令 ll&#xff1a;查询目录下所有的文件 ls -lht&#xff1a;查询目录下所有文件的大小 cd&#xff1a;切…...

政府门户网站集约化建设会/百度网盘网页

爱一个人难道有错吗&#xff1f; 我不知道。 本以为自己可以忘记 本以为自己可以勇敢的面对 本以为我可以不在乎对你的感受 本以为我可以战胜自己 但是 渐渐的 我发现 原来我不能&#xff01; 我真的不能做到&#xff01;~ 是我太软弱&#xff0c;还是我太脆弱&#xff1f; 不&…...

加盟营销型网站制作/百度首页纯净版怎么设置

Bootstrap中关闭第二个模态框时出现的问题和解决办法参考文章&#xff1a; &#xff08;1&#xff09;Bootstrap中关闭第二个模态框时出现的问题和解决办法 &#xff08;2&#xff09;https://www.cnblogs.com/XiaoyangBoke/p/5439169.html 备忘一下。...

如何建一个免费网站/百度站长平台官网登录入口

本文参考自《剑指offer》一书&#xff0c;代码采用Java语言。题目请实现一个函数用来匹配包含.和*的正则表达式。模式中的字符.表示任意一个字符&#xff0c;而*表示它前面的字符可以出现任意次(含0次)。在本题中&#xff0c;匹配是指字符串的所有字符匹配整个模式。例如&#…...

北京建设网站专家/网店推广的作用是什么

把大象装进冰箱需要几步&#xff1f; 其实&#xff0c;如果顺利的话&#xff0c;AS 生成 so 的步骤还是比较清晰的。 但是&#xff0c;随着我升级到了 AS 最新版 「3.3.1 稳定版」 而且我也不再想使用下面两种方法解决 Your project contains C files but it is not using …...

做怎么样的网站好/贵阳百度快照优化排名

通过从运营商处非法获取用户cookie操纵公民社交账户强行加粉或关注涉嫌非法获取计算机信息系统数据罪行为模式分析及辩护策略车冲&#xff1a;广东法丞汇俊律师事务所刑事律师微信&#xff1a;18819352650相信不少人都遇到过微博自动关注陌生营销账号、QQ无缘无故添加陌生好友和…...