chore: sync local changes (2026-03-12)

This commit is contained in:
2026-03-12 18:58:40 +08:00
parent 1123d6aef2
commit 4cc8ec9486
21 changed files with 4561 additions and 270 deletions

139
部署说明.md Normal file
View File

@@ -0,0 +1,139 @@
# 萌芽短链 - 前后端分离部署说明
## 架构说明
- **前端**构建为静态HTML文件部署在Nginx服务器8989端口
- **后端**部署在Docker容器中7878端口
## 部署步骤
### 一、后端部署Docker容器
1. **构建Docker镜像**
```bash
cd mengyalinkfly-backend
docker build -t mengyalinkfly-backend:latest .
```
2. **运行Docker容器**
```bash
docker run -d \
--name mengyalinkfly-backend \
-p 7878:7878 \
-v /shumengya/docker/storage/mengyalinkfly:/app/data \
--restart unless-stopped \
mengyalinkfly-backend:latest
```
3. **查看容器日志**
```bash
docker logs -f mengyalinkfly-backend
```
### 二、前端部署(静态文件)
1. **构建前端**
```bash
cd mengyalinkfly-frontend
npm install
npm run build
```
2. **部署到Nginx**
```bash
# 复制构建产物到服务器
cp -r dist/* /shumengya/www/mengyalinkfly-frontend/
# 复制nginx配置根目录下的nginx.conf
cp nginx.conf /etc/nginx/sites-available/mengyalinkfly
ln -s /etc/nginx/sites-available/mengyalinkfly /etc/nginx/sites-enabled/
# 测试nginx配置
nginx -t
# 重启nginx
systemctl restart nginx
```
## 配置说明
### 1. 修改前端服务器地址
编辑 `nginx.conf`,将 `localhost` 替换为实际的后端服务器IP如果前后端不在同一台机器
```nginx
# 如果后端在其他服务器修改为实际IP
location /api {
proxy_pass http://后端服务器IP:7878;
...
}
location ~ ^/[a-zA-Z0-9]{4}$ {
proxy_pass http://后端服务器IP:7878;
...
}
```
### 2. 修改CORS配置
编辑 `mengyalinkfly-backend/app.py`,添加你的前端域名:
```python
CORS(app, origins=[
"http://localhost:8989",
"http://127.0.0.1:8989",
"http://your-frontend-domain.com" # 添加你的实际域名
])
```
## 访问方式
- **前端页面**http://your-server:8989
- **后端API**http://your-server:7878/api/*
- **短链跳转**http://your-server:8989/XXXX 4位短链代码
## 功能特点
**支持浏览器访问** - 通过前端页面创建和管理短链接
**支持命令行工具** - wget、curl可直接下载文件自动HTTP 302重定向
**前后端分离** - 易于扩展和维护
**Docker容器化** - 后端一键部署
## 测试命令
```bash
# 测试后端API
curl http://localhost:7878/api/links
# 测试短链跳转(浏览器)
curl -L http://localhost:8989/4GLS
# 测试wget下载命令行
wget http://localhost:8989/4GLS
```
## 目录结构
```
/shumengya/
├── www/
│ └── mengyalinkfly-frontend/ # 前端静态文件目录
│ ├── index.html
│ ├── assets/
│ └── ...
└── docker/
└── storage/
└── mengyalinkfly/ # 后端数据持久化目录
└── link_data.json
```
## 常见问题
### 1. wget下载HTML而不是文件
确保nginx配置中有短链匹配规则并且优先级在前端路由之前。
### 2. API跨域错误
检查后端的CORS配置确保包含了前端域名。
### 3. 容器无法启动?
检查端口7878是否被占用`netstat -tulpn | grep 7878`