写一个 适用于 Ubuntu 20.04/22.04 的 GitLab 一键部署脚本,包括:

  • 安装依赖

  • 安装 GitLab CE

  • 配置公网 IP 或域名

  • 自动开启 HTTPS(Let’s Encrypt)

  • 配置防火墙

下面是完整脚本:

#!/bin/bash# =========================
# GitLab 一键安装脚本
# =========================# 1. 检查是否以 root 运行
if [ "$EUID" -ne 0 ]; thenecho "请使用 root 用户运行此脚本"exit 1
fi# 2. 更新系统
apt update && apt upgrade -y# 3. 安装依赖
apt install -y curl openssh-server ca-certificates tzdata perl ufw# 4. 配置防火墙
ufw allow http
ufw allow https
ufw allow OpenSSH
ufw --force enable# 5. 安装 Postfix(用于邮件通知,可选)
debconf-set-selections <<< "postfix postfix/mailname string gitlab.example.com"
debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
apt install -y postfix# 6. 添加 GitLab 仓库
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash# 7. 设置外部 URL
read -p "请输入你的域名或公网 IP(例:http://gitlab.example.com 或 http://123.123.123.123): " EXTERNAL_URL# 自动生成 GitLab 配置文件
export EXTERNAL_URL=$EXTERNAL_URL# 8. 安装 GitLab
apt install -y gitlab-ce# 9. 重新配置 GitLab
gitlab-ctl reconfigure# 10. 自动启用 HTTPS(Let’s Encrypt)
read -p "是否启用 HTTPS(Let’s Encrypt)? [y/n]: " ENABLE_HTTPS
if [[ "$ENABLE_HTTPS" == "y" || "$ENABLE_HTTPS" == "Y" ]]; then# 设置 GitLab 配置开启 Let's Encryptgitlab-ctl stop nginxgitlab-ctl reconfigure# 编辑配置文件启用 Let's EncryptGITLAB_CONFIG="/etc/gitlab/gitlab.rb"sed -i "s|^# external_url '.*'|external_url 'https://$EXTERNAL_URL'|" $GITLAB_CONFIGsed -i "s|^# letsencrypt\['enable'\] = false|letsencrypt['enable'] = true|" $GITLAB_CONFIG# 重新配置gitlab-ctl reconfigure
fi# 11. 输出访问信息
echo "======================================"
echo "GitLab 安装完成!"
echo "访问地址: $EXTERNAL_URL"
echo "默认管理员账号: root"
echo "请首次访问设置管理员密码"
echo "======================================"# 12. 查看服务状态
gitlab-ctl status

使用方法

  1. 新建一个脚本文件:

nano install_gitlab.sh
  1. 粘贴上面的内容,保存并退出。

  2. 赋予执行权限并运行:

chmod +x install_gitlab.sh
sudo ./install_gitlab.sh
  1. 按提示输入 公网 IP 或域名,选择是否开启 HTTPS。


这个脚本安装的是 GitLab CE 社区版,支持 HTTPS,防火墙也会自动配置好。

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

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

相关文章

Android 15重磅升级:16KB内存页机制详解与适配指南

一、背景随着Android硬件架构的持续演进&#xff0c;新一代设备开始采用16KB内存页&#xff08;Page Size&#xff09;机制&#xff0c;逐步替代传统的4KB内存页设计。此项底层变更对应用兼容性产生直接影响&#xff0c;特别是对依赖Native层库、JNI接口或自定义内存管理模块的…

Mybatis-8 动态SQL

动态SQL-官方文档 文档地址 动态 SQL_MyBatis中文网 为什么需要动态SQL 1、动态SQL是MyBatis的强大特性之一 2、使用JDBC或其它类似的框架&#xff0c;根据不同条件拼接SQL语句非常麻烦&#xff0c;例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一…

PySpark数据输入

PySpark数据输入 1.理解RDD对象 2.掌握PySpark数据输入的2种方法 RDD对象 PySpark支持多种数据的输入&#xff0c;在输入完成后&#xff0c;都会得到一个&#xff1a;RDD类的对象 RDD全称为&#xff1a;弹性分布式数据集&#xff08;Resilient Distributed Datasets&#xff09…

【系统架构设计(16)】软件架构设计二:软件架构风格:构建系统的设计模式与选择指南

文章目录一、核心思想二、数据流风格&#xff1a;以数据流动为核心的处理模式三、调用返回风格&#xff1a;基于程序调用的层次化组织四、独立构件风格&#xff1a;基于事件驱动的松耦合架构五、虚拟机风格&#xff1a;提供抽象执行环境的架构模式六、仓库风格&#xff1a;以数…

MySQL速记小册(1)

1【Q】&#xff1a;Mysql中的数据排序是怎么实现的&#xff1f;【A】&#xff1a;排序过程中如果字段有索引&#xff0c;则利用索引排序。反之使用文件排序。在文件排序中&#xff0c;如果数据量少则在内存中排序&#xff0c;使用单路排序或双路排序。如果数据量大则利于磁盘文…

20250904 10:45_排查10.1.3.35新QMS系统RMAN备份失败问题(优化脚本里的环境配置,增加了check_oracle_env 函数)

一、RMAN备份失败日志如下 [2025-09-04 04:00:01] 备份脚本启动 [2025-09-04 04:00:01] 开始 RMAN 备份 CDB: ORCLCDB Message file RMAN<lang>.msb not found Verify that ORACLE_HOME is set properly [2025-09-04 04:00:01] RMAN 备份失败! 二、原备份脚本存档…

Vue3源码reactivity响应式篇之EffectScope

