本文目录导读:

基础多语言开发环境安装脚本
#!/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发行版
- 错误处理:带颜色标识的日志和错误检测
- 可配置性:支持参数和交互安装
- 可扩展性:易于添加新组件
需要根据您的具体需求调整脚本内容。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播