144 lines
3.6 KiB
Bash
144 lines
3.6 KiB
Bash
#!/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 |