可以說是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