diff --git a/DEPLOY.md b/DEPLOY.md index 0a8b798..1e1a842 100644 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -108,8 +108,8 @@ curl -X POST http://127.0.0.1:21450/api/push/test ### 4.1 安装依赖 ```bash -# Python 3.10+ -sudo apt install -y python3 python3-pip python3-venv +# Python 3.10+(部署脚本会自动创建 .venv;若无 venv 模块需先装) +sudo apt install -y python3 python3-venv python3-pip # Node.js + PM2 curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - @@ -272,8 +272,8 @@ docker compose up -d ```bash cd /opt/Binance_Altcoin_Monitor git pull -python3 -m pip install -r backend/requirements.txt -q -pm2 restart binance-altcoin-monitor +./deploy/pm2-deploy.sh +# 或手动: .venv/bin/pip install -r backend/requirements.txt && pm2 restart binance-altcoin-monitor ``` --- @@ -284,6 +284,7 @@ pm2 restart binance-altcoin-monitor |------|------| | `bash\r: No such file or directory` | 脚本为 Windows 换行,执行:`sed -i 's/\r$//' deploy/*.sh && chmod +x deploy/*.sh` | | `cannot pull with rebase: unstaged changes` | 执行 `git stash` 后重试;或 `DEPLOY_SKIP_GIT_PULL=1 ./deploy/pm2-deploy.sh` 跳过拉取 | +| `No module named pip` | 执行 `sudo apt install -y python3-venv` 后重新 `./deploy/pm2-deploy.sh`(脚本会用 .venv) | | Web 无数据 | 检查能否访问币安;国内服务器尝试 `PROXY_ENABLED=true` | | 企微收不到 | 检查 `WECOM_WEBHOOK_URL`;`curl -X POST .../api/push/test` | | 08:10 未推送 | 确认容器/PM2 在 08:10 前已运行;查日志 | diff --git a/deploy/lib.sh b/deploy/lib.sh index a71c84e..05c7191 100644 --- a/deploy/lib.sh +++ b/deploy/lib.sh @@ -36,3 +36,36 @@ git_update_safe() { git stash pop || echo " 提示: stash 恢复冲突时可手动处理: git stash list" fi } + +# 创建 .venv 并安装依赖(不依赖系统 pip) +ensure_python_venv() { + local repo_dir="${1:?}" + cd "$repo_dir" + + local venv_python="${repo_dir}/.venv/bin/python" + local venv_pip="${repo_dir}/.venv/bin/pip" + + if [ ! -x "$venv_python" ]; then + echo " 创建虚拟环境 .venv ..." + if ! python3 -m venv .venv 2>/dev/null; then + echo " 安装 python3-venv(需要 root)..." + if command -v apt-get &>/dev/null; then + sudo apt-get update -qq + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq python3-venv python3-pip + elif command -v yum &>/dev/null; then + sudo yum install -y python3-pip + elif command -v dnf &>/dev/null; then + sudo dnf install -y python3-pip + else + echo "错误: 无法创建 venv,请手动安装 python3-venv 或 python3-pip" + exit 1 + fi + python3 -m venv .venv + fi + fi + + echo " 安装 Python 依赖到 .venv ..." + "$venv_pip" install -U pip -q + "$venv_pip" install -r backend/requirements.txt -q + echo " 使用: $("$venv_python" --version 2>&1) ($venv_python)" +} diff --git a/deploy/pm2-deploy.sh b/deploy/pm2-deploy.sh index 6c429a7..8542d8a 100644 --- a/deploy/pm2-deploy.sh +++ b/deploy/pm2-deploy.sh @@ -45,9 +45,7 @@ fi mkdir -p data logs -echo "==> 安装 Python 依赖..." -python3 -m pip install -U pip -q -python3 -m pip install -r backend/requirements.txt -q +ensure_python_venv "${INSTALL_DIR}" echo "==> 启动 PM2..." pm2 delete binance-altcoin-monitor 2>/dev/null || true diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs index ee5d86d..29ca586 100644 --- a/ecosystem.config.cjs +++ b/ecosystem.config.cjs @@ -8,7 +8,7 @@ module.exports = { name: "binance-altcoin-monitor", cwd: "/opt/Binance_Altcoin_Monitor", script: "run.py", - interpreter: "python3", + interpreter: "/opt/Binance_Altcoin_Monitor/.venv/bin/python", instances: 1, autorestart: true, watch: false,