39 lines
1.4 KiB
Markdown
39 lines
1.4 KiB
Markdown
|
|
# AWS EC2 Panel (FastAPI + Vue 3)
|
|||
|
|
|
|||
|
|
Minimal multi-tenant EC2 管理面板示例,后端使用 FastAPI/SQLAlchemy,前端使用 Vue 3 + Vite + TypeScript + Naive UI + Tailwind。
|
|||
|
|
|
|||
|
|
## 数据库初始化
|
|||
|
|
1. 确认 MySQL 8 已安装并创建空库:
|
|||
|
|
```sql
|
|||
|
|
SOURCE db_schema.md;
|
|||
|
|
```
|
|||
|
|
2. 准备 `backend/.env`(复制 `backend/.env.example` 并修改 DB_URL/JWT_SECRET 等)。
|
|||
|
|
|
|||
|
|
## 启动后端
|
|||
|
|
```bash
|
|||
|
|
cd backend
|
|||
|
|
python -m venv .venv && source .venv/bin/activate
|
|||
|
|
pip install -U pip
|
|||
|
|
pip install fastapi uvicorn[standard] sqlalchemy[asyncio] asyncmy pydantic pydantic-settings python-jose passlib[bcrypt] boto3
|
|||
|
|
uvicorn backend.app:app --reload --host 0.0.0.0 --port 8000
|
|||
|
|
```
|
|||
|
|
健康检查:`GET http://localhost:8000/healthz`
|
|||
|
|
|
|||
|
|
元数据接口示例:
|
|||
|
|
- 区域列表:`GET /api/v1/instances/meta/aws/regions`
|
|||
|
|
- VPC/子网/安全组:`GET /api/v1/instances/meta/aws/network?credential_id=1®ion=ap-northeast-1`
|
|||
|
|
- KeyPair 列表:`GET /api/v1/instances/meta/aws/keypairs?credential_id=1®ion=ap-northeast-1`
|
|||
|
|
|
|||
|
|
## 启动前端
|
|||
|
|
```bash
|
|||
|
|
cd frontend
|
|||
|
|
npm install
|
|||
|
|
npm run dev
|
|||
|
|
```
|
|||
|
|
默认前端开发服务器使用 `/api` 代理到后端(在 `vite.config.ts` 可调整)。
|
|||
|
|
|
|||
|
|
## 目录速览
|
|||
|
|
- `backend/`:FastAPI 应用、路由、SQLAlchemy 模型、AWS 封装。
|
|||
|
|
- `frontend/`:Vue 3 + Vite + Naive UI 前端。
|
|||
|
|
- `db_schema.md`:MySQL 表结构(务必保持字段/表名一致)。
|