为课程设置一个脚本,我的操作系统是操作系统是Ubuntu 22.04
要求:

1、设置软件源为阿里云,安装python、pip、conda、测试ollama是否安装,没有的话提示。
2、设置5个用户,分别是user1-user5,登陆口令b00tcamp。每个用户使用conda安装一个AI开发环境,命名规则为AI_用户名,user1对应AI_User1,user2对应AI_User2,以此类推。
3、在用户各自的虚拟环境里,例如AI_uaer1中,使用pip安装以下:
jupyterlab, jupyter, notebook, ipython
langchain, llama-index,pytorch(测试是否有gpu,如果有,安装gpu版本)
pandas, numpy, scikit-learn,Plotly ,Matplotlib
chromadb, sqlalchemy
OpenAI ,FastAPI ,FastMCP
测试可以使用ollama
4、每个用户登陆后,自动启动自己的AI开发环境。启动jupyterlab,user1对应端口8888,user2对应端口8889,以此类推。
以下是脚本实现:

#!/bin/bash

# 脚本:AI开发环境设置脚本
# 描述:为多个用户设置AI开发环境
# 作者:Assistant
# 日期:$(date +%Y-%m-%d)

set -e  # 遇到错误立即退出

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查是否为root用户
check_root() {
    if [[ $EUID -eq 0 ]]; then
        log_info "以root权限执行脚本"
    else
        log_error "请使用sudo运行此脚本"
        exit 1
    fi
}

# 1. 设置软件源为阿里云
setup_apt_sources() {
    log_info "设置APT源为阿里云..."
    
    # 备份原有源
    cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%Y%m%d)
    
    # 创建阿里云源
    cat > /etc/apt/sources.list << 'EOF'
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF
    
    # 更新包列表
    apt update
    log_success "APT源已设置为阿里云"
}

# 安装基础软件
install_basic_software() {
    log_info "安装基础软件..."
    
    # 更新系统
    apt update
    apt upgrade -y
    
    # 安装必要软件
    apt install -y \
        python3 \
        python3-pip \
        python3-venv \
        wget \
        curl \
        git \
        build-essential \
        libssl-dev \
        libffi-dev \
        python3-dev
    
    log_success "基础软件安装完成"
}

# 安装Miniconda
install_conda() {
    log_info "安装Miniconda..."
    
    # 下载Miniconda
    wget https://mirrors.aliyun.com/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
    
    # 安装Miniconda
    bash miniconda.sh -b -p /opt/miniconda3
    
    # 设置全局conda命令
    ln -sf /opt/miniconda3/bin/conda /usr/local/bin/conda
    ln -sf /opt/miniconda3/bin/python /usr/local/bin/conda-python
    
    # 配置conda源为阿里云
    /opt/miniconda3/bin/conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main/
    /opt/miniconda3/bin/conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/r/
    /opt/miniconda3/bin/conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/msys2/
    /opt/miniconda3/bin/conda config --set show_channel_urls yes
    
    # 清理安装文件
    rm miniconda.sh
    
    log_success "Miniconda安装完成"
}

# 检查Ollama
check_ollama() {
    log_info "检查Ollama安装..."
    
    if command -v ollama &> /dev/null; then
        log_success "Ollama已安装"
        ollama --version
    else
        log_warning "Ollama未安装,请手动安装:"
        echo "curl -fsSL https://ollama.ai/install.sh | sh"
    fi
}

# 创建用户
create_users() {
    log_info "创建用户..."
    
    for i in {1..5}; do
        username="user$i"
        
        # 检查用户是否存在
        if id "$username" &>/dev/null; then
            log_info "用户 $username 已存在,跳过创建"
        else
            # 创建用户
            useradd -m -s /bin/bash "$username"
            echo "$username:b00tcamp" | chpasswd
            log_success "创建用户: $username"
        fi
        
        # 为用户设置conda环境
        setup_user_conda "$username" "$i"
    done
}

# 为用户设置conda环境
setup_user_conda() {
    local username=$1
    local user_num=$2
    local env_name="AI_$username"
    local port=$((8887 + user_num))
    
    log_info "为用户 $username 设置Conda环境: $env_name"
    
    # 创建用户conda环境
    sudo -u "$username" /opt/miniconda3/bin/conda create -n "$env_name" python=3.10 -y
    
    # 创建用户启动脚本
    cat > "/home/$username/start_ai_env.sh" << EOF
#!/bin/bash
# AI开发环境启动脚本

# 激活conda环境
eval "\$(/opt/miniconda3/bin/conda shell.bash hook)"
conda activate $env_name

# 启动jupyter lab
jupyter lab --ip=0.0.0.0 --port=$port --no-browser --notebook-dir=/home/$username --LabApp.token='' --LabApp.password='' &
echo "Jupyter Lab 已启动在端口 $port"
echo "在浏览器中访问: http://服务器IP:$port"

# 保持脚本运行
wait
EOF
    
    chmod +x "/home/$username/start_ai_env.sh"
    chown "$username:$username" "/home/$username/start_ai_env.sh"
    
    # 安装Python包
    install_user_packages "$username" "$env_name"
    
    log_success "用户 $username 的环境设置完成"
}

