| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/bin/bash
- # ============================================================
- # ZoneAlarm 目标机安装脚本 (在解压出的 zone_alarm 目录内执行)
- # 用法: sudo bash install.sh
- # 环境变量:
- # ZA_INSTALL_DIR 安装目录, 默认 /opt/zone_alarm
- # ZA_PORT Web端口, 默认 80 (生产环境)
- # ZA_SKIP_SERVICE 设为1则不注册systemd服务(仅测试用)
- # 说明:
- # - 已存在的 config.json / data/ 会保留, 不会被覆盖
- # - 绑定80端口需要root权限(systemd以root运行即可)
- # ============================================================
- set -e
- INSTALL_DIR=${ZA_INSTALL_DIR:-/opt/zone_alarm}
- PORT=${ZA_PORT:-80}
- SERVICE=zone_alarm
- if [ "$(id -u)" != "0" ]; then
- echo "[ERROR] 请使用 root 运行本脚本"; exit 1
- fi
- if [ ! -f ./zone_alarm ] || [ ! -d ./lib ]; then
- echo "[ERROR] 请在解压后的 zone_alarm 包目录内执行"; exit 1
- fi
- echo "== 停止旧服务 =="
- systemctl stop $SERVICE 2>/dev/null || true
- echo "== 安装文件到 $INSTALL_DIR =="
- mkdir -p "$INSTALL_DIR"
- cp -r lib web models "$INSTALL_DIR/"
- cp logo.png logo.ico zone_alarm run.sh "$INSTALL_DIR/"
- chmod +x "$INSTALL_DIR/zone_alarm" "$INSTALL_DIR/run.sh"
- echo "== 配置文件 =="
- mkdir -p "$INSTALL_DIR/config" "$INSTALL_DIR/data/screenshots"
- if [ -f "$INSTALL_DIR/config/config.json" ]; then
- echo " 检测到已有配置, 保留原配置(含账号/围栏/绑定)"
- else
- cp config/config.example.json "$INSTALL_DIR/config/config.json"
- echo " 已写入默认配置"
- fi
- # 生产环境端口
- sed -i "s/\"web_port\"[[:space:]]*:[[:space:]]*[0-9]*/\"web_port\": $PORT/" \
- "$INSTALL_DIR/config/config.json"
- echo "== 注册 systemd 服务 (开机自启) =="
- sed "s|__INSTALL_DIR__|$INSTALL_DIR|g" zone_alarm.service > /etc/systemd/system/$SERVICE.service
- systemctl daemon-reload
- systemctl enable $SERVICE >/dev/null 2>&1
- if [ "$ZA_SKIP_SERVICE" != "1" ]; then
- systemctl restart $SERVICE
- sleep 2
- systemctl is-active $SERVICE >/dev/null && STATUS="运行中" || STATUS="启动失败(journalctl -u $SERVICE 查看)"
- else
- STATUS="跳过(ZA_SKIP_SERVICE=1)"
- fi
- IP=$(hostname -I 2>/dev/null | awk '{print $1}')
- echo ""
- echo "========================================="
- echo " 安装完成: $INSTALL_DIR"
- echo " 服务状态: $STATUS"
- echo " 访问地址: http://${IP:-<本机IP>}:$PORT"
- echo " 默认账号: admin / admin (请尽快修改)"
- echo " 日志查看: journalctl -u $SERVICE -f"
- echo "========================================="
|