【ubuntu】虚拟机安装配置,sh脚本自动化,包含 apt+时间同步+docker+mysql+redis+pgsql

可以说是ubuntu基础环境搭建合集,个人学习用,使用sh一键安装,避免复制各种命令

流程主要包括
0. 可选择不同ubuntu版本对应安装(支持 Ubuntu 20.04/22.04/23.04/24.04)
1. apt换源aliyun
2. 时间选择上海时区,安装chrony联网同步时间
3. (可选)安装 Docker + 配置镜像仓库源 + 用户组设置 + 开机自启动
4. (可选)MySQL + Redis + PostgreSQL多版本选择,通过docker安装,附带容器卷映射
5. (可选)戴笠配置(主要解决curl、wget、git clone github.com的连接问题)
使用流程
  • vim init_ubuntu.sh新建一个脚本文件
  • 把下面的复制进去就行
  • sudo -v,更新用户权限
  • 然后chmod 755 ./init_ubuntu.sh添加执行权限
  • 然后直接./init_ubuntu.sh
#!/bin/bash# 询问是否执行某个操作的通用函数
# 用法:ask_to_run "提示语句" 函数名
ask_to_run() {local prompt="$1"local callback="$2"read -p "$prompt [y/N]: " user_choicecase "$user_choice" in[yY][eE][sS]|[yY])echo "执行:$callback ..."$callback;;*)echo "跳过:$callback。";;esac
}# apt 换源为阿里云,支持 Ubuntu 20.04/22.04/23.04/24.04
update_apt() {echo "正在更换阿里云软件源..."codename=$(lsb_release -cs)case "$codename" infocal|jammy|lunar|noble)sudo tee /etc/apt/sources.list > /dev/null <<EOF
deb https://mirrors.aliyun.com/ubuntu/ $codename main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $codename main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ ${codename}-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ ${codename}-security main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ ${codename}-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ ${codename}-updates main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ ${codename}-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ ${codename}-backports main restricted universe multiverse
EOFecho "已设置阿里云镜像源,开始更新缓存..."sudo apt-get updateecho "apt 更新完成。";;*)echo "当前 Ubuntu 版本($codename)不在支持列表中,未执行换源。";;esac
}# 设置上海时区,安装并启动 chrony 同步网络时间
sync_time() {echo "设置时区为 Asia/Shanghai..."sudo timedatectl set-timezone Asia/Shanghaiecho "安装并启用 chrony 时间同步服务..."sudo apt install -y chrony > /dev/nullsudo systemctl enable --now chronyecho "时间已同步,chrony 已启用。"
}# 安装 Docker + 配置镜像仓库源 + 用户组设置
install_docker() {echo "开始安装 Docker..."sudo apt-get updatesudo apt-get install -y \apt-transport-https \ca-certificates \curl \gnupg \lsb-releaseecho "添加 Docker GPG 密钥..."sudo mkdir -p /etc/apt/keyringscurl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \gpg --dearmor | sudo tee /etc/apt/keyrings/docker.gpg > /dev/nullcodename=$(lsb_release -cs)echo "添加 Docker 镜像源..."echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \$codename stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get updatesudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginecho "写入 Docker 镜像加速器配置..."sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json > /dev/null <<EOF
{"registry-mirrors": ["https://hub.xdark.top/","https://hub.littlediary.cn/","https://dockerpull.org/","https://hub.crdz.gq/","https://docker.1panel.live/","https://docker.unsee.tech/","https://docker.udayun.com/","https://docker.kejilion.pro/","https://registry.dockermirror.com/","https://docker.rainbond.cc/","https://hub.geekery.cn/","https://docker.1panelproxy.com/","https://docker.linkedbus.com/","https://docker.nastool.de/"]
}
EOFecho "重启 Docker 服务并设置开机自启..."sudo systemctl daemon-reexecsudo systemctl restart dockersudo systemctl enable dockerecho "Docker 已设置为开机自启。"echo "将当前用户 ($USER) 添加到 docker 用户组..."sudo usermod -aG docker $USERecho "当前用户已加入 docker 组,请退出终端或重新登录后生效"echo "Docker 安装并配置完成。可以尝试运行:docker run hello-world"
}# 使用 Docker 安装常用数据库(MySQL / Redis / PostgreSQL),统一密码123456
install_common_databases() {echo "开始通过 Docker 安装常用数据库(使用 root/123456)..."# 创建统一的数据存储目录sudo mkdir -p /opt/docker/mysql /opt/docker/redis /opt/docker/postgressudo chown -R $USER:$USER /opt/docker# 安装 MySQLecho ""echo "安装 MySQL(推荐版本:5.7 或 8.0)"read -p "请输入要安装的 MySQL 版本 [默认: 8.0]: " mysql_vermysql_ver=${mysql_ver:-8.0}docker run -d --name mysql \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=123456 \-v /opt/docker/mysql/data:/var/lib/mysql \-v /opt/docker/mysql/conf:/etc/mysql/conf.d \--restart unless-stopped \mysql:$mysql_verecho "MySQL 容器已创建,数据挂载至 /opt/docker/mysql,root 密码为 123456。"# 安装 Redisecho ""echo "安装 Redis(推荐版本:6.2 或 7)"read -p "请输入要安装的 Redis 版本 [默认: 7]: " redis_verredis_ver=${redis_ver:-7}docker run -d --name redis \-p 6379:6379 \-v /opt/docker/redis/data:/data \--restart unless-stopped \redis:$redis_ver \redis-server --appendonly yesecho "Redis 容器已创建,数据挂载至 /opt/docker/redis,无密码(可后续手动配置)。"# 安装 PostgreSQLecho ""echo "安装 PostgreSQL(推荐版本:13 或 15)"read -p "请输入要安装的 PostgreSQL 版本 [默认: 15]: " pgsql_verpgsql_ver=${pgsql_ver:-15}docker run -d --name postgres \-p 5432:5432 \-e POSTGRES_PASSWORD=123456 \-v /opt/docker/postgres/data:/var/lib/postgresql/data \--restart unless-stopped \postgres:$pgsql_verecho "PostgreSQL 容器已创建,数据挂载至 /opt/docker/postgres,root 密码为 123456。"echo ""echo "所有数据库容器安装完成"
}# 添加代理配置到 ~/.bashrc,支持 Cla 或 v2r,注意要打开的允许局域网访问
configure_proxy() {echo "请选择代理方式:"echo "1) Cla Ver (SOCKS5端口7898, HTTP端口7899)"echo "2) v2r     (SOCKS5端口10808, HTTP端口10809)"read -p "输入选项编号 [1/2]: " proxy_choicecase "$proxy_choice" in1){echo ""echo "# === Cla 代理设置 ==="echo "alias use-proxy='export http_proxy=\"socks5h://192.168.88.1:7897\"; export https_proxy=\"socks5h://192.168.88.1:7897\"'"echo "alias use-proxy-http='export http_proxy=\"http://192.168.88.1:7897\"; export https_proxy=\"http://192.168.88.1:7897\"'"echo "alias disable-proxy='unset http_proxy https_proxy'"} >> ~/.bashrcecho "已将 Cla 代理命令写入 ~/.bashrc";;2){echo ""echo "# === v2 代理设置 ==="echo "alias use-proxy='export http_proxy=\"socks5h://192.168.88.1:10808\"; export https_proxy=\"socks5h://192.168.88.1:10808\"'"echo "alias use-proxy-http='export http_proxy=\"http://192.168.88.1:10809\"; export https_proxy=\"http://192.168.88.1:10809\"'"echo "alias disable-proxy='unset http_proxy https_proxy'"} >> ~/.bashrcecho "已将 v2 代理命令写入 ~/.bashrc";;*)echo "无效选项,跳过代理配置。";;esac# 使 alias 生效source ~/.bashrc
}# 主函数入口
main() {echo "开始初始化 Ubuntu 环境..."# aptupdate_apt# 时间同步sync_time# dockerask_to_run "是否安装 Docker?" install_docker# 判断 Docker 是否安装成功后再提示数据库安装if command -v docker &>/dev/null; thenask_to_run "是否通过 Docker 安装 MySQL / Redis / PostgreSQL?" install_common_databaseselseecho "未检测到 Docker,跳过数据库安装提示。"fi# 代理配置configure_proxyecho "==初始化全部完成=="
}main

