华为云云耀云服务器L实例评测 | 云服务器搭建自己的gitlab代码仓库手把手教学

📋 前言

  • 🖱 博客主页:在下马农的碎碎念
  • 🤗 欢迎关注🔎点赞👍收藏⭐️留言📝
  • ✍ 本文由在下马农原创,首发于CSDN
  • 📆 首发时间:2023/09/26
  • 📅 最近更新时间:2023/09/26
  • 🤵 此马非凡马,房星本是星。向前敲瘦骨,犹自带铜声。
  • 📇 系列文章目录: 无
  • 🙏作者水平有限,如发现错误,请留言轰炸哦!万分感谢!

世界于你而言,毫无意义和目的,却又充满随心所欲的幻想,但又有谁知,也许就在这闷热令人疲倦的正午,那个陌生人,提着满篮奇妙的货物,路过你的门前,他响亮地叫卖着,你就会从朦胧的梦中惊醒,走出房门,迎接命运的安排。
——泰戈尔《爱者之贻》

在这里插入图片描述

一、背景

1.1 gitlab简介

GitLab是一个基于Web的Git仓库管理工具,它提供了一整套用于代码版本控制、代码托管、持续集成、项目管理和协作的功能。

GitLab最初于2011年由Dmitriy Zaporozhets和Valery Sizov创建,是一个开源项目。它允许开发团队在一个中心化的位置管理代码仓库,并提供了一系列工具和功能来帮助团队协作开发软件项目。

以下是GitLab的一些主要特点:

  1. 代码托管:GitLab提供了强大的代码托管功能,支持Git版本控制系统。你可以在GitLab上创建自己的代码仓库,进行代码的提交、分支管理和合并请求等操作。
  2. CI/CD:GitLab集成了持续集成和持续交付(CI/CD)功能,使开发团队能够自动构建、测试和部署他们的应用程序。通过配置CI/CD管道,你可以定义各种构建、测试和部署任务,并与代码仓库进行集成。这样,每当有新的代码提交时,系统将自动执行这些任务来确保代码的质量和稳定性。
  3. 项目管理:GitLab提供了一套项目管理工具,包括问题跟踪、任务列表、里程碑、讨论和代码审查等功能。团队成员可以使用这些工具来协作开发、分配任务、讨论问题和审核代码。
  4. 集成与扩展性:GitLab支持与其他工具和服务的集成,如JIRA、Slack、Jenkins等。它还提供了API和插件系统,使开发者可以根据自己的需求进行扩展和定制。
  5. 自托管和SaaS:GitLab提供了两种部署方式,你可以选择在自己的服务器上自托管GitLab,或者使用GitLab提供的托管服务(GitLab.com)。

总的来说,GitLab是一个功能丰富的代码托管和项目管理平台,它的目标是帮助开发团队更高效地协作和交付软件。无论是小型团队还是大型企业,GitLab都提供了一套完整的工具和功能来支持软件开发的整个生命周期。

搭建一个自己专属的gitlab,将自己的代码库全部上传之后,就可以随时随地访问自己的代码。并且gitlab并非只能作为代码仓库,常见格式的文件都能上传并支持在线预览。

1.2 华为云耀云服务器L实例

根据官网介绍,云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等。
有非常多的优势,比如不卡顿,上手简单等等等。
对我们这种小白来讲,这些可以适当了解一下,我们只需要知道它是一台云服务器就足够了。

OK,了解了这两个主角之后,我们直接开干。

二、搭建GitLab

2.1 安装前准备

2.1.1 购买云服务器

这个不再展开,如果你还没有服务器,先去买服务器吧骚年!!!


注意:本文使用的云服务器配置如下:

  • vCPU: 2核
  • 内存: 2GB
  • Linux操作系统:以ubuntu22.04为例

2.2.2 配置服务器安全组规则

  1. 在华为云控制台找到自己购买的服务器,依次点击:更多=>网络设置=>安全组规则配置
    在这里插入图片描述
  2. 之后在弹出的窗口中点击配置规则,进入安全组规则配置界面。
    在这里插入图片描述
  3. 开放80端口
    gitlab需要用到80端口,为了简便操作,我们直接使用控制台提供的一键放通常用端口功能,如下图所示:
    依次点击:入方向规则=>一键放通常用端口=>确认即可。然后出方向一样。
    在这里插入图片描述

