program/install.sh

144 lines
3.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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