Files
chan.py/web/DEPLOY_GUIDE.md
T
2025-06-10 01:16:09 +08:00

4.4 KiB
Raw Blame History

缠论Web应用部署指南

本指南提供在服务器上直接部署缠论Web应用的步骤,无需使用Nginx等反向代理。

注意:Ubuntu 22.04+系统的特殊处理

最新版本的Ubuntu系统对Python包管理有额外限制,不允许直接用pip在系统级别安装包。因此,我们提供了使用虚拟环境的部署方法。

方法一:使用虚拟环境部署脚本(适用于Ubuntu 22.04+,推荐)

这是最适合现代Ubuntu系统的方法:

  1. 登录到服务器
  2. 进入应用目录:
    cd /path/to/user_data/Chan/web
    
  3. 给脚本添加执行权限:
    chmod +x deploy_venv.sh stop_venv.sh status_venv.sh
    
  4. 启动服务:
    ./deploy_venv.sh
    
  5. 检查服务状态:
    ./status_venv.sh
    
  6. 如需停止服务:
    ./stop_venv.sh
    

方法二:标准部署脚本(适用于旧版Ubuntu或其他系统)

如果您的系统允许直接安装Python包:

  1. 登录到服务器
  2. 进入应用目录:
    cd /path/to/user_data/Chan/web
    
  3. 给脚本添加执行权限:
    chmod +x deploy.sh stop.sh status.sh
    
  4. 启动服务:
    ./deploy.sh
    
  5. 检查服务状态:
    ./status.sh
    
  6. 如需停止服务:
    ./stop.sh
    

方法三:系统服务(systemd

如果希望应用随系统启动自动运行,可以设置systemd服务:

使用虚拟环境的systemd服务(推荐)

  1. 编辑服务文件中的用户名、用户组和路径:

    vi chanlun-web-venv.service
    

    修改以下行:

    • User=<用户名> - 改为您的用户名
    • Group=<用户组> - 改为您的用户组
    • 所有包含/path/to/的路径
  2. 将服务文件复制到systemd目录:

    sudo cp chanlun-web-venv.service /etc/systemd/system/
    
  3. 重新加载systemd配置:

    sudo systemctl daemon-reload
    
  4. 启用并启动服务:

    sudo systemctl enable chanlun-web-venv
    sudo systemctl start chanlun-web-venv
    
  5. 检查服务状态:

    sudo systemctl status chanlun-web-venv
    

使用系统Python的systemd服务(仅适用于旧版系统)

  1. 编辑服务文件:

    vi chanlun-web.service
    
  2. 按照上述相同的步骤配置和启动服务。

方法四:手动启动

如果只需要临时运行,可以手动启动:

使用虚拟环境(推荐)

  1. 创建并激活虚拟环境:

    python3 -m venv venv
    source venv/bin/activate
    
  2. 安装依赖:

    pip install -r requirements.txt
    
  3. 使用gunicorn启动(前台运行):

    venv/bin/gunicorn -w 4 -b 0.0.0.0:8123 app:app
    

    或后台运行:

    venv/bin/gunicorn -w 4 -b 0.0.0.0:8123 --access-logfile logs/access.log --error-logfile logs/error.log --daemon app:app
    

直接使用系统Python(仅适用于旧版系统)

  1. 安装依赖:

    pip install -r requirements.txt
    
  2. 使用gunicorn启动(前台运行):

    gunicorn -w 4 -b 0.0.0.0:8123 app:app
    

防火墙设置

请确保服务器防火墙开放了8123端口:

# 对于使用ufw的系统(如Ubuntu
sudo ufw allow 8123/tcp

# 对于使用firewalld的系统(如CentOS
sudo firewall-cmd --permanent --add-port=8123/tcp
sudo firewall-cmd --reload

访问应用

部署完成后,可以通过以下URL访问应用:

http://服务器IP:8123

可选:使用screen运行

如果SSH连接可能不稳定,可以使用screen在后台会话中运行:

使用虚拟环境的screen会话(推荐)

screen -S chanlun-web
cd /path/to/user_data/Chan/web
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app.py

然后按下Ctrl+A然后按D来分离会话。要重新连接会话:

screen -r chanlun-web

故障排除

  1. 如果服务不能启动,检查日志:

    cat logs/error.log
    
  2. 确保安装了所有依赖:

    # 在虚拟环境中
    source venv/bin/activate
    pip install -r requirements.txt
    
  3. 检查端口是否被占用:

    netstat -tulpn | grep 8123
    
  4. 如果gunicorn无法找到,确保使用完整路径:

    # 对于虚拟环境
    ./venv/bin/gunicorn -w 4 -b 0.0.0.0:8123 app:app
    
  5. 如果出现"externally-managed-environment"错误,这表明您正在使用最新的Ubuntu系统,必须使用虚拟环境方法。