2.2 登录实例并创建swap分区

2.2.1 登录我们的服务器实例

可以选择控制台自己的远程登录,也可以自行使用SSH工具进行远程登录。
注意:默认用户名为root,如果不知道登录密码,可以先关机然后进行重置密码后再进行登录。

2.2.2 服务器添加swap分区

从gitlab官网了解到,gitlab安装对于服务器的最低要求为:

  • 存储:安装gitlab需要2.5G空间
  • CPU : 4核CPU(支持500用户)
  • 内存: 4GB RAM 是必需的最小内存,支持多达 500 名用户

显然,博主购买的这台服务器配置达不到要求,于是我们需要添加swap分区,它是针对内存不足情况的极其重要的最后手段。

添加swap分区步骤:

  1. 检查系统是否已经存在swap分区

    sudo swapon --show
    

    如果没有任何输出,则证明没有swap分区,如下图所示:
    在这里插入图片描述

  2. 创建一个用于swap分区的文件

    sudo mkdir -v /var/cache/swap
    cd /var/cache/swap
    sudo dd if=/dev/zero of=swapfile bs=1K count=4M
    

    在这里插入图片描述

  3. 将新建的文件转换为swap文件

    sudo mkswap swapfile
    

    在这里插入图片描述

  4. 启用swap分区

    sudo swapon swapfile
    
  5. 使用swapon命令进行验证

    swapon -s
    

    正常的话会显示swap分区的信息,如下图所示:在这里插入图片描述

    如果需要禁用swap,可以使用sudo swapoff swapfile

  6. 将swap分区设置为开机自动加载

    echo "/var/cache/swap/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
    

    在这里插入图片描述

  7. 调整swap分区的swappiness

    swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。正常情况这个值默认为60。以防万一,我们查看一下。

    a. 查看当前swap分区swappiness

    cat /proc/sys/vm/swappiness
    

    比如博主这里,这个值就为0.
    在这里插入图片描述

    如果这个值为0,需要修改为60,或者80都行。

    b. 修改swappiness的值

    sudo sysctl vm.swappiness=60
    

    在这里插入图片描述

    这种修改方式只在本次启动运行过程中有效,重启后就会变为原来的默认值,如果需要长期生效,需要在/etc/sysctl.conf文件中添加vm。swappiness = 60(如果文件末尾有此项,将其值改为60)

    sudo vim /etc/sysctl.conf
    

    在这里插入图片描述

2.3 安装GitLab

2.3.1 安装依赖

sudo apt update
sudo apt-get upgrade
sudo apt-get install curl openssh-server ca-certificates postfix

如果中途跳出需要选择的选项,直接选择默认项回车即可。

2.3.2 安装GlitLab

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh |sudo bash
sudo apt-get install gitlab-ce

在这里插入图片描述
运行之后需要等待一会。

2.2.3 安装成功

安装成功的界面如下图所示:
在这里插入图片描述
出现这个界面,我们这一步的操作就完成了

2.4 配置IP并启动gitlab

2.4.1 配置对外IP和默认端口

GitLab的配置文件位于 /etc/gitlab/gitlab.rb ,我们需要编辑此文件来修改gitlab的相关配置。在本文中使用vim编辑,如果没有安装vim,执行命令sudo apt install vim进行安装。
进入配置文件

sudo vim /etc/gitlab/gitlab.rb

修改external_url字段,其原始值为external_url 'http://gitlab.example.com'将其修改为IP+端口号的形式,例如external_url 'http://123.45.678.90:80',要将123.45.678.90替换为你自己服务器的公网IP。

2.4.2 启动GitLab

运行以下命令以启动GitLab:

  sudo gitlab-ctl stop     //--停止服务sudo gitlab-ctl reconfigure  //--启动服务sudo gitlab-ctl restart         //--重启所有gitlab组件sudo gitlab-ctl start           //--启动所有gitlab组件

