2023最新Ubuntu安装部署Gitlab详细教程(每个步骤均配图)

Ubuntu安装配置Gitlab详细步骤

安装依赖

打开终端,运行如下命令:

sudo apt updatesudo apt-get upgradesudo apt-get install curl openssh-server ca-certificates postfix

在这里插入图片描述

接下来会遇到如下界面,Tab切换到“确定”按钮,然后回车。

在这里插入图片描述

还是照样Tab切换到“确定”按钮,然后回车。

在这里插入图片描述

安装Gitlab

先执行命令curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash(我这里不小心执行了两次,一次即可)

在这里插入图片描述

前往Gitlab官网:https://packages.gitlab.com/gitlab/gitlab-ce,找到最新版本的gitlab-ce安装包,注意版本是ubuntu/focal

在这里插入图片描述

通过wget方式在线安装gitlab,复制wsgt下载命令。

在这里插入图片描述

安装命令:
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_16.2.1-ce.0_amd64.deb/download.deb

在这里插入图片描述

然后再解压:sudo dpkg -i gitlab-ce_16.2.1-ce.0_amd64.deb

如果运行dpkg报openssh-server相关的错误,请先执行下面三个命令:

sudo apt --fix-broken install
sudo apt-get update
sudo apt-get upgrade

运行完sudo dpkg后如果出现下面的界面就表示gitlab安装成功。

在这里插入图片描述

配置Gitlab

运行sudo vim /etc/gitlab/gitlab.rb来查看当前gitlab网页ip和端口号。

如果出现vim识别不了的报错,运行下面两行命令即可

sudo rm /var/lib/dpkg/lock*
sudo apt-get update && sudo apt-get install vim

如果运行上述命令出现权限问题,运行下列命令即可:chmod -R 755 /var/log/gitlab

在这里插入图片描述

然后再运行sudo vim /etc/gitlab/gitlab.rb进入gitlab的配置文件修改界面,输入i进入编辑模式,然后找到external_url字段(在第32行),改成自己需要设置的IP和端口号,IP我设置为本机的ipv4地址。

在这里插入图片描述

在这里插入图片描述

修改完毕以后按esc键退出编辑模式,然后输入:wq保存即可。接下来通过下列命令重启服务。

# 停止gitlab服务 
sudo gitlab-ctl stop ​# 启动gitlab服务 
sudo gitlab-ctl reconfigure ​# 重启所有gitlab组件 
sudo gitlab-ctl restart ​# 启动所有gitlab组件 
sudo gitlab-ctl start# 启用开机自启动
sudo systemctl enable gitlab-runsvdir.service

在这里插入图片描述

在这里插入图片描述

初始化root的密码

按照如下命令初始化管理员账户的密码:

#切换路径
cd /opt/gitlab/bin/ ​#打开控制台
sudo gitlab-rails console -e production ​#查询用户账号信息并赋值给u
u=User.where(id:1).first​#设置root的密码
u.password='wxy123456'#确认密码
u.password_confirmation='wxy123456'#保存信息(注意有个感叹号)
u.save!#退出
exit

在这里插入图片描述

登录gitlab

接下来就可以通过http://192.168.17.128:8077来登录gitlab了。登录的地址是你之前设置external_url字段的值。

在这里插入图片描述

登录进去大概长这样:

按下面的步骤将gitlab语言设置为中文:
注意点击Preferences

在这里插入图片描述

点击Save changes,刷新即可。

在这里插入图片描述

Gitlab注册新用户

通过以下步骤来注册新用户:

在这里插入图片描述

在这里插入图片描述

注册之后会显示需要管理员批准,这样才算真正注册成功。

在这里插入图片描述

再次登录root账户,点击配置Gitlab:

在这里插入图片描述

查看最新的用户:

在这里插入图片描述

点击等待批准,然后批准该用户进入群组。

在这里插入图片描述

在这里插入图片描述

至此gitlab安装配置完成。

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

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

相关文章

Tomcat 安装配置教程及成功后,启动失败报错解决方案

解决方案 我的报错原因是因为我的JDK是1.8的而我的Tomcat是10版本的,可能是因为版本原因吧,我重新装了Tomcat 9就可以启动成功了! 简单说下安装的时候需要注意哪些步骤吧 今天我在安装tomcat10的时候,安装成功后,启…

RT1052的定时器

文章目录 1 通用定时器1.1 定时器框图1.2 实现周期性中断 2 相关寄存器3 定时器配置3.1 时钟使能3.2 初始化GPT1定时器3.2.1 base3.2.2 initConfig3.2.2.1 clockSorce3.2.2.2 divider3.2.2.3 enablexxxxx 3.3 设置 GPT1 比较值3.3.1 base3.3.2 channel3.3.3 value 3.4 设置 GPT…

AD21 PCB设计的高级应用(三)PCB多板互连装配设计

(三)PCB多板互连装配设计 一旦模块在多板原理图上相互连接,就可以验证板到板的连接。这将检测网络到引脚分配错误和引脚到引脚的互连布线错误。可以解决这些错误并将修改信息更新到对应的 PCB 中,或者重新更新到源系统原理图。 印制电路板不是孤立存在的…

uni-app如何生成正式的APK

第一步: 进入dcloud官网https://dcloud.io/,点击开发者后台进入登录注册页面 第二步:登录之后跳到项目列表,选择自己想要打包的项目 点击进去如果没有生成证书,点击生成证书,如果显示证书已生成就不用管了…

OpenJDK下载安装教程