二、具体戴笠命令示例

配置戴笠后你可以直接使用以下命令:

1. git clone
use-proxy   # git建议 SOCKS5git clone https://github.com/torvalds/linux.gitdisable-proxy # 用完禁用
2. wget
use-proxy-http   # wget建议使用 HTTP 代理更兼容wget https://github.com/disable-proxy
3. curl
use-proxy   # curl建议 SOCKS5 代理curl https://api.github.com/users/octocatdisable-proxy

https://github.com/0voice

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

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

相关文章

Rust 学习笔记:关于智能指针的练习题

Rust 学习笔记&#xff1a;关于智能指针的练习题 Rust 学习笔记&#xff1a;关于智能指针的练习题问题一问题二问题三问题四问题五问题六问题七问题八问题九问题十问题十一 Rust 学习笔记&#xff1a;关于智能指针的练习题 参考视频&#xff1a; https://www.bilibili.com/vi…

JavaScript ES6 解构:优雅提取数据的艺术

JavaScript ES6 解构&#xff1a;优雅提取数据的艺术 在 JavaScript 的世界中&#xff0c;ES6&#xff08;ECMAScript 2015&#xff09;的推出为开发者带来了许多革命性的特性&#xff0c;其中“解构赋值”&#xff08;Destructuring Assignment&#xff09;无疑是最受欢迎的功…