概述 EffectScope是Vue3中一个响应式系统的辅助类&#xff0c;用于管理副作用&#xff08;effect&#xff09;的作用域。它可以帮助我们更好地组织和管理多个effect&#xff0c;便于一起停止或暂停以及恢复&#xff0c;避免了全局状态的污染和管理的复杂性。 每一个vue组件的实…

MySQL 日志全解析:Binlog/Redo/Undo 等 5 类关键日志的配置、作用与最佳实践

1 二进制日志&#xff08;Binlog&#xff09;&#xff1a;配置与核心作用 Binlog 是 MySQL 中跨存储引擎的核心日志&#xff0c;记录所有数据修改操作&#xff0c;主要用于主从复制、数据备份恢复与跨库迁移。 1.1 Binlog 核心操作 开启 Binlog 若需开启 Binlog&#xff0c;需在…

springboot 之 HTML与图片生成 (2)

前言 之前写了一篇html转图片的 文章&#xff0c;使用中文时会出现乱码情况&#xff0c;后来又从网上找了下信息&#xff0c;这篇主要介绍下另一个转换库。 依赖 <!-- 用于将html转图片--><dependency><groupId>gui.ava</groupId><artifactId>…

计算机组成原理:计算机的分类

&#x1f4cc;目录&#x1f5a5;️ 计算机组成原理&#xff1a;计算机的分类——从架构到应用的全景梳理一、按处理数据类型分类&#xff1a;从“数字”到“混合”的演进&#xff08;一&#xff09;数字计算机&#xff1a;离散数据的“精准管家”1. 核心原理2. 关键优势3. 典型…

数据结构——单向循环链表代码(补充)

在此前的文章中&#xff08;链接如下&#xff09;&#xff0c;只有单向链表的代码&#xff0c;接下来我们来写单向循环链表&#xff0c;并用其实现一个简单的学生信息链表https://blog.csdn.net/2301_80406299/article/details/151157051?spm1011.2415.3001.10575&sharefr…

【Python自动化】 21.2 Pandas 读取 Excel 时的 dtype 参数完全指南

一、dtype 参数概述 dtype 参数用于指定列的数据类型&#xff0c;在读取 Excel 时非常重要&#xff0c;可以&#xff1a; 提高内存效率避免自动类型推断错误确保数据一致性提升读取性能 二、基本用法 1. 基础语法 import pandas as pd# 指定列数据类型 df pd.read_excel(data.…

gtest全局套件的测试使用

gtest全局套件的测试使用 #include <iostream> #include "gtest/gtest.h" #include <unordered_map>class MyEnvironment: public testing::Environment {public:virtual void SetUp() override{std::cout<<"单元测试前的环境初始化&#xff…

【系统分析师】第7章-基础知识:软件工程(核心总结)

更多内容请见: 备考系统分析师-专栏介绍和目录 文章目录 一、软件工程的基本概念 1.1 定义与意义 1.2 软件工程的基本原则 1.3 核心定义与边界 1.4 四大核心原则 1.5 三大核心目标 二、软件生命周期 2.1 定义与阶段划分 2.2 软件生命周期模型 三、软件开发方法 3.1 结构化方法…

量化基金从小白到大师 - 金融数据获取大全:从免费API到Tick级数据实战指南

量化基金从小白到大师 - 金融数据获取大全&#xff1a;从免费API到Tick级数据实战指南 各位&#xff0c;今天咱们要啃一块硬骨头——金融数据获取。别看这话题基础&#xff0c;它可是整个量化大厦的地基&#xff0c;地基不稳&#xff0c;再牛的策略都得塌房。我见过太多人&…

构建一个“会思考”的房地产数据获取脚本

—— 跨界思维&#xff1a;从认知自适应到房源信息监测 一、认知科学视角&#xff1a;什么是“会思考” 在心理学与认知科学中&#xff0c;所谓“会思考”&#xff0c;并不是指抽象的哲学推理&#xff0c;而是指个体能在复杂环境中不断调整行动策略。 比如&#xff0c;出行时如…

JavaScript的库简介

JavaScript拥有丰富的库生态系统,类似于Python的requests、numpy或C++的Boost。这些库分为两大类:前端库(如React、Vue)和后端/工具库(如Lodash、Axios)。以下是几个核心库的介绍与用法示例。 常用JavaScript库分类 前端UI库 React:Facebook开发的组件化库,用于构建用…

【无GGuF版本】如何在Colab下T4运行gpt-oss 20B

OpenAI发布了gpt-oss 120B和20B版本。这两个模型均采用Apache 2.0许可证。 特别说明的是&#xff0c;gpt-oss-20b专为低延迟及本地化/专业化场景设计&#xff08;210亿总参数&#xff0c;36亿活跃参数&#xff09;。 由于模型采用原生MXFP4量化训练&#xff0c;使得20B版本即…

LeetCode - LCR 179. 查找总价格为目标值的两个商品

题目 https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/submissions/660817798/ 思路 解法1是暴力解法&#xff0c;从第一个开始和后面的相加 暴力枚举慢就慢在&#xff0c;这个递增数组是排序好的数组&#xff0c;已经是有序的&#xff0c;暴力解法没有利用这…

UI自动化测试Python + Selenium + WinAppDriver( Windows 桌面应用)落地(一)环境搭建

最近公司要求为Windows 端桌面应用进行UI自动化测试,之前都是针对web端进行的UI自动化测试或者在早期使用的是QTP(Quick Test Professional)做PC端的UI自动化测试,而基于"经费"紧张,优先选择开源的工具,所以选择了selenium + WinAppDriver来实现。 首先,整理…