Skip to content

yeyiqq/ftp-zip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

部署API服务

一个基于FastAPI的部署服务,用于接收压缩包文件并自动解压到指定的部署目录。

功能特性

  • 支持多种压缩格式:ZIP、TAR、TAR.GZ、TAR.BZ2
  • 自动创建项目目录
  • 文件大小限制(默认500MB,可配置到1GB或更大)
  • 完整的日志记录
  • RESTful API接口
  • 健康检查接口
  • 项目管理和删除功能

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 启动服务

# 直接启动
python app.py

# 或使用启动脚本
chmod +x start.sh
./start.sh

3. 使用Docker

# 构建并启动
docker-compose up -d

# 查看日志
docker-compose logs -f

4. 系统服务安装

# 复制服务文件
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

5. 自定义文件大小限制

# 设置最大文件大小为2GB
export MAX_FILE_SIZE=2048

# 启动服务
python app.py

API接口

健康检查

# 基本健康检查
GET /

# 详细健康检查
GET /health

部署压缩包

curl -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环境变量配置)

如果无法创建日志文件(权限问题),服务会自动降级为仅控制台输出。

安全注意事项

  1. 在生产环境中,建议使用反向代理(如Nginx)
  2. 配置适当的防火墙规则
  3. 定期清理部署目录中的旧项目
  4. 监控磁盘空间使用情况
  5. 考虑添加身份验证机制

故障排除

权限问题

# 确保部署目录有正确权限
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"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages