使用阿里云服务器部署和使用GitLab
本文阿里云百科分享使用阿里云服务器部署和使用GitLab,GitLab是Ruby开发的自托管的Git项目仓库,可通过Web界面访问公开的或者私人的项目。本教程介绍如何部署和使用GitLab。
目录
准备工作
部署GitLab环境
使用GitLab
登录GitLab
生成密钥对文件并获取公钥
创建项目
使用GitLab
准备工作
部署GitLab前,请确保您已创建一台ECS实例,并且ECS实例必须满足以下条件:
-
实例已分配公网IP地址或绑定弹性公网IP(EIP)。
-
操作系统:必须为CentOS 7.x。
-
ECS云服务器:aliyunbaike.com/go/ecs
-
实例规格:部署GitLab的实例规格要求至少为4 vCPU和4 GiB内存。
-
已在安全组内添加入方向规则放行80端口。具体操作,请参见添加安全组规则。
部署GitLab环境
-
远程连接需要部署GitLab环境的ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
-
安装GitLab所需依赖包。
sudo yum install -y curl policycoreutils-python openssh-server -
启动SSH服务并设置SSH服务为开机自启动。
sudo systemctl start sshd sudo systemctl enable sshd -
(可选)安装并配置Postfix。
Postfix用于GitLab发送电子邮件通知。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器。具体操作,请参见配置外部 SMTP 服务器。
-
安装Postfix。
sudo yum install -y postfix如果提示类似以下报错信息,请执行
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022命令后,重新安装Postfix。Falling package is :mysql-community-libs-compat-5.7.41-1.el7.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql -
启动Postfix并设置Postfix为开机自启动。
sudo systemctl start postfix sudo systemctl enable postfix
-
-
添加GitLab软件包仓库。
说明sudo curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash由于网络原因,可能会出现无法添加GitLab软件包仓库的问题,建议您多尝试几次。
当出现类似如下回显信息,表示GitLab软件包仓库已安装。

-
安装GitLab。
sudo EXTERNAL_URL=<GitLab服务器的公网IP地址> yum install -y gitlab-ce<GitLab服务器的公网IP地址>请替换成安装GitLab的实例公网IP地址,示例命令如下:sudo EXTERNAL_URL=101.132.XX.XX yum install -y gitlab-ce当出现类似如下回显信息,表示GitLab已经安装成功。

使用GitLab
登录GitLab
-
获取GitLab的登录密码。
sudo cat /etc/gitlab/initial_root_password回显信息类似如下所示,您可以在
重要Password后获取GitLab的初始登录密码。出于安全原因,24小时后,该文件会被自动删除,建议您安装成功,首次登录之后,立即修改初始密码。

-
登录GitLab。
在浏览器的地址栏中,输入ECS服务器的公网IP即可进入GitLab的登录界面,首次登录使用用户名
root,密码为步骤1获取的密码。
生成密钥对文件并获取公钥
-
安装Git工具。
sudo yum install git -
生成密钥对文件
id_rsa。ssh-keygen生成密钥对的过程中,系统会提示输入密钥对存放目录(默认为当前用户目录下的
.ssh/id_rsa,例如/home/test/.ssh/id_rsa)和密钥对密码,您可以手动输入,也可以按Enter保持默认。回显信息类似如下所示。

-
查看并复制公钥文件
id_rsa.pub中的内容,便于后续步骤使用。cat .ssh/id_rsa.pub回显信息类似如下所示。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQVwWjF3KXmI549jDI0fuCgl+syJjjn55iMUDRRiCd/B+9TwUda3l9WXH5i7RU53QGRCsDVFZxixLOlmXr9E3VSqkf8xXBnHs/5E2z5PIOCN0nxfB9xeA1db/QxPwK4gkHisep+eNHRn9x+DpCYDoSoYQN0nBg+H3uqfOqL42mJ+tqSfkyqbhjBf1kjtDTlBfVCWtI0siu7owm+c65+8KNyPlj5/0AyJ4Aqk1OX2jv+YE4nTipucn7rHwWuowasPU86l+uBsLNwOSb+H7loJvQyhEINX2FS1KnpRU+ld20t07n+N3ErfX5xBAGfxXpoN9BKKSP+RT7rvTeXTVE**** test@iZuf63zs0dn0qccsisy****
创建项目
-
在GitLab的主页中,单击Create new project,新建一个Project。