《OpenJDK官网》 进入官网,点击Installing----》jdk.java.net 随便进去一个JDK版本 根据自己的操作系统下载对应的二进制JDK即可(我的是Windows) 配置环境变量 JAVA_HOME 你的JDK路径\jdk-17PATH追加内容 WINR输入CMD java -version

参数量仅有50KB的超轻量级unet变种网络egeunet【参数和计算量降低494和160倍】医疗图像分割实践

今天看到一篇挺有意思的文章,做的是跟医疗图像分割相关的工作,但是不像之前看到的一些工作一味地去追求高精度,因为医疗领域本身就是一个相对特殊的行业,对于模型产生的结果的精确性要求是很高的,带来的是参数量级的庞…

【Vue】在el-table的el-table-column中,如何控制单行、单列、以及根据内容单独设置样式。例如:修改文字颜色、背景颜色

用cell-style表属性来实现。在官网中是这样表述这个属性的。 在el-table中用v-bind绑定此属性。&#xff08;v-bind的简写是&#xff1a;&#xff09; <el-table:data"options":cell-style"cell"><el-table-column prop"id" label"…

文心一言 VS 讯飞星火 VS chatgpt (68)-- 算法导论6.5 7题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;68&#xff09;-- 算法导论6.5 7题 七、试说明如何使用优先队列来实现一个先进先出队列&#xff0c;以及如何使用优先队列来实现栈(队列和栈的定义见 10.1 节。) 文心一言&#xff1a; 优先队列是一种数据结构&#xff0c;其中…

Python基于PyTorch实现卷积神经网络回归模型(CNN回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 卷积神经网络&#xff0c;简称为卷积网络&#xff0c;与普通神经网络的区别是它的卷积层内的神经元只覆…

【前端知识】React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置

React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置 一、实现手动跳转路由 利用 useNavigate 封装一个 withRouter&#xff08;hoc/with_router.js&#xff09; import { useNavigate } from "react-router-dom"; // 封装一个高阶组件 function withRou…

Stable Diffusion 使用教程

环境说明&#xff1a; stable diffusion version: v1.5.1python: 3.10.6torch: 2.0.1cu118xformers: N/Agradio: 3.32.0 1. 下载 webui 下载地址&#xff1a; GitHub stable-diffusion-webui 下载 根据自己的情况去下载&#xff1a; 最好是 N 卡&#xff1a;&#xff08;我的…

K8S:容器日志收集与管理

Kubernetes 里面对容器日志的处理方式&#xff0c;都叫作 cluster-level-logging&#xff0c;即&#xff1a;这个日志处理系统&#xff0c;与容器、Pod 以及 Node 的生命周期都是完全无关的。这种设计当然是为了保证&#xff0c;无论是容器挂了、Pod 被删除&#xff0c;甚至节点…

PHP使用Redis实战实录3:数据类型比较、大小限制和性能扩展

PHP使用Redis实战实录系列 PHP使用Redis实战实录1&#xff1a;宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2&#xff1a;Redis扩展方法和PHP连接Redis的多种方案PHP使用Redis实战实录3&#xff1a;数据类型比较、大小限制和性能扩展 数据类型…

Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

C++复刻:[流光按钮]+[悬浮波纹按钮]

目录 参考效果实现main.cppdialog.hdialog.cppflowingRayButton.h 流动光线按钮flowingRayButton.cpp 流动光线按钮hoveringRippleButton.h 悬浮波纹按钮hoveringRippleButton.cpp 悬浮波纹按钮模糊知识点 源码 参考 GitHub地址 B站主页 效果 实现 main.cpp #include "…

RN 设置背景图片(使用ImageBackground组件)

在RN版本0.46版本的时候添加了ImageBackground控件。ImageBackground可以设置背景图片&#xff0c;使用方法和image一样&#xff0c;里面嵌套了其他的组件 import React from "react"; import { ImageBackground, StyleSheet, Text, View } from "react-native…

设计模式-中介者模式在Java中使用示例-客户信息管理

场景 欲开发客户信息管理窗口界面&#xff0c;界面组件之间存在较为复杂的交互关系&#xff1a;如果删除一个客户&#xff0c; 要在客户列表(List)中删掉对应的项&#xff0c;客户选择组合框(ComboBox)中客户名称也将减少一个&#xff1b; 如果增加一个客户信息&#xff0c;…

git操作:修改本地的地址

Windows下git如何修改本地默认下载仓库地址 - 简书 (jianshu.com) 详细解释&#xff1a; 打开终端拉取git时&#xff0c;会默认在git安装的地方&#xff0c;也就是终端前面的地址。 需要将代码 拉取到D盘的话&#xff0c;现在D盘创建好需要安放代码的文件夹&#xff0c;然后…

聚焦甲烷循环,宏基因组分析项目再创新!

甲烷&#xff0c;化学式CH4&#xff0c;在自然界分布很广&#xff0c;是最简单的有机物&#xff0c;也是最简单的烃。但同时也是一种重要的温室气体&#xff0c;是一种仅次于二氧化碳的强大温室气体&#xff0c;对环境和全球变化具有重大影响&#xff0c;其导致全球变暖潜力是C…

uniapp使用getStorage对属性赋值无效

1正常set(get)storage都是可以正常使用的 2.但对属性进行赋值的时候&#xff0c;却发现this.name并没有发生变化 3. 在里面打印this发现&#xff0c;在set*getStorage中并不能拿到this. 4.优化代码 这样就可以给this.name成功赋值