Linux base 常用範本
可用於 x86 or arm 機型的一鍵環境安裝,支持Docker/Docker-compose, AWS Cli , EFS ... 等
可用於 x86 or arm 機型的一鍵環境安裝,支持Docker/Docker-compose, AWS Cli , EFS ... 等。
會自動將寫入日誌 在 /data/var/logs/init.log
若安裝異常或失敗會自動停止,可以直接去目錄查詢原因。
OS : Ubuntu
#!/bin/bash
set -e
set -o pipefail
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 全局顏色定義
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;36m'
PURPLE='\033[0;35m'
NC='\033[0m' # 無顏色
# 創建日誌文件
LOG_FILE="/data/var/logs/init.log"
mkdir -p /data/var/logs
# 執行並記錄日誌的函數
run_and_log() {
echo "執行: $1" | tee -a "$LOG_FILE"
$1 2>&1 | tee -a "$LOG_FILE"
return ${PIPESTATUS[0]}
}
standard_install(){
echo -e "${BLUE}--- init apt source ---${NC}"
apt update && apt install -y git
apt install -y git
apt install -y rsync
apt install -y jq
apt install -y build-essential
apt install -y tzdata
apt install -y unzip
apt install -y nfs-common
echo -e "${GREEN}--- 創建生產目錄 ---${NC}"
mkdir -p /data/apps
mkdir -p /data/htdocs
mkdir -p /data/var/logs
mkdir -p /data/var/backup
mkdir -p /data/src
mkdir -p /data/exec
mkdir -p /data/dev
echo -e "${GREEN}生產目錄創建完成${NC}"
}
docker_install(){
echo -e "${BLUE}--- Docker Install ---${NC}"
mkdir -p /etc/docker
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh &&
curl -L "https://github.com/docker/compose/releases/download/v2.34.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose &&
chmod +x /usr/local/bin/docker-compose
docker network create shared-network
sleep 1
}
aws_cli_install(){
# 自動安裝AWS CLI的腳本
# 會自動檢測CPU架構並安裝相應版本
# 設置退出時清理臨時文件
cleanup() {
echo "清理臨時文件..."
rm -rf /tmp/awscliv2.zip /tmp/aws-cli-setup
}
trap cleanup EXIT
# 輸出彩色信息
info() {
echo -e "\033[0;32m[信息]\033[0m $1"
}
error() {
echo -e "\033[0;31m[錯誤]\033[0m $1"
exit 1
}
warning() {
echo -e "\033[0;33m[警告]\033[0m $1"
}
# 檢測CPU架構
info "正在檢測CPU架構..."
ARCH=$(uname -m)
case $ARCH in
x86_64)
info "檢測到x86_64架構。"
URL="https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"
;;
aarch64|arm64)
info "檢測到ARM架構。"
URL="https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip"
;;
*)
error "不支持的架構: $ARCH。目前AWS CLI只支持x86_64和ARM架構。"
;;
esac
# 檢查必要工具
check_command() {
command -v $1 >/dev/null 2>&1 || { error "未找到命令 $1,請先安裝它。"; }
}
info "檢查必要工具..."
check_command curl
check_command unzip
# 下載AWS CLI
info "正在下載AWS CLI..."
if ! curl -s -o /tmp/awscliv2.zip $URL; then
error "下載AWS CLI失敗!請檢查網絡連接。"
fi
# 解壓縮
info "正在解壓縮..."
if ! unzip -q -o /tmp/awscliv2.zip -d /tmp/aws-cli-setup; then
error "解壓縮失敗!"
fi
# 安裝AWS CLI
info "正在安裝AWS CLI..."
if ! sudo /tmp/aws-cli-setup/aws/install --update; then
error "安裝失敗!請嘗試手動安裝。"
fi
# 驗證安裝
info "驗證安裝..."
if command -v aws >/dev/null 2>&1; then
VERSION=$(aws --version)
info "AWS CLI 安裝成功!版本: $VERSION"
else
warning "AWS CLI 似乎未正確安裝。請嘗試手動安裝或檢查PATH環境變量。"
fi
info "安裝完成!"
}
version_check(){
echo -e "${YELLOW}-------- Git version --------${NC}"
git --version
echo -e "${YELLOW}-------- Docker version --------${NC}"
docker --version
docker-compose --version
echo -e "${YELLOW}-------- AWS-cli version --------${NC}"
aws --version
echo -e "${YELLOW}-------- EFS version --------${NC}"
mount --version
echo ""
echo ""
echo ""
}
# 執行安裝函數並記錄日誌
run_and_log standard_install
run_and_log docker_install
run_and_log aws_cli_install
run_and_log version_check