一个基于FastAPI的部署服务,用于接收压缩包文件并自动解压到指定的部署目录。
- 支持多种压缩格式:ZIP、TAR、TAR.GZ、TAR.BZ2
- 自动创建项目目录
- 文件大小限制(默认500MB,可配置到1GB或更大)
- 完整的日志记录
- RESTful API接口
- 健康检查接口
- 项目管理和删除功能
pip install -r requirements.txt# 直接启动
python app.py
# 或使用启动脚本
chmod +x start.sh
./start.sh# 构建并启动
docker-compose up -d
# 查看日志
docker-compose logs -f# 复制服务文件
sudo cp systemd.service /etc/systemd/system/deploy-api.service
# 重载systemd配置
sudo systemctl daemon-reload
# 启用并启动服务
sudo systemctl enable deploy-api
sudo systemctl start deploy-api
# 查看状态
sudo systemctl status deploy-api# 设置最大文件大小为2GB
export MAX_FILE_SIZE=2048
# 启动服务
python app.py# 基本健康检查
GET /
# 详细健康检查
GET /healthcurl -X POST "http://localhost:8000/deploy" \
-F "file=@your-package.zip" \
-F "project_name=my-project"curl -X GET "http://localhost:8000/deploy"curl -X DELETE "http://localhost:8000/deploy/my-project"DEPLOY_DIR: 部署目录路径(默认:/opt/deploy)MAX_FILE_SIZE: 最大文件大小,单位MB(默认:500MB)LOG_DIR: 日志文件目录(默认:./logs)
.zip.tar.tar.gz.tgz.tar.bz2.tbz2
deploy-api/
├── app.py # 主应用文件
├── requirements.txt # Python依赖
├── start.sh # 启动脚本
├── Dockerfile # Docker镜像构建文件
├── docker-compose.yml # Docker Compose配置
├── systemd.service # 系统服务配置
└── README.md # 说明文档
服务日志会同时输出到:
- 控制台
- 日志文件(默认:
./logs/deploy-api.log,可通过LOG_DIR环境变量配置)
如果无法创建日志文件(权限问题),服务会自动降级为仅控制台输出。
- 在生产环境中,建议使用反向代理(如Nginx)
- 配置适当的防火墙规则
- 定期清理部署目录中的旧项目
- 监控磁盘空间使用情况
- 考虑添加身份验证机制
# 确保部署目录有正确权限
sudo chown -R $USER:$USER /opt/deploy
sudo chmod -R 755 /opt/deploy# 检查端口占用
sudo netstat -tlnp | grep 8000
# 修改端口(在app.py中修改uvicorn.run的port参数)# 检查磁盘空间
df -h
# 清理旧项目
curl -X DELETE "http://localhost:8000/deploy/old-project"