101 lines
2.4 KiB
Bash
Executable File
101 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# LLM Performance Test Tool 部署脚本
|
|
# 部署到 8001 端口
|
|
|
|
set -e
|
|
|
|
APP_NAME="llm_perf_test"
|
|
APP_DIR="/opt/llm_perf_test"
|
|
PORT=8001
|
|
USER=$(whoami)
|
|
|
|
echo "=== LLM Performance Test Tool 部署脚本 ==="
|
|
echo ""
|
|
|
|
# 检查 Python
|
|
if ! command -v python3 &> /dev/null; then
|
|
echo "错误: 未找到 Python3"
|
|
exit 1
|
|
fi
|
|
|
|
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
|
|
echo "Python 版本: $PYTHON_VERSION"
|
|
|
|
# 创建应用目录
|
|
echo "创建应用目录: $APP_DIR"
|
|
sudo mkdir -p $APP_DIR
|
|
sudo chown $USER:$USER $APP_DIR
|
|
|
|
# 复制文件
|
|
echo "复制应用文件..."
|
|
cp -r ./* $APP_DIR/
|
|
|
|
# 安装依赖
|
|
echo "安装 Python 依赖..."
|
|
cd $APP_DIR
|
|
|
|
# 根据 Python 版本安装不同版本的依赖
|
|
PY_MAJOR=$(python3 -c "import sys; print(sys.version_info.major)")
|
|
PY_MINOR=$(python3 -c "import sys; print(sys.version_info.minor)")
|
|
|
|
if [ "$PY_MAJOR" -eq 3 ] && [ "$PY_MINOR" -le 6 ]; then
|
|
echo "检测到 Python 3.6,安装兼容版本..."
|
|
pip3 install --user flask==1.1.4 requests==2.27.1 2>/dev/null || \
|
|
pip3 install flask==1.1.4 requests==2.27.1
|
|
else
|
|
pip3 install --user -r requirements.txt 2>/dev/null || \
|
|
pip3 install -r requirements.txt
|
|
fi
|
|
|
|
# 创建数据目录
|
|
mkdir -p $APP_DIR/data
|
|
|
|
# 创建 systemd 服务文件
|
|
echo "创建系统服务..."
|
|
sudo tee /etc/systemd/system/$APP_NAME.service > /dev/null <<EOF
|
|
[Unit]
|
|
Description=LLM Performance Test Tool
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=$USER
|
|
WorkingDirectory=$APP_DIR
|
|
Environment=PYTHONPATH=$APP_DIR
|
|
ExecStart=/usr/bin/python3 $APP_DIR/app.py
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# 重新加载 systemd
|
|
sudo systemctl daemon-reload
|
|
|
|
# 停止旧服务(如果存在)
|
|
sudo systemctl stop $APP_NAME 2>/dev/null || true
|
|
|
|
# 启动服务
|
|
echo "启动服务..."
|
|
sudo systemctl start $APP_NAME
|
|
sudo systemctl enable $APP_NAME
|
|
|
|
# 检查状态
|
|
sleep 2
|
|
if sudo systemctl is-active --quiet $APP_NAME; then
|
|
echo ""
|
|
echo "=== 部署成功! ==="
|
|
echo "应用地址: http://$(hostname -I | awk '{print $1}'):$PORT"
|
|
echo "本地地址: http://localhost:$PORT"
|
|
echo ""
|
|
echo "查看日志: sudo journalctl -u $APP_NAME -f"
|
|
echo "停止服务: sudo systemctl stop $APP_NAME"
|
|
echo "重启服务: sudo systemctl restart $APP_NAME"
|
|
else
|
|
echo ""
|
|
echo "=== 部署失败 ==="
|
|
echo "请检查日志: sudo journalctl -u $APP_NAME -n 50"
|
|
exit 1
|
|
fi
|