From 211041171204168a3bbc76bbd85a021dca584d59 Mon Sep 17 00:00:00 2001 From: MasonLiu <2857911564@qq.com> Date: Sun, 24 May 2026 03:04:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- app/install.sh | 191 +++++++++++++++++ app/monitor.py | 0 app/uninstall.sh | 72 +++++++ index.php | 494 ------------------------------------------- static/api.png | Bin 375371 -> 0 bytes static/favicon.ico | Bin 38700 -> 0 bytes static/heyunlogo.png | Bin 20562 -> 0 bytes static/initial.css | 121 ----------- static/style.css | 338 ----------------------------- web | 1 + 11 files changed, 267 insertions(+), 954 deletions(-) create mode 100644 app/install.sh create mode 100644 app/monitor.py create mode 100644 app/uninstall.sh delete mode 100644 index.php delete mode 100644 static/api.png delete mode 100644 static/favicon.ico delete mode 100644 static/heyunlogo.png delete mode 100644 static/initial.css delete mode 100644 static/style.css create mode 160000 web diff --git a/README.md b/README.md index 9e9c42a..67d77de 100644 --- a/README.md +++ b/README.md @@ -28,12 +28,14 @@  #### Web端 -部署到服务器上,分配域名或直接IP访问即可 +将web目录部分部署到服务器上,分配域名或直接IP访问即可 首次使用会进入配置页,依次输入API_PASS,ACCOUNT,API_KEY(其中API_PASS是您自定义的网站访问密码,支持大小写字母以及数字) 随后访问`http://example.com/?pass=API_PASS`即可 +切记:切勿将app部分放置于网站目录下 + #### 监控端 **安装:** diff --git a/app/install.sh b/app/install.sh new file mode 100644 index 0000000..a2bfe0b --- /dev/null +++ b/app/install.sh @@ -0,0 +1,191 @@ +#!/bin/bash + +# 核云IDC服务商VPS自动监测重启程序 - 安装脚本 +# 该脚本会创建一个systemd服务,持续化运行当前目录下的python main.py命令 + +# 获取当前脚本所在目录的绝对路径 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(dirname "$SCRIPT_DIR")" + +# 定义服务名称 +SERVICE_NAME="idc-monitor" +SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" + +echo "正在安装 ${SERVICE_NAME} 服务..." + +# 检查是否以root权限运行 +if [ "$EUID" -ne 0 ]; then + echo "错误: 请以root权限运行此脚本 (sudo ./install.sh)" + exit 1 +fi + +# 检查Python是否已安装 +if ! command -v python3 &> /dev/null; then + if command -v python &> /dev/null; then + PYTHON_CMD="python" + else + echo "错误: 未找到Python,请先安装Python" + exit 1 + fi +else + PYTHON_CMD="python3" +fi + +echo "检测到Python: ${PYTHON_CMD}" + +# 检查并安装pip +install_pip() { + echo "正在安装pip..." + + # 尝试使用系统包管理器安装pip + if command -v apt-get &> /dev/null; then + apt-get update && apt-get install -y python3-pip + PIP_CMD="pip3" + elif command -v yum &> /dev/null; then + yum install -y python3-pip + PIP_CMD="pip3" + elif command -v dnf &> /dev/null; then + dnf install -y python3-pip + PIP_CMD="pip3" + else + # 如果包管理器不可用,使用get-pip.py + echo "未检测到常用包管理器,尝试使用get-pip.py安装..." + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py + ${PYTHON_CMD} get-pip.py + rm -f get-pip.py + PIP_CMD="pip" + fi + + # 验证pip安装 + if command -v pip3 &> /dev/null; then + PIP_CMD="pip3" + elif command -v pip &> /dev/null; then + PIP_CMD="pip" + else + echo "错误: pip安装失败" + return 1 + fi + + echo "✅ pip安装成功: ${PIP_CMD}" + return 0 +} + +# 检查pip是否存在 +if command -v pip3 &> /dev/null; then + PIP_CMD="pip3" + echo "检测到pip: ${PIP_CMD}" +elif command -v pip &> /dev/null; then + PIP_CMD="pip" + echo "检测到pip: ${PIP_CMD}" +else + echo "警告: 未检测到pip" + read -p "是否现在安装pip?(Y/n): " -n 1 -r + echo + if [[ $REPLY =~ ^[Nn]$ ]]; then + echo "跳过pip安装" + PIP_CMD="" + else + if ! install_pip; then + echo "错误: pip安装失败,无法继续" + exit 1 + fi + fi +fi + +# 安装Python依赖 +if [ -f "${PROJECT_DIR}/requirements.txt" ]; then + if [ -n "${PIP_CMD}" ]; then + echo "正在安装Python依赖包..." + cd ${PROJECT_DIR} + if ${PIP_CMD} install -r requirements.txt; then + echo "✅ Python依赖包安装成功" + else + echo "❌ Python依赖包安装失败" + read -p "是否继续安装服务?(y/N): " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "安装已取消" + exit 1 + fi + fi + else + echo "警告: 跳过依赖包安装(pip不可用)" + fi +else + echo "警告: ${PROJECT_DIR}/requirements.txt 文件不存在,跳过依赖安装" +fi + +# 检查main.py是否存在 +if [ ! -f "${PROJECT_DIR}/main.py" ]; then + echo "警告: ${PROJECT_DIR}/main.py 文件不存在" + echo "请确保main.py文件位于项目根目录下" + read -p "是否继续安装?(y/N): " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "安装已取消" + exit 1 + fi +fi + +# ... existing code ... + +# 创建systemd服务文件 +cat > ${SERVICE_FILE} << EOF +[Unit] +Description=Heyun IDC Monitor Service +After=network.target +Wants=network-online.target + +[Service] +Type=simple +User=root +WorkingDirectory=${PROJECT_DIR} +ExecStart=${PYTHON_CMD} ${PROJECT_DIR}/main.py +Restart=always +RestartSec=10 +StandardOutput=journal +StandardError=journal +SyslogIdentifier=${SERVICE_NAME} + +# 资源限制 +LimitNOFILE=65536 + +# 安全设置 +NoNewPrivileges=true +ProtectSystem=strict +ReadWritePaths=${PROJECT_DIR} + +[Install] +WantedBy=multi-user.target +EOF + +# ... existing code ... + +# 重新加载systemd配置 +systemctl daemon-reload + +# 启用服务(开机自启) +systemctl enable ${SERVICE_NAME} + +# 启动服务 +systemctl start ${SERVICE_NAME} + +# 检查服务状态 +if systemctl is-active --quiet ${SERVICE_NAME}; then + echo "✅ ${SERVICE_NAME} 服务已成功安装并启动" + echo "服务状态: 运行中" +else + echo "❌ ${SERVICE_NAME} 服务启动失败" + echo "请检查日志: journalctl -u ${SERVICE_NAME} -f" + exit 1 +fi + +echo "" +echo "常用命令:" +echo " 查看服务状态: systemctl status ${SERVICE_NAME}" +echo " 查看实时日志: journalctl -u ${SERVICE_NAME} -f" +echo " 停止服务: systemctl stop ${SERVICE_NAME}" +echo " 重启服务: systemctl restart ${SERVICE_NAME}" +echo " 卸载服务: ./uninstall.sh" +echo "" +echo "安装完成!" \ No newline at end of file diff --git a/app/monitor.py b/app/monitor.py new file mode 100644 index 0000000..e69de29 diff --git a/app/uninstall.sh b/app/uninstall.sh new file mode 100644 index 0000000..ea413fc --- /dev/null +++ b/app/uninstall.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# 核云IDC服务商VPS自动监测重启程序 - 卸载脚本 +# 该脚本会移除systemd服务并清理相关文件 + +# 定义服务名称 +SERVICE_NAME="idc-monitor" +SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" + +echo "正在卸载 ${SERVICE_NAME} 服务..." + +# 检查是否以root权限运行 +if [ "$EUID" -ne 0 ]; then + echo "错误: 请以root权限运行此脚本 (sudo ./uninstall.sh)" + exit 1 +fi + +# 检查服务是否存在 +if [ ! -f "${SERVICE_FILE}" ]; then + echo "警告: 服务文件 ${SERVICE_FILE} 不存在" + echo "可能服务未安装或已被卸载" + exit 0 +fi + +# 停止服务 +echo "正在停止服务..." +if systemctl is-active --quiet ${SERVICE_NAME}; then + systemctl stop ${SERVICE_NAME} + echo "✅ 服务已停止" +else + echo "服务未运行,跳过停止步骤" +fi + +# 禁用服务(取消开机自启) +echo "正在禁用服务..." +if systemctl is-enabled --quiet ${SERVICE_NAME} 2>/dev/null; then + systemctl disable ${SERVICE_NAME} + echo "✅ 服务已禁用" +else + echo "服务未启用,跳过禁用步骤" +fi + +# 重新加载systemd配置 +echo "正在清理systemd配置..." +systemctl daemon-reload +systemctl reset-failed ${SERVICE_NAME} 2>/dev/null + +# 删除服务文件 +echo "正在删除服务文件..." +rm -f ${SERVICE_FILE} +echo "✅ 服务文件已删除: ${SERVICE_FILE}" + +# 清理journal日志(可选) +echo "" +read -p "是否同时清理该服务的历史日志?(y/N): " -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + journalctl --rotate + journalctl --vacuum-time=1s 2>/dev/null + echo "✅ 日志已清理" +else + echo "跳过日志清理" +fi + +echo "" +echo "✅ ${SERVICE_NAME} 服务已成功卸载" +echo "" +echo "注意:" +echo " - Python依赖包未被卸载,如需清理请手动执行: pip uninstall -r requirements.txt" +echo " - 项目文件未被删除,如需删除请手动清理项目目录" +echo "" +echo "卸载完成!" \ No newline at end of file diff --git a/index.php b/index.php deleted file mode 100644 index 4c4f95b..0000000 --- a/index.php +++ /dev/null @@ -1,494 +0,0 @@ - - - -
- - - - -请填写以下信息以开始使用
-config.php 文件中,请妥善保管。config.php 文件并重新运行。实时查看和管理您的云服务器
-