Shell 命令及运行原理 + 权限的概念(7)

文章目录 Shell 命令以及运行原理&#xff08;4-1.22.08&#xff09;Linux权限的概念1. 什么是权限2. 认识人&#xff08;普通用户&#xff0c;root用户&#xff09;以及两种用户的切换认识普通用户和root用户两种用户之间的切换指令提权 3. 文件的属性解析 权限属性指令ll显示…

以智能管理为基础,楼宇自控打造建筑碳中和新路径

在全球气候变化的严峻形势下&#xff0c;“碳中和”已成为各国发展的重要战略目标。建筑行业作为能源消耗与碳排放的“大户”&#xff0c;其运行阶段的能耗占全社会总能耗近40%&#xff0c;碳排放占比与之相当&#xff0c;实现建筑碳中和迫在眉睫。传统建筑管理模式下&#xff…

Python爬虫实战:研究Hyper 相关技术

一、项目概述 本项目展示了如何结合 Python 的异步编程技术与 Hyper 框架开发一个高性能、可扩展的网络爬虫系统。该系统不仅能够高效地爬取网页内容,还提供了 RESTful API 接口,方便用户通过 API 控制爬虫的运行状态和获取爬取结果。 二、系统架构设计 1. 整体架构 系统采…

html 滚动条滚动过快会留下边框线

滚动条滚动过快时&#xff0c;会留下边框线 但其实大部分时候是这样的&#xff0c;没有多出边框线的 滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行为有关。这种问题可能出现在使用了自定义滚动条样式的情况下。 注意&#xff1a;使用方法 6 好使&#xff0c;其它…

【Linux】Ubuntu 创建应用图标的方式汇总,deb/appimage/通用方法

Ubuntu 创建应用图标的方式汇总&#xff0c;deb/appimage/通用方法 对于标准的 Ubuntu&#xff08;使用 GNOME 桌面&#xff09;&#xff0c;desktop 后缀的桌面图标文件主要保存在以下三个路径&#xff1a; 当前用户的桌面目录&#xff08;这是最常见的位置&#xff09;。所…

【自然语言处理】大模型时代的数据标注(主动学习)

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;FreeAL: Towards Human-Free Active Learning in the Era of Large Language Models发表情况&#xff1a;2023-EMNLP作者单位&#xff1a;浙江大…

【论文解读】DeepSeek-R1

文章目录 概览一、DeepSeek-R1-Zero&#xff1a;在 Base Model 上直接进行 RL&#xff08;一&#xff09;强化学习算法&#xff08;二&#xff09;奖励模型&#xff08;三&#xff09;数据构造&#xff08;四&#xff09;DeepSeek-R1-Zero 的性能、自我进化过程和 Aha Moment1.…