注意:如果中途执行sudo gitlab-ctl reconfigure有卡住很长时间不动的情况,Ctrl+C退出之后重新执行上述命令。配置好之后会出现 gitlab Reconfigured! 提示。如下图所示:
在这里插入图片描述
配置成功之后接着执行上边的后两句命令。
在这里插入图片描述
执行完成之后,GitLab就已经安装配置并成功启动,这时我们在电脑的浏览器中输入刚刚GitLab配置文件中external_url的链接,就能够成功访问到GItLab的主页了。
在这里插入图片描述
管理员账户名:root
管理员账户密码:默认密码在/etc/gitlab/initial_root_password
在这里插入图片描述
如需修改默认密码,请自行搜索修改密码方式。

2.4.3 使用管理员账户登录

三、常见问题及解决方法

3.1 访问首页提示502 GitLab响应时间过长

在这里插入图片描述
使用top查看内存使用情况,如果内存剩余过少,则可能是swap分区使用率过低,物理内存不足导致,重新检查2.2中的所有步骤是否执行成功。查看swap分区swapiness的值是否为0,将其修改为60或者80。


总结:到这里,使用华为云耀云服务器L搭建GitLab代码仓库就完成了。通过本文,我们详细介绍了如何在云服务器上搭建GitLab,并为团队提供一个高效、安全的代码托管和协作平台。我们从云服务器的选择和配置开始,逐步引导您完成了GitLab的安装和设置过程。通过搭建自己的GitLab实例,您可以拥有完全的控制权,并确保您的代码在受保护的环境中得到管理和维护。

如果您在设置过程中遇到任何问题,可以联系博主寻求技术支持,觉得有用就来个三连支持一下吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode热题100】--234.回文链表

234.回文链表 快慢指针: 将链表的后半部分反转(改变链表结构),然后将前半部分和后半部分进行比较。比较完成后我们应该将链表恢复原样。虽然不需要恢复也能通过测试用例 使用快慢指针在一次遍历中找到链表的中间位置&#xff1a…

Spring整合RabbitMQ——消费者

1.配置consumer xml配置文件 2. 实现MessageListener接口 并重写onMessage方法

GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域:1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。2、数据可视化…

Mysql高级——数据库设计规范(2)

8. ER模型 ER 模型中有三个要素,分别是实体、属性和关系。 实体,可以看做是数据对象,往往对应于现实生活中的真实存在的个体。在 ER 模型中,用矩形来表示。实体分为两类,分别是强实体和弱实体。强实体是指不依赖于其…

ACP值不值得考?考了有用吗?

ACP是什么? PMI-ACP是由美国项目管理协会PMI颁发的针对敏捷项目管理的专业认证。目前已覆盖全球206个国家和地区,为计算机IT、制造、医疗保健等各行各业的项目成果交付提供了一系列方法和实践,是国际上敏捷领域中知识方法最全面、含金量最高…

OpenAI 更新 ChatGPT:支持图片和语音输入【附点评】

一、消息正文 9月25日消息,近日OpenAI宣布其对话AI系统ChatGPT进行升级,添加了语音输入和图像处理两个新功能。据OpenAI透露,这些新功能将在未来两周内面向ChatGPT Plus付费用户推出,免费用户也将很快可以使用这些新功能。这标志着ChatGPT继续朝着多模态交互的方向发展,为用户提…

液氮超低温保存法的原理

细菌保存是有效保存活体微生物群体,使细菌不死、不衰、不变,便于研究和应用。保存细菌的方法有很多。保存原理是利用干燥、低温、隔离空气的方法,降低微生物菌株的代谢速度,使菌株的生命活动处于半永久性休眠状态,从而…

CentOS下安装MySQL 8.1及备份配置

1 卸载原来的MySQL版本 移除之前部署的mysql软链接 # unlink /etc/init.d/mysql # unlink /usr/bin/mysql2 下载最新的MySQL版本 https://dev.mysql.com/downloads/mysql/8.0.html 我这里直接把地址放在这里:https://cdn.mysql.com//Downloads/MySQL-8.1/mysql…

