# 缠论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系统,必须使用虚拟环境方法。