为AI课程设置一个学员AI开发环境
·
设置一个学员AI开发环境
为课程设置一个脚本,我的操作系统是操作系统是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
脚本功能详解
🔧 核心功能
- 软件源配置 - 自动设置为阿里云源
- 基础软件安装 - Python3, pip, 开发工具等
- Miniconda安装 - 使用阿里云镜像
- Ollama检查 - 提示安装状态
👥 用户管理
- 创建5个用户 (user1-user5)
- 统一密码 (b00tcamp)
- 独立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
注意事项
- 运行权限: 必须使用sudo运行
- 网络要求: 确保服务器可以访问阿里云镜像
- 存储空间: 需要足够的磁盘空间安装多个环境
- Ollama: 脚本只检查不自动安装,需要手动安装
- GPU检测: 自动检测NVIDIA GPU并安装对应版本
脚本执行完成后,用户可以直接登录系统开始AI开发工作!
更多推荐

所有评论(0)