Windows10操作系统部署AD

windows 10 安装配置AD 一、启用AD 1.打开控制面板—>程序—>启用或关闭windows功能 2.勾选Active Directory Lightweight Directory Services(Active Directory 轻型目录服务) 注:不同版本中英文显示有区别,认准AD字样就…

leetcodetop100 (22) 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 简单的用一个动态数组Arraylist记录,然后倒序遍历赋值给一个新的链表,这种空间复杂度是o(n),估计需要优化。 采用双指针; 我们可以申请两个指针&#xf…

机器人中的数值优化|【四】L-BFGS理论推导与延伸

机器人中的数值优化|【四】L-BFGS理论推导与延伸 往期内容回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化,拟牛…

汽车电子——产品标准规范汇总和梳理(自动驾驶)

文章目录 前言 一、分级 二、定位 三、地图 四、座舱 五、远程 六、信息数据 七、场景 八、智慧城市 九、方法论 总结 前言 见《汽车电子——产品标准规范汇总和梳理》 一、分级 《GB/T 40429-2021 汽车驾驶自动化分级》 《QC/T XXXXX—XXXX 智能网联汽车 自动驾…

位图布隆过滤器

文章目录 位图&布隆过滤器1. 位图1.1位图概念1.2位图原理1.3位图实现1.4位图排序 2. 布隆过滤器2.1 引入布隆过滤器2.2 概念2.3 布隆过滤器插入2.4 布隆过滤器的查找2.5 布隆过滤器模拟实现2.6 布隆过滤器的删除2.7 布隆过滤器优缺点2.8 布隆过滤器使用场景 3. 海量数据问题…

浙江移动与中兴通讯合作项目被评为“光华杯”东部赛区一等奖!

近日,浙江移动携手中兴通讯共同打造的创新合作项目“构建面向东数西算的传输全光底座赋能美丽浙江”在2023年第二届“光华杯”东部赛区决赛中被评为一等奖,该项目以运力为核心,可实践应用于“东数西算”建设工程当中,提供高速无阻…

interview6-jvm篇

JVM(Java Virtual Machine)Java程序的运行环境(java二进制字节码的运行环境) 在JVM中共有四大部分,分别是ClassLoader(类加载器)、Runtime DataArea(运行时数据区,内存分区)、Execu…

探索创意的新辅助,AI与作家的完美合作

在现代社会,文学创作一直是人类精神活动中的重要一环。从古典文学到现代小说,从诗歌到戏剧,作家们以他们的独特视角和文学天赋为我们展示了丰富多彩的人生世界。而近年来,人工智能技术的快速发展已经渗透到各行各业,文…

JavaWeb 学习

1. 基本概念 1.1 Web web:网络,网页 静态 web html,css提供给所有人看的数据始终不会变化 动态 web 淘宝提供给每个人看的数据会有所不同技术栈:Servlet/JSP,ASP,PHP Java 中,动态 web 资…

【神印王座】悲啸洞穴之物揭晓,圣采儿差点被骗,幸好龙皓晨聪明

Hello,小伙伴们,我是小郑继续为大家深度解析神印王座。 神印王座动漫现阶段已经出到龙皓晨等人接取新任务深入魔族地界的阶段,而龙皓晨等人接取的任务想必现在大家都知道了,那就是探索魔族地界中的悲啸洞穴。但是大家知道悲啸洞穴里面藏着什么…

缓冲区溢出漏洞分析

一、实验目的 熟悉软件安全需求分析方法,掌握软件安全分析技术。 二、实验软硬件要求 1、操作系统:windows 7/8/10等 2、开发环境:VS 6.0(C)、OllyDbg 三、实验预习 《软件安全技术》教材第3章 四、实验内容&#…

CSS滚动条详解(::-webkit-scrollbar )

滚动条出现的事件&#xff1a; 当设置定宽或者定高的元素添加overflow:scroll属性&#xff0c;会出现滚动条&#xff0c;但是原生样式的会比较丑影响美观。 <div class"content"><div class"contain"></div> </div>.content {wid…