【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
繁體地址,請注明出處:http://hk.pswp.cn/news/908530.shtml
英文地址,請注明出處:http://en.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還…

制造業數智化卡在知識斷層?R2AIN 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;頂部 “全選” 復選框&#…