From a2f23363fa140efa8edf5decc7e0ef66b0f914ed Mon Sep 17 00:00:00 2001 From: Chen Xiao Date: Mon, 12 Oct 2026 23:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0deploy=5Fto=5Fserver.py?= =?UTF-8?q?=E6=8C=87=E5=90=91=E7=9C=9F=E5=AE=9E=E7=94=9F=E4=BA=A7=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E7=9B=AE=E5=BD=95=E5=92=8C=E6=9C=8D=E5=8A=A1=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy_to_server.py | 46 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/deploy_to_server.py b/deploy_to_server.py index 73ba63f..8370524 100644 --- a/deploy_to_server.py +++ b/deploy_to_server.py @@ -11,7 +11,7 @@ SERVER_IP = "159.75.81.121" SSH_PORT = 22 SSH_USER = "root" SSH_PASS = "sp-cc123" -REMOTE_DIR = "/opt/risk_system" +REMOTE_DIR = "/opt/XH-202626" DOMAIN = "risk.aiformat.cn" LOCAL_BASE = r"d:\code\XH-202626_科创企业特有风险的识别与管理" @@ -71,7 +71,13 @@ def deploy(): sftp = ssh.open_sftp() - # 1. 创建远程目录并清理旧的带有 emoji 的文件 + # 0. 停止并清理可能残留的冲突服务 + run_remote_cmd(ssh, "systemctl stop risk_app 2>/dev/null || true") + run_remote_cmd(ssh, "systemctl disable risk_app 2>/dev/null || true") + run_remote_cmd(ssh, "rm -f /etc/systemd/system/risk_app.service") + run_remote_cmd(ssh, "rm -rf /opt/risk_system") + + # 1. 创建远程目录并清理旧的带 emoji 文件 run_remote_cmd(ssh, f"mkdir -p {REMOTE_DIR}") run_remote_cmd(ssh, f"rm -rf {REMOTE_DIR}/pages/* {REMOTE_DIR}/*系统首页*.py") @@ -82,50 +88,32 @@ def deploy(): print("[上传] 压缩包上传成功") sftp.close() - # 3. 解压并配置 Python 环境与依赖 + # 3. 解压并优先尝试 git pull 同步 run_remote_cmd(ssh, f"cd {REMOTE_DIR} && tar -xzf deploy_package.tar.gz") - - # 检查并安装系统依赖 (nginx, python3, python3-pip, python3-venv 等) - setup_env_cmd = """ - if command -v apt-get &> /dev/null; then - apt-get update -y && apt-get install -y python3 python3-pip python3-venv nginx - elif command -v yum &> /dev/null; then - yum install -y python3 python3-pip nginx - fi - """ - run_remote_cmd(ssh, setup_env_cmd) + run_remote_cmd(ssh, f"cd {REMOTE_DIR} && git pull origin master || true") - # 创建 virtualenv 并安装依赖 - venv_cmd = f""" - cd {REMOTE_DIR} - python3 -m venv venv || python3 -m venv venv --without-pip - source venv/bin/activate - pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple - pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple - """ - run_remote_cmd(ssh, venv_cmd) - - # 4. 配置 Systemd 服务 + # 4. 配置 Systemd 服务 (使用已配置好的 miniconda risk_env 环境) systemd_service = f"""[Unit] -Description=Risk Management Streamlit Web App +Description=Risk Management Streamlit Web App (risk.aiformat.cn) After=network.target [Service] User=root WorkingDirectory={REMOTE_DIR} -ExecStart={REMOTE_DIR}/venv/bin/streamlit run {REMOTE_DIR}/系统首页.py --server.port 8501 --server.address 127.0.0.1 --server.headless true --server.enableCORS false --server.enableXsrfProtection false +ExecStart=/root/miniconda3/envs/risk_env/bin/streamlit run {REMOTE_DIR}/系统首页.py --server.port 8501 --server.address 127.0.0.1 --server.headless true --server.enableCORS false --server.enableXsrfProtection false Restart=always RestartSec=5 +Environment=PATH=/root/miniconda3/envs/risk_env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [Install] WantedBy=multi-user.target """ - create_service_cmd = f"cat << 'EOF' > /etc/systemd/system/risk_app.service\n{systemd_service}\nEOF" + create_service_cmd = f"cat << 'EOF' > /etc/systemd/system/XH-202626.service\n{systemd_service}\nEOF" run_remote_cmd(ssh, create_service_cmd) - run_remote_cmd(ssh, "systemctl daemon-reload && systemctl enable risk_app && systemctl restart risk_app") + run_remote_cmd(ssh, "systemctl daemon-reload && systemctl enable XH-202626 && systemctl restart XH-202626") time.sleep(3) - run_remote_cmd(ssh, "systemctl status risk_app --no-pager") + run_remote_cmd(ssh, "systemctl status XH-202626 --no-pager") # 5. 配置 Nginx 反向代理 nginx_conf = f"""server {{