# 为用户安装Python包
install_user_packages() {
    local username=$1
    local env_name=$2
    
    log_info "为用户 $username 安装Python包..."
    
    # 激活环境并安装包
    sudo -u "$username" bash -c "
    eval \\\$(/opt/miniconda3/bin/conda shell.bash hook)
    conda activate $env_name
    
    # 设置pip阿里云源
    pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
    
    # 安装基础包
    pip install jupyterlab jupyter notebook ipython
    
    # 安装AI框架
    pip install langchain llama-index
    
    # 检查GPU并安装对应的PyTorch
    if nvidia-smi &> /dev/null; then
        echo '检测到GPU,安装PyTorch GPU版本'
        pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
    else
        echo '未检测到GPU,安装PyTorch CPU版本'
        pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
    fi
    
    # 安装数据科学包
    pip install pandas numpy scikit-learn plotly matplotlib
    
    # 安装数据库相关
    pip install chromadb sqlalchemy
    
    # 安装其他AI包
    pip install openai fastapi fastmcp
    
    # 测试安装
    python -c \"import torch; print(f'PyTorch版本: {torch.__version__}')\"
    python -c \"import torch; print(f'CUDA可用: {torch.cuda.is_available()}')\"
    "
    
    log_success "用户 $username 的Python包安装完成"
}

# 配置用户自动启动
setup_auto_start() {
    log_info "配置用户自动启动..."
    
    for i in {1..5}; do
        username="user$i"
        
        # 添加到.bashrc
        cat >> "/home/$username/.bashrc" << 'EOF'

# 自动启动AI开发环境
if [ -z "$SSH_TTY" ] && [ -t 0 ]; then
    echo "正在启动AI开发环境..."
    ~/start_ai_env.sh
fi
EOF
        
        chown "$username:$username" "/home/$username/.bashrc"
        log_success "用户 $username 自动启动配置完成"
    done
}

# 显示总结信息
show_summary() {
    log_success "=== AI开发环境设置完成 ==="
    echo ""
    echo "用户信息:"
    for i in {1..5}; do
        username="user$i"
        port=$((8887 + $i))
        echo "  用户名: $username | 密码: b00tcamp | Jupyter端口: $port"
    done
    echo ""
    echo "环境信息:"
    echo "  Conda路径: /opt/miniconda3"
    echo "  软件源: 阿里云"
    echo ""
    echo "使用说明:"
    echo "  1. 用户登录后会自动启动Jupyter Lab"
    echo "  2. 访问地址: http://服务器IP:端口"
    echo "  3. Conda环境名: AI_用户名"
    echo ""
    log_warning "请检查Ollama是否已安装,如未安装请手动安装"
}

# 主函数
main() {
    log_info "开始设置AI开发环境..."
    
    check_root
    setup_apt_sources
    install_basic_software
    install_conda
    check_ollama
    create_users
    setup_auto_start
    show_summary
    
    log_success "所有任务完成!"
}

# 执行主函数
main "$@"

使用说明

1. 保存脚本

将上述脚本保存为 setup_ai_environment.sh

2. 赋予执行权限

chmod +x setup_ai_environment.sh

3. 以root权限运行

sudo ./setup_ai_environment.sh

脚本功能详解

🔧 核心功能

  1. 软件源配置 - 自动设置为阿里云源
  2. 基础软件安装 - Python3, pip, 开发工具等
  3. Miniconda安装 - 使用阿里云镜像
  4. Ollama检查 - 提示安装状态

👥 用户管理

  1. 创建5个用户 (user1-user5)
  2. 统一密码 (b00tcamp)
  3. 独立Conda环境 (AI_user1 - AI_user5)

🐍 Python环境

每个用户的conda环境包含:

  • 开发工具: jupyterlab, notebook, ipython
  • AI框架: langchain, llama-index, pytorch
  • 数据科学: pandas, numpy, scikit-learn, matplotlib, plotly
  • 数据库: chromadb, sqlalchemy
  • Web框架: fastapi, fastmcp
  • 智能检测: 自动检测GPU并安装对应版本的PyTorch

🚀 自动启动

  • 用户登录后自动启动Jupyter Lab
  • 端口分配:
    • user1: 8888
    • user2: 8889
    • user3: 8890
    • user4: 8891
    • user5: 8892

注意事项

  1. 运行权限: 必须使用sudo运行
  2. 网络要求: 确保服务器可以访问阿里云镜像
  3. 存储空间: 需要足够的磁盘空间安装多个环境
  4. Ollama: 脚本只检查不自动安装,需要手动安装
  5. GPU检测: 自动检测NVIDIA GPU并安装对应版本

脚本执行完成后,用户可以直接登录系统开始AI开发工作!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