当前位置: 首页 > news >正文

【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

相关文章:

  • 服务器出现故障怎么办?快速排查与解决方法
  • 使用 Python 自动化 Word 文档样式复制与内容生成
  • C# 快速检测 PDF 是否加密,并验证正确密码
  • Podman 和 Docker
  • Linux系统:ELF文件的定义与加载以及动静态链接
  • 使用变异系数增强 CFD 收敛标准
  • Go 中 map 的双值检测写法详解
  • NSSCTF-WEB
  • HakcMyVM -TheWall
  • Nuxt.js 布局系统详解:构建可复用页面框架
  • vue-21 (使用 Vuex 模块和异步操作构建复杂应用)
  • vm+ubuntu24.04扩展磁盘
  • 如何在软件著作权补正时查看已提交的程序鉴别材料和文档鉴别材料
  • 计算机网络(6)——局域网
  • Abaqus有限元应力集中
  • rk3588 区分两个相同的usb相机
  • 手写muduo网络库(零):多线程中使用 weakptr 跨线程监听生命状态
  • Linux中 SONAME 的作用
  • 【Redis】Cluster集群
  • LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
  • 凯里建设局网站/长沙百家号seo
  • 做房地产网站广告销售/关键词搜索技巧
  • 2019年建设什么网站好/seo搜索优化怎么做
  • 减肥药可以做网站吗/百度推广登录平台app
  • 长沙建站模板/滁州网站seo
  • 照明公司网站制作/网站如何快速收录