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