-
在Create new project页面,单击Create blank project,并设置Project相关配置项。
本文以mywork项目为例进行说明。

-
添加SSH key。
-
在当前project页面,单击Add SSH key。

-
将公钥文件
id_rsa.pub中的内容粘贴到Key所在的文本框中。
-
单击Add key。
SSH Key添加完成后,如下图所示。

-
-
复制Clone链接,该链接在进行克隆操作时需要使用。

使用GitLab
-
配置使用Git仓库的人员信息。
-
配置使用Git仓库的人员姓名。
git config --global user.name "testname" -
配置使用Git仓库的人员邮箱。
git config --global user.email "abc@example.com"
-
-
克隆已创建的项目到本地。
git clone git@101.132.XX.XX:root/test.git
-
上传文件到GitLab服务器。
-
进入到项目目录。
cd mywork/ -
创建需要上传到GitLab中的目标文件。
echo "test" > /home/test/test.sh -
将目标文件或者目录复制到项目目录下。
cp /home/test/test.sh ./ -
将
test.sh文件加入到索引中。git add test.sh -
将
test.sh提交到本地仓库。git commit -m "test.sh" -
将文件同步到GitLab服务器上。
git push -u origin main
在网页中查看上传的
test.sh文件已经同步到GitLab服务器中。
-
本文转自阿里云官方文档。
相关文章:
使用阿里云服务器部署和使用GitLab
本文阿里云百科分享使用阿里云服务器部署和使用GitLab,GitLab是Ruby开发的自托管的Git项目仓库,可通过Web界面访问公开的或者私人的项目。本教程介绍如何部署和使用GitLab。 目录 准备工作 部署GitLab环境 使用GitLab 登录GitLab 生成密钥对文件并…...
React入门学习笔记3
事件处理 通过onXxx属性指定事件处理函数(注意大小写) React使用的是自定义(合成)事件, 而不是使用的原生DOM事件——为了更好的兼容性 eg:οnclick》onClickReact中的事件是通过事件委托方式处理的(委托给组件最外层的元素)——为了更高效通过event.target得到发生…...
从零开始理解Linux中断架构(25)中断运行全景实例
前面我们基本理解了软中断处理的基本框架,为了对中断调用有一个全景的直观感受,我们在网卡驱动程序的中断函数dump_stack,观看一下各种情况下的软中断调用call Stack的情况。 (1)ksoftirqd处理软中断的情况 有线以太网卡NAPI轮询的调用栈 [ 106.374117] Hardware name: K…...
go-zero 是如何实现计数器限流的?
原文链接: 如何实现计数器限流? 上一篇文章 go-zero 是如何做路由管理的? 介绍了路由管理,这篇文章来说说限流,主要介绍计数器限流算法,具体的代码实现,我们还是来分析微服务框架 go-zero 的源…...
【考研复习】24王道数据结构课后习题代码|第3章栈与队列
文章目录 3.1 栈3.2 队列3.3 栈和队列的应用 3.1 栈 int symmetry(linklist L,int n){char s[n/2];lnode *pL->next;int i;for(i0;i<n/2;i){s[i]p->data;pp->next;}i--;if(n%21) pp->next;while(p&&s[i]p->data){i--;pp->next;}if(i-1) return 1;…...
java中excel文件下载
1、System.getProperty(user.dir) 获取的是启动项目的容器位置 2、 Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING); StandardCopyOption.REPLACE_EXISTING 来忽略文件已经存在的异常,如果存在就去覆盖掉它Sta…...
29 | 广州美食店铺数据分析
广州美食店铺数据分析 一、数据分析项目MVP加/价值主张宣言 随着经济的快速发展以及新媒体的兴起,美食攻略、美食探店等一系列东西进入大众的眼球,而人们也会在各大平台中查找美食推荐,因此本项目做的美食店铺数据分析也是带有可行性的。首先通过对广东省的各市美食店铺数量…...
fastApi基础
1、fastApi简介 官方文档:https://fastapi.tiangolo.com/ 源码: https://github.com/tiangolo/fastapi 2、环境准备 安装python 安装pycharm 安装fastAPI 安装 uvicorn 查看已经安装的第三方库:pip list 查看pip 配置信息:pip co…...
Mysql整理二 - 常见查询语句面试题(附原表)
表结构,创建原表的代码在最后 -- cid课程id; tid老师id; sid学生id; select * from t_mysql_course; select * from t_mysql_score; select * from t_mysql_student; select * from t_mysql_teacher; 1. 查询" 01 “课程比” 02 "课程成绩高的学生的信息…...
Python - 读取pdf、word、excel、ppt、csv、txt文件提取所有文本
前言 本文对使用python读取pdf、word、excel、ppt、csv、txt等常用文件,并提取所有文本的方法进行分享和使用总结。 可以读取不同文件的库和方法当然不止下面分享的这些,本文的代码主要目标都是:方便提取文件中所有文本的实现方式。 这些库的…...
Codeforces Round 892 (Div. 2) C. Another Permutation Problem 纯数学方法 思维题
Codeforces Round 892 (Div. 2) C. Another Permutation Problem 源码: #include <iostream> #include <algorithm> #include <set> #include <map> #include <queue> #include <vector> #include <stack> #include &l…...
持续输出:自媒体持续输出文字内容、视音频创作(视频课程、书籍章节)
以下是自媒体持续输出文字内容、视音频创作的最佳方法: 灵感来源:寻找灵感来源是自媒体创作的重要一环。可以从日常生活、网络热点、行业动态等方面寻找创作灵感。 确定主题:在确定主题的时候,需要根据读者和观众的需求ÿ…...
篇十七:备忘录模式:恢复对象状态
篇十七:"备忘录模式:恢复对象状态" 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料&…...
初识mysql数据库之图形化界面
目录 一、好用的数据库图形化界面软件 1. Navicat 2. SQLyog 3. MYSQL Workbench 二、MYSQL Workbench基本使用 1. 安装 2. 远端连接 3. 执行sql语句 一、好用的数据库图形化界面软件 在以前的文章中,一共介绍了两种使用数据库的方式,分别为在l…...
APP外包开发的H5开发框架
跨平台移动应用开发框架允许开发者使用一套代码在多个操作系统上构建应用程序,从而节省时间和资源。以下是一些常见的跨平台移动应用开发框架以及它们的特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司࿰…...
高性能跨平台网络通信框架 HP-Socket v5.9.3
项目主页 : http://www.oschina.net/p/hp-socket开发文档 : https://www.docin.com/p-4478351216.html下载地址 : https://github.com/ldcsaa/HP-SocketQQ Group: 44636872, 663903943 v5.9.3 更新 一、主要更新 问题修复:通过 POST/PUT 等带有请求内容的 HTTP 方…...
Vue3.2+TS在v-for的时候,循环处理时间,将其变成xx-xx-xx xx:xx:xx格式,最后教给大家自己封装一个时间hooks,直接复用
Vue3.2TS在v-for的时候,循环处理时间,将其变成xx-xx-xx xx:xx:xx格式 最后教给大家自己封装一个时间hooks,直接复用 1.没有封装,直接使用 <template><div><ul><li v-for"item,index in arr" :k…...
05 mysql innodb page
前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…...
记录一次electron打包提示文件找不到的解决方法
没有配置files选项 files的作用是配置打包到应用程序的构建资源 就是说如果你想使用项目那个目录下的文件 就得通过files配置一下不然就会报错 json文件或者yml文件会报的错 格式是这样的 "files": ["dist-electron", "dist"],electron打包配…...
《大型网站技术架构》第二篇 架构-高可用
高可用在公司中的重要性 对公司而言,可用性关系网站的生死存亡。对个人而言,可用性关系到自己的绩效升迁。 工程师对架构做了许多优化、对代码做了很多重构,对性能、扩展性、伸缩性做了很多改善,但别人未必能直观地感受到&#…...
SPSSAU效度分析保姆级教程:手把手教你解读KMO值和共同度,搞定问卷数据验证
SPSSAU效度分析实战指南:从KMO值到共同度的深度解析 当你第一次拿到问卷数据时,面对效度分析结果中的各种数字和专业术语,是否感到无从下手?作为量化研究的核心环节,效度分析直接关系到研究结论的可靠性。本文将带你深…...
从JS到TS,从Webpack到Rust,从云端到边缘,从编码到AI:Agent时代前端全生态演进的2026新篇章
语言的终局:TypeScript的全面胜利与原生回归 在2026年的今天,回望过去五年,前端领域发生的最具决定性的变化莫过于TypeScript的彻底胜利。这不再是一场关于“是否使用”的辩论,而是一次生态系统的强制升级。根据最新的行业调查&am…...
基于c/c++实现linux/windows跨平台ntp时间戳服务器
目录使用场景c/c源码结果验证windows编译命令linux编译命令服务器输出结果客户端输出结果使用场景 在某些严格要求时间同步很精准的项目中,获取网络ntp时间的时间延时比较大,做滤波处理可能效果也不理想。因此可以搭建一个本地ntp服务器,这样…...
房地产行业的 AI 变革:房产带看与估值 Agent
房地产行业的 AI 变革:房产带看与估值 Agent 全解析 引言 痛点引入 你有没有过这样的房产交易经历?为了买一套合适的二手房,周末连续跑3天、跟着中介看12套房子,最后发现一半房源不符合你“离地铁1公里、带学区、朝南三房”的核心需求;业主挂出一套房源,中介给出的估价…...
告别KVM切换器!用微软官方免费神器Mouse without Borders,一套键鼠搞定四台Windows电脑
微软Mouse without Borders:四台Windows电脑共享键鼠的终极方案 当你的办公桌上摆着两台甚至四台Windows电脑时,每次切换设备都要重新抓取不同的鼠标和键盘,这种体验简直让人抓狂。物理KVM切换器虽然能解决问题,但价格昂贵且线材杂…...
Open UI5 源代码解析之1104:MenuItem.js
源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.ui.commons\src\sap\ui\commons\MenuItem.js MenuItem.js 文件深度分析 文件的直观定位 MenuItem.js 是一个体量非常小的文件,但它在 openui5 这样的大型项目里并不轻。原因在于,它不是靠大段业务逻辑…...
Perfetto上下文切换分析终极指南:快速定位进程调度开销问题
Perfetto上下文切换分析终极指南:快速定位进程调度开销问题 【免费下载链接】perfetto Production-grade client-side tracing, profiling, and analysis for complex software systems. 项目地址: https://gitcode.com/GitHub_Trending/pe/perfetto Perfett…...
突破限制,自由掌控:WindowResizer让每个窗口都按你的想法调整
突破限制,自由掌控:WindowResizer让每个窗口都按你的想法调整 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否遇到过这样的情况:某些应用…...
CAPL文件读写踩坑实录:fileGetString和fileGetStringSZ到底怎么选?
CAPL文件读写深度解析:fileGetString与fileGetStringSZ的实战抉择 当你在CANoe环境中用CAPL处理日志文件时,是否遇到过这样的场景:明明代码逻辑正确,但字符串比较总是失败?或者从CSV文件读取的数据总带着奇怪的换行符&…...
用PyTorch的F.cosine_similarity实现文本/向量两两相似度计算:以推荐系统为例
PyTorch向量相似度计算的工程实践:从原理到推荐系统实战 在推荐系统和自然语言处理领域,向量相似度计算是最基础也最频繁的操作之一。想象一下这样的场景:你的推荐系统需要实时为百万级用户计算他们可能感兴趣的物品,而每个用户和…...