巴西医疗巨头尤迈Kafka数据泄露事件的全过程分析与AI安防策略分析

一、事件背景与主体信息 涉事主体:Unimed,全球最大医疗合作社,巴西医疗行业龙头企业,拥有约1500万客户。技术背景:泄露源于其未保护的Kafka实例(开源实时数据传输平台),用于客户与聊天机器人“Sara”及医生的实时通信。二、时间线梳理 时间节点关键事件描述2025年3月24…

软信天成:数据驱动型背后的人工智能,基于机器学习的数据管理

在数字化转型浪潮中&#xff0c;当代企业如同逆水行舟&#xff0c;不进则退。无数企业希望通过数字化转型捕获全新的市场机遇&#xff0c;改善财政状况&#xff0c;在未来市场竞争中占据一席之地。要想获得成功的数字化转型&#xff0c;关键因素在于具备可靠、及时的数据用以支…

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…

【Java学习笔记】StringBuilder类(重点)

StringBuilder&#xff08;重点&#xff09; 1. 基本介绍 是一个可变的字符串序列。该类提供一个与 StringBuffer 兼容的 API&#xff0c;但不保证同步&#xff08;StringBuilder 不是线程安全的&#xff09; 该类被设计用作 StringBuffer 的一个简易替换&#xff0c;用在字符…

计算机网络 | 1.2 计算机网络体系结构与参考模型

计算机网络体系结构与参考模型 目录 计算机网络体系结构与参考模型 【思维导图】 1、计算机的分层结构 1、为什么要分层&#xff1f; 2、什么是计算机网络体系结构 2、计算机网络协议、接口和服务 1&#xff09;协议&#xff1a; 2&#xff09;接口&#xff1a; 3…

微软的新系统Windows12未来有哪些新特性

在今年即将到来的重大设计升级中,苹果计划对其全线操作系统统一按年份命名,作为另一巨头微软的win12还远吗?win11和win10是微软现在正在用的主流版本,win11系统发布于2021年6月24日,win10系统发布于2015年7月29日。预计win12尝鲜版可能在2025年下半年或明年。 尽管win12还…

制造业数智化卡在知识断层?R²AIN SUITE AI知识管理打通关键经络

在一家工厂里&#xff0c;工程师正面临棘手难题——某机器异常振动的处理方案。他的笔记本记录着三年前类似案例的解决方案&#xff0c;但翻查半小时仍未找到关键参数。与此同时&#xff0c;工厂的碳排放监控系统显示&#xff0c;因设备停机导致的额外能源损耗已使产线碳强度有…

构造数列中的常见变形总结

前情概要 针对高考中构造数列的常见变形做一总结,便于梳理思路,提升思维。 类型Ⅰ: 形如 a n + 1 = p ⋅ a n + q a_{n+1}=p\cdot a_n+q an+1​=p⋅an​+q, p , q p,q p,q为常数,即 a n + 1 = f ( a n ) a_{n+1}=f(a_n) an+1​=f(an​),构造变形方向: 其一: a n…

全国县域统计年鉴PDF-Excel电子版-2022年

全国县域统计年鉴PDF-Excel电子版-2022年.ziphttps://download.csdn.net/download/2401_84585615/89784662 https://download.csdn.net/download/2401_84585615/89784662 《中国县域统计年鉴》是一部全面反映中国县域社会经济发展状况的资料性年鉴。自2014年起&#xff0c;该年…

81 实战一:给root目录扩容

添加一块100G硬盘 vgextend centos /dev/sdb1 /dev/sdc lvextend -L +120G /dev/centos/root xfs_growfs /dev/centos/root df -h 看是否扩容成功 82 实战二:给swap空间扩容 添加一块20G硬盘 fdisk -l 可以看到新添加的硬盘 vgextend centos /dev/sdd …

实现购物车微信小程序

实现一个微信小程序购物车页面&#xff0c;包含以下功能&#xff1a; 需求说明&#xff1a; 商品列表&#xff1a;显示商品名称、价格、数量加减按钮&#xff0c;支持修改商品数量&#xff08;数量≥1&#xff09;。 全选 / 反选功能&#xff1a;顶部 “全选” 复选框&#…