#!/bin/bash # ======================================== # 智能矿山标签监测系统 - Ubuntu一键安装脚本 # ======================================== set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo "======================================" echo " 智能矿山标签监测系统" echo " 一键安装脚本 for Ubuntu" echo "======================================" # 检查是否以root或sudo运行 if [ "$EUID" -ne 0 ]; then echo -e "${YELLOW}警告: 建议使用 sudo 运行此脚本${NC}" read -p "是否使用sudo重新运行? (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then exec sudo "$0" "$@" fi fi # 1. 更新系统包 echo "" echo "[1/6] 更新系统包索引..." apt-get update -y # 2. 安装Python和依赖 echo "" echo "[2/6] 安装Python及开发工具..." apt-get install -y \ python3 \ python3-pip \ python3-venv \ python3-dev \ build-essential \ git \ wget \ curl \ libmysqlclient-dev \ default-libmysqlclient-dev # 3. 检查MySQL连接 echo "" echo "[3/6] MySQL配置提示..." echo " 本系统需要连接到MySQL数据库(神通数据库兼容MySQL协议)" echo " 请确保:" echo " - 数据库服务器可访问" echo " - 已创建数据库和用户" echo " - 已在 config.py 中配置正确的连接信息" # 4. 设置项目目录 echo "" echo "[4/6] 设置项目目录..." # 检测脚本所在目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$SCRIPT_DIR" echo " 项目目录: $PROJECT_DIR" # 5. 创建虚拟环境并安装依赖 echo "" echo "[5/6] 安装Python依赖..." cd "$PROJECT_DIR" python3 -m venv venv source venv/bin/activate pip install --upgrade pip if [ -f "requirements.txt" ]; then pip install -r requirements.txt else echo -e "${RED}错误: requirements.txt 不存在${NC}" exit 1 fi # 6. 创建name目录(如果不存在) echo "" echo "[6/6] 创建必要目录..." NAME_DIR="$(dirname "$PROJECT_DIR")/name" if [ ! -d "$NAME_DIR" ]; then mkdir -p "$NAME_DIR" echo " 已创建标签名称目录: $NAME_DIR" echo " 请将标签CSV文件放置在此目录" else echo " 标签名称目录已存在: $NAME_DIR" fi # 设置权限 chmod +x "$PROJECT_DIR/start.sh" 2>/dev/null || true chmod +x "$PROJECT_DIR/install.sh" 2>/dev/null || true echo "" echo "======================================" echo -e "${GREEN} 安装完成!${NC}" echo "======================================" echo "" echo "下一步操作:" echo " 1. 修改 config.py 配置数据库连接信息" echo " 2. 将标签CSV文件放入 $NAME_DIR" echo " 3. 运行 ./start.sh 启动服务" echo " 4. 浏览器访问 http://localhost:5000" echo "" # 询问是否配置systemd服务 read -p "是否配置系统服务(开机自启)? (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then SERVICE_NAME="mining-system" SERVICE_USER="${SUDO_USER:-$USER}" cat > /etc/systemd/system/$SERVICE_NAME.service << EOF [Unit] Description=智能矿山标签监测系统 After=network.target mysql.service [Service] Type=simple User=$SERVICE_USER WorkingDirectory=$PROJECT_DIR Environment="PATH=$PROJECT_DIR/venv/bin:/usr/bin:/bin" ExecStart=$PROJECT_DIR/venv/bin/python3 app.py Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable $SERVICE_NAME echo "" echo -e "${GREEN} 系统服务已配置: $SERVICE_NAME${NC}" echo " 启动服务: sudo systemctl start $SERVICE_NAME" echo " 查看状态: sudo systemctl status $SERVICE_NAME" echo " 查看日志: sudo journalctl -u $SERVICE_NAME -f" fi