本文目录导读:

基础多语言开发环境安装脚本
#!/bin/bash
# 通用开发环境安装脚本
# 支持 Ubuntu/Debian 和 CentOS/RHEL
set -e # 遇到错误立即退出
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检测操作系统
detect_os() {
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
VERSION=$VERSION_ID
else
log_error "无法检测操作系统"
exit 1
fi
}
# 检查是否以root运行
check_root() {
if [[ $EUID -ne 0 ]]; then
log_error "请以root权限运行此脚本"
exit 1
fi
}
# 更新系统包
update_system() {
log_info "更新系统包..."
if [[ $OS == "ubuntu" ]] || [[ $OS == "debian" ]]; then
apt-get update -y && apt-get upgrade -y
elif [[ $OS == "centos" ]] || [[ $OS == "rhel" ]]; then
yum update -y
fi
}
# 安装Git
install_git() {
log_info "安装Git..."
if command -v git &> /dev/null; then
log_info "Git已安装: $(git --version)"
else
if [[ $OS == "ubuntu" ]] || [[ $OS == "debian" ]]; then
apt-get install git -y
elif [[ $OS == "centos" ]] || [[ $OS == "rhel" ]]; then
yum install git -y
fi
log_info "Git安装完成"
fi
}
# 安装Node.js和npm
install_nodejs() {
log_info "安装Node.js..."
if command -v node &> /dev/null; then
log_info "Node.js已安装: $(node --version)"
else
curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
apt-get install -y nodejs
log_info "Node.js安装完成: $(node --version)"
fi
}
# 安装Python和pip
install_python() {
log_info "安装Python..."
if command -v python3 &> /dev/null; then
log_info "Python已安装: $(python3 --version)"
else
if [[ $OS == "ubuntu" ]] || [[ $OS == "debian" ]]; then
apt-get install python3 python3-pip -y
elif [[ $OS == "centos" ]] || [[ $OS == "rhel" ]]; then
yum install python3 python3-pip -y
fi
log_info "Python安装完成: $(python3 --version)"
fi
}
# 安装Docker
install_docker() {
log_info "安装Docker..."
if command -v docker &> /dev/null; then
log_info "Docker已安装: $(docker --version)"
else
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
log_info "Docker安装完成"
fi
}
# 安装常用开发工具
install_dev_tools() {
log_info "安装开发工具..."
if [[ $OS == "ubuntu" ]] || [[ $OS == "debian" ]]; then
apt-get install -y build-essential curl wget vim nano htop
elif [[ $OS == "centos" ]] || [[ $OS == "rhel" ]]; then
yum groupinstall "Development Tools" -y
yum install -y curl wget vim nano htop
fi
}
# 配置环境变量
setup_env() {
log_info "配置环境变量..."
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
echo 'alias python=python3' >> ~/.bashrc
echo 'alias pip=pip3' >> ~/.bashrc
source ~/.bashrc
}
# 主函数
main() {
clear
echo "======================================"
echo " 开发环境自动安装脚本 v1.0"
echo "======================================"
check_root
detect_os
update_system
# 安装选项
read -p "是否安装Node.js? [y/n]: " install_node
read -p "是否安装Python? [y/n]: " install_py
read -p "是否安装Docker? [y/n]: " install_docker_opt
read -p "是否安装开发工具? [y/n]: " install_tools
install_dev_tools
install_git
if [[ $install_node == "y" ]] || [[ $install_node == "Y" ]]; then
install_nodejs
fi
if [[ $install_py == "y" ]] || [[ $install_py == "Y" ]]; then
install_python
fi
if [[ $install_docker_opt == "y" ]] || [[ $install_docker_opt == "Y" ]]; then
install_docker
fi
setup_env
log_info "======================================"
log_info "开发环境安装完成!"
log_info "已安装的组件:"
echo " - Git: $(git --version)"
[[ $install_node == "y" ]] && echo " - Node.js: $(node --version)"
[[ $install_py == "y" ]] && echo " - Python: $(python3 --version)"
[[ $install_docker_opt == "y" ]] && echo " - Docker: $(docker --version)"
log_info "======================================"
}
# 执行主函数
main "$@"
带参数的高级版本
#!/bin/bash
# 高级开发环境安装脚本 - 支持参数
set -euo pipefail
# 配置文件
CONFIG_FILE="$HOME/.dev_env_config"
# 颜色输出
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'
# 帮助信息
usage() {
cat << EOF
用法: $0 [选项]
选项:
-h, --help 显示帮助信息
-n, --node 安装Node.js
-p, --python 安装Python
-d, --docker 安装Docker
-g, --git 安装Git
-a, --all 安装所有组件
-f, --force 强制重新安装
-v, --version 显示版本信息
示例:
$0 --all # 安装所有组件
$0 --node --python # 只安装Node.js和Python
$0 --git --force # 强制重装Git
EOF
}
# 版本信息
version() {
echo "开发环境安装脚本 v1.0.0"
}
# 检查命令是否存在
check_command() {
if command -v "$1" &> /dev/null; then
return 0
else
return 1
fi
}
# 安装函数
install_component() {
local name=$1
local install_func=$2
if check_command "$name"; then
if [[ -n ${FORCE_INSTALL:-} ]]; then
log_warn "强制重新安装 $name..."
$install_func
else
log_info "$name 已安装,跳过,使用 --force 强制重装"
fi
else
log_info "安装 $name..."
$install_func
fi
}
# 安装Node.js
install_nodejs() {
curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
apt-get install -y nodejs
npm install -g npm@latest
npm install -g yarn
npm install -g typescript
}
# 安装Python
install_python() {
apt-get install -y python3 python3-pip python3-venv
pip3 install --upgrade pip
pip3 install virtualenv virtualenvwrapper
}
# 安装Docker
install_docker() {
curl -fsSL https://get.docker.com | sh
usermod -aG docker "${USER}"
systemctl enable docker
systemctl start docker
}
# 安装Go
install_golang() {
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
rm go1.21.0.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
}
# 安装Java
install_java() {
apt-get install -y openjdk-17-jdk maven gradle
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
}
# 验证安装
verify_install() {
log_info "验证安装..."
[[ -n ${INSTALL_NODE:-} ]] && node --version && npm --version && yarn --version
[[ -n ${INSTALL_PYTHON:-} ]] && python3 --version && pip3 --version
[[ -n ${INSTALL_DOCKER:-} ]] && docker --version && docker-compose --version
[[ -n ${INSTALL_GO:-} ]] && go version
[[ -n ${INSTALL_JAVA:-} ]] && java -version
log_info "所有组件安装验证完成!"
}
# 保存配置
save_config() {
cat > "$CONFIG_FILE" << EOF
# 开发环境配置
INSTALL_DATE=$(date)
COMPONENTS=(
${INSTALL_NODE:+Node.js}
${INSTALL_PYTHON:+Python}
${INSTALL_DOCKER:+Docker}
${INSTALL_GO:+Go}
${INSTALL_JAVA:+Java}
)
EOF
}
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1" >&2
}
# 主函数
main() {
# 解析参数
while [[ $# -gt 0 ]]; do
case $1 in
-h|--help)
usage
exit 0
;;
-v|--version)
version
exit 0
;;
-n|--node)
INSTALL_NODE=1
shift
;;
-p|--python)
INSTALL_PYTHON=1
shift
;;
-d|--docker)
INSTALL_DOCKER=1
shift
;;
-g|--git)
INSTALL_GIT=1
shift
;;
-a|--all)
INSTALL_ALL=1
shift
;;
-f|--force)
FORCE_INSTALL=1
shift
;;
*)
log_error "未知参数: $1"
usage
exit 1
;;
esac
done
# 如果没有参数,安装所有
if [[ $# -eq 0 ]] || [[ -n $INSTALL_ALL ]]; then
INSTALL_NODE=1
INSTALL_PYTHON=1
INSTALL_DOCKER=1
INSTALL_GIT=1
INSTALL_GO=1
INSTALL_JAVA=1
fi
# 检查root权限
if [[ $EUID -ne 0 ]]; then
log_error "请以root权限运行此脚本"
exit 1
fi
log_info "开始安装开发环境..."
# 更新系统
apt-get update -y
# 安装基础工具
apt-get install -y curl wget git build-essential
# 根据选项安装
[[ -n $INSTALL_NODE ]] && install_component "node" install_nodejs
[[ -n $INSTALL_PYTHON ]] && install_component "python3" install_python
[[ -n $INSTALL_DOCKER ]] && install_component "docker" install_docker
[[ -n $INSTALL_GO ]] && install_component "go" install_golang
[[ -n $INSTALL_JAVA ]] && install_component "java" install_java
# 配置环境变量
if [[ -n $INSTALL_GO ]] || [[ -n $INSTALL_JAVA ]]; then
source ~/.bashrc
fi
# 验证安装
verify_install
# 保存配置
save_config
log_info "======================================"
log_info "开发环境安装完成!"
log_info "配置文件已保存到: $CONFIG_FILE"
log_info "请重新登录或执行 source ~/.bashrc 使环境变量生效"
log_info "======================================"
}
# 执行主函数
main "$@"
Docker Compose 快速安装
# docker-compose.yml
version: '3.8'
services:
# 数据库服务
postgres:
image: postgres:15
container_name: dev-postgres
environment:
POSTGRES_USER: devuser
POSTGRES_PASSWORD: devpassword
POSTGRES_DB: devdb
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
mysql:
image: mysql:8.0
container_name: dev-mysql
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: devdb
MYSQL_USER: devuser
MYSQL_PASSWORD: devpassword
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:7-alpine
container_name: dev-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
# 开发工具服务
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: dev-phpmyadmin
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- "8080:80"
depends_on:
- mysql
adminer:
image: adminer
container_name: dev-adminer
ports:
- "8081:8080"
# 消息队列
rabbitmq:
image: rabbitmq:3-management
container_name: dev-rabbitmq
environment:
RABBITMQ_DEFAULT_USER: devuser
RABBITMQ_DEFAULT_PASS: devpassword
ports:
- "5672:5672"
- "15672:15672"
# 搜索服务
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.10.0
container_name: dev-elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
ports:
- "9200:9200"
volumes:
- elastic_data:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:8.10.0
container_name: dev-kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- "5601:5601"
depends_on:
- elasticsearch
volumes:
postgres_data:
mysql_data:
redis_data:
elastic_data:
一键配置脚本
#!/bin/bash
# setup_dev_env.sh - 完整开发环境配置
set -e
BASH_ALIASES_FILE=~/.bash_aliases
BASH_ENV_FILE=~/.bashrc
create_aliases() {
cat > "$BASH_ALIASES_FILE" << 'EOF'
# 开发环境别名
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Git 别名
alias gs='git status'
alias ga='git add'
alias gc='git commit -m'
alias gp='git push'
alias gl='git log --oneline --graph --all'
alias gco='git checkout'
alias gb='git branch'
# Docker 别名
alias dps='docker ps'
alias dpa='docker ps -a'
alias dlogs='docker logs -f'
alias dstop='docker stop $(docker ps -q)'
alias dclean='docker system prune -af'
# 开发工具快捷命令
alias serve='python3 -m http.server 8000'
alias npmdev='npm run dev'
alias npmserver='npm run server'
alias lint='npm run lint'
# 导航快捷方式
alias project='cd ~/projects'
alias dev='cd ~/dev'
EOF
echo "别名配置文件已创建: $BASH_ALIASES_FILE"
}
create_utils() {
mkdir -p ~/projects ~/scripts
# 创建项目初始化脚本
cat > ~/scripts/new-project.sh << 'EOF'
#!/bin/bash
# 创建新项目
if [ -z "$1" ]; then
echo "用法: new-project <项目名>"
exit 1
fi
PROJECT_NAME=$1
PROJECT_DIR="$HOME/projects/$PROJECT_NAME"
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR"
# 根据指定语言创建项目
case "$2" in
node|js)
npm init -y
;;
python|py)
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
;;
*)
echo "项目目录已创建: $PROJECT_DIR"
;;
esac
echo "项目创建完成!"
EOF
chmod +x ~/scripts/new-project.sh
echo "实用脚本已创建在 ~/scripts/"
}
configure_shell() {
# 添加环境变量
cat >> "$BASH_ENV_FILE" << 'EOF'
# ==================== 开发环境配置 ====================
# 路径配置
export PATH=$PATH:$HOME/scripts:/usr/local/bin
# Python 配置
export PYTHONDONTWRITEBYTECODE=1
export VIRTUAL_ENV_DISABLE_PROMPT=1
# Node.js 配置
export NODE_ENV=development
# Docker Compose 别名
alias dcompose='docker-compose'
# 加载别名文件
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# ===================================================
EOF
echo "Shell 环境变量已配置"
}
install_global_tools() {
echo "安装全局开发工具..."
# npm 全局工具
npm install -g @vue/cli
npm install -g create-react-app
npm install -g nodemon
npm install -g eslint
npm install -g prettier
# pip 全局工具
pip3 install --user flake8 black pytest
echo "全局工具安装完成"
}
main() {
echo "开始配置开发环境..."
create_aliases
create_utils
configure_shell
install_global_tools
echo "开发环境配置完成!"
echo "请重新登录终端或执行: source ~/.bashrc"
}
main
使用方法
-
保存脚本文件:
# 保存 Basic Setup 脚本 chmod +x setup_dev.sh ./setup_dev.sh # 或使用参数版本 ./setup_dev_advanced.sh --all ./setup_dev_advanced.sh --node --python
-
Docker Compose 使用:
docker-compose up -d docker-compose ps
这些脚本提供了:
- 兼容性:支持多种Linux发行版
- 错误处理:带颜色标识的日志和错误检测
- 可配置性:支持参数和交互安装
- 可扩展性:易于添加新组件
需要根据您的具体需求调整脚本内容。