Files
car-app/H5部署文档.md
2026-03-02 08:31:49 +08:00

298 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# H5 版本部署文档
本文档介绍如何将项目编译成 H5 版本并部署到服务器,通过 Nginx 运行和代理访问。
---
## 📋 前置要求
### 环境要求
- **Node.js**: >= 20
- **pnpm**: >= 9必须使用 pnpm
- **Nginx**: 已安装并运行(用于部署)
### 服务器要求
- Linux/Unix 服务器
- 已安装 Nginx
- 有权限访问服务器文件系统
---
## 🚀 部署步骤
### 1. 构建 H5 版本
在项目根目录执行以下命令进行构建:
```bash
# 生产环境构建(推荐)
pnpm build:h5:prod
# 或者使用默认构建命令
pnpm build:h5
```
构建完成后,文件会输出到 `dist/build/h5` 目录。
### 2. 配置环境变量(可选)
如果您的应用需要部署在子目录下,或者需要修改其他配置,请编辑 `env/.env.production` 文件:
```env
# 应用标题
VITE_APP_TITLE=芋道管理后台
# 后端 API 地址
VITE_SERVER_BASEURL=https://your-backend-api.com
# H5 路由基础路径
# 如果部署在根目录,设置为 /
# 如果部署在子目录(如 /app/),设置为 /app/
VITE_APP_PUBLIC_BASE=/
# 其他配置...
```
**重要提示:**
- 如果部署在根目录,`VITE_APP_PUBLIC_BASE` 设置为 `/`
- 如果部署在子目录(如 `/app/``VITE_APP_PUBLIC_BASE` 设置为 `/app/`
- 修改后需要重新构建:`pnpm build:h5:prod`
### 3. 上传文件到服务器
`dist/build/h5` 目录下的所有文件上传到服务器。
**方式一:使用 scp 命令**
```bash
# 上传整个目录到服务器
scp -r dist/build/h5/* user@your-server:/path/to/nginx/html/
# 或者上传到子目录
scp -r dist/build/h5/* user@your-server:/path/to/nginx/html/app/
```
**方式二:使用 rsync 命令(推荐)**
```bash
# 同步文件到服务器
rsync -avz dist/build/h5/ user@your-server:/path/to/nginx/html/
# 或者同步到子目录
rsync -avz dist/build/h5/ user@your-server:/path/to/nginx/html/app/
```
**方式三:使用 FTP/SFTP 工具**
使用 FileZilla、WinSCP 等工具上传文件。
### 4. 配置 Nginx
#### 4.1 部署在根目录(推荐)
1. 复制 `nginx.conf.example` 文件中的第一个 server 配置块
2. 修改以下配置:
- `server_name`: 改为您的域名或 IP
- `root`: 改为实际的文件路径(指向 `dist/build/h5` 目录)
3. 将配置添加到 Nginx 配置文件(通常在 `/etc/nginx/sites-available/``/etc/nginx/conf.d/`
**示例配置:**
```nginx
server {
listen 80;
server_name your-domain.com;
root /var/www/html;
index index.html;
# 启用 gzip 压缩
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/json application/javascript;
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# Vue Router History 模式支持
location / {
try_files $uri $uri/ /index.html;
}
}
```
#### 4.2 部署在子目录
如果您的应用需要部署在子目录下(如 `/app/`
1. 确保 `env/.env.production``VITE_APP_PUBLIC_BASE=/app/`
2. 重新构建:`pnpm build:h5:prod`
3. 上传文件到服务器的 `/app/` 目录
4. 使用 `nginx.conf.example` 中的第二个 server 配置块
#### 4.3 配置 API 代理(可选)
如果后端 API 需要通过 Nginx 代理,取消注释并修改 API 代理配置:
```nginx
location /api/ {
proxy_pass http://your-backend-server:port;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
```
### 5. 测试 Nginx 配置
```bash
# 测试 Nginx 配置文件语法
sudo nginx -t
# 如果测试通过,重新加载 Nginx 配置
sudo nginx -s reload
# 或者重启 Nginx
sudo systemctl restart nginx
```
### 6. 访问应用
在浏览器中访问:
- 如果部署在根目录:`http://your-domain.com`
- 如果部署在子目录:`http://your-domain.com/app/`
---
## 🔧 常见问题
### 1. 页面刷新后 404 错误
**问题:** 刷新页面或直接访问路由时出现 404 错误。
**解决方案:** 确保 Nginx 配置了 `try_files` 指令:
```nginx
location / {
try_files $uri $uri/ /index.html;
}
```
### 2. 静态资源加载失败
**问题:** CSS、JS 等静态资源无法加载。
**解决方案:**
- 检查 `VITE_APP_PUBLIC_BASE` 配置是否正确
- 检查文件路径是否正确上传
- 检查 Nginx 的 `root` 配置是否正确
### 3. API 请求跨域问题
**问题:** 前端请求后端 API 时出现跨域错误。
**解决方案:**
- 在 Nginx 中配置 API 代理(推荐)
- 或者在后端配置 CORS 允许跨域
### 4. 部署在子目录后路由不工作
**问题:** 部署在子目录后,路由跳转不正确。
**解决方案:**
- 确保 `env/.env.production``VITE_APP_PUBLIC_BASE` 设置为正确的子目录路径(如 `/app/`
- 重新构建项目
- 确保 Nginx 配置正确
---
## 📝 完整部署示例
### 示例:部署到根目录
```bash
# 1. 构建项目
pnpm build:h5:prod
# 2. 上传到服务器
rsync -avz dist/build/h5/ user@server:/var/www/html/
# 3. 在服务器上配置 Nginx参考上面的配置
# 4. 测试并重载 Nginx
sudo nginx -t
sudo nginx -s reload
```
### 示例:部署到子目录 `/app/`
```bash
# 1. 修改环境变量
# 编辑 env/.env.production设置 VITE_APP_PUBLIC_BASE=/app/
# 2. 重新构建
pnpm build:h5:prod
# 3. 上传到服务器子目录
rsync -avz dist/build/h5/ user@server:/var/www/html/app/
# 4. 在服务器上配置 Nginx使用子目录配置
# 5. 测试并重载 Nginx
sudo nginx -t
sudo nginx -s reload
```
---
## 🔒 HTTPS 配置(推荐生产环境)
生产环境建议使用 HTTPS可以参考 `nginx.conf.example` 中的 HTTPS 配置示例。
使用 Let's Encrypt 免费证书:
```bash
# 安装 certbot
sudo apt-get install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d your-domain.com
# 证书会自动配置,并设置自动续期
```
---
## 📚 相关文档
- [项目启动文档](./启动文档.md)
- [构建文档](./docs/base/11-build.md)
- [环境变量配置](./docs/base/12-env.md)
---
## ✅ 检查清单
部署前请确认:
- [ ] 已构建 H5 版本(`pnpm build:h5:prod`
- [ ] 已配置正确的环境变量(特别是 `VITE_APP_PUBLIC_BASE`
- [ ] 已上传文件到服务器
- [ ] 已配置 Nginx包括 `try_files` 指令)
- [ ] 已测试 Nginx 配置(`nginx -t`
- [ ] 已重载 Nginx 配置
- [ ] 已测试访问应用
- [ ] 已测试页面刷新功能
- [ ] 已测试 API 请求(如果配置了代理)
---
**部署完成后,您就可以通过浏览器访问您的应用了!** 🎉