This commit is contained in:
24kycj
2026-05-12 21:42:42 +08:00
parent 31c9d64ba9
commit 68d1968376
21 changed files with 1120 additions and 273 deletions
+226
View File
@@ -0,0 +1,226 @@
# 宝塔部署 Web 端说明
## 一、构建前配置
### 1. 配置后端 API 地址
编辑 `config/prod.env.js`,将 `BASE_API` 改为实际的后端接口地址:
```javascript
module.exports = {
NODE_ENV: '"production"',
BASE_API: '"https://your-api-domain.com/api"', // 改为实际后端地址
VUE_APP_SOCKET_API: '"ws://127.0.0.1:10010"' // WebSocket 默认地址(用户可在登录页修改)
}
```
**注意:**
- `BASE_API` 是 HTTP 接口地址(登录、数据请求等)
- `VUE_APP_SOCKET_API` 是 WebSocket 默认地址,用户可在登录页修改,所以这里可以保持默认或设为公网地址
### 2. 执行构建
在项目根目录执行:
```bash
npm run build:web
```
构建完成后,产物在 `dist/web/` 目录下,包含:
- `index.html`(入口文件)
- `web.js`(主 JS 文件,包含所有代码和样式)
- `1.js` ~ `7.js`(代码分割的 chunk 文件)
- `fonts/`(字体文件)
- `imgs/`(图片资源)
**注意**CSS 样式被打包进 `web.js` 中,运行时动态注入,无需单独引用 CSS 文件。
---
## 二、宝塔部署步骤
### 1. 创建网站
1. 登录宝塔面板
2. 点击「网站」→「添加站点」
3. 填写:
- **域名**:例如 `your-domain.com``192.168.1.100`(内网 IP
- **根目录**:例如 `/www/wwwroot/your-domain.com`
- **PHP 版本**:选择「纯静态」或任意版本(前端不需要 PHP)
### 2. 上传文件
`dist/web/` 目录下的**所有文件**上传到网站根目录:
```
/www/wwwroot/your-domain.com/
├── index.html
├── web.js
├── styles.css
└── static/
├── imgs/
└── fonts/
```
**上传方式:**
- 方式一:在宝塔「文件」中直接上传压缩包并解压
- 方式二:使用 FTP/SFTP 工具上传
- 方式三:使用宝塔「终端」执行 `scp``rsync` 命令
### 3. 配置 Nginx(重要)
由于是 Vue Router 的 hash 模式(`#/login``#/manage`),通常不需要特殊配置。但建议添加以下配置以确保正常访问:
在宝塔「网站」→ 选择站点 →「设置」→「配置文件」中,在 `server` 块内添加:
```nginx
server {
listen 80;
server_name your-domain.com;
root /www/wwwroot/your-domain.com;
index index.html;
# 前端路由支持(hash 模式通常不需要,但加上更稳妥)
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}
```
### 4. 配置 HTTPS(可选但推荐)
如果使用域名且需要 HTTPS
1. 在宝塔「网站」→ 选择站点 →「SSL」→「Let's Encrypt」申请免费证书
2. 开启「强制 HTTPS」
3. **注意**:如果后端 API 或 WebSocket 使用 HTTPS/WSS,确保:
- `BASE_API` 使用 `https://`
- WebSocket 地址使用 `wss://`(或在登录页填写 `wss://` 地址)
### 5. 配置跨域(如需要)
如果后端 API 与前端不在同一域名,后端需要配置 CORS:
- 允许的源:`https://your-domain.com`(或 `*` 用于开发)
- 允许的请求头:`Content-Type, X-Token`(根据实际后端要求)
- 允许的方法:`GET, POST, PUT, DELETE`
---
## 三、WebSocket 配置
### 情况 1WebSocket 服务在服务器本机
如果 WebSocket 服务运行在**宝塔服务器本机**(例如 `ws://127.0.0.1:10010`):
- 用户访问网页时,浏览器会尝试连接**用户电脑**的 `127.0.0.1`**无法连接**
- **解决方案**
1. 在登录页填写 `ws://服务器公网IP:10010``ws://服务器域名:10010`
2. 或配置 Nginx 反向代理 WebSocket(见下方)
### 情况 2:使用 Nginx 反向代理 WebSocket(推荐)
在宝塔「网站」→ 选择站点 →「设置」→「配置文件」中添加:
```nginx
# WebSocket 代理(假设后端 WebSocket 在 127.0.0.1:10010
location /ws {
proxy_pass http://127.0.0.1:10010;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
}
```
然后在登录页填写:`wss://your-domain.com/ws`HTTPS 用 `wss://`HTTP 用 `ws://`
### 情况 3WebSocket 服务在公网服务器
如果 WebSocket 服务部署在**公网服务器**(例如 `wss://ws-api.xxx.com`):
- 在登录页填写该地址即可
- 或在构建时设置 `VUE_APP_SOCKET_API``wss://ws-api.xxx.com`
---
## 四、访问测试
1. 打开浏览器访问:`http://your-domain.com``https://your-domain.com`
2. 应能看到登录页
3. 点击「设置 WebSocket 服务地址」,填写实际可访问的 WebSocket 地址
4. 输入账号密码登录
5. 检查:
- 登录是否成功
- WebSocket 是否连接成功(查看浏览器控制台 Network → WS
- 各功能页面是否正常加载
---
## 五、常见问题
### 1. 页面空白
- **检查**:浏览器控制台是否有 JS 错误
- **解决**:确认 `index.html` 中引用的 `web.js``styles.css` 路径正确;检查 Nginx 配置是否正确
### 2. 接口请求失败(404 或 CORS
- **检查**`BASE_API` 是否正确;后端是否允许跨域
- **解决**:修改 `config/prod.env.js` 中的 `BASE_API` 后重新构建;后端配置 CORS
### 3. WebSocket 连接失败
- **检查**:浏览器控制台 Network → WS,查看连接地址和错误信息
- **解决**
- 确认 WebSocket 服务已启动
- 在登录页填写正确的地址(本机用 `ws://127.0.0.1:10010`,服务器用 `ws://服务器IP:10010`HTTPS 用 `wss://`
- 如使用 Nginx 代理,确认代理配置正确
### 4. 静态资源 404
- **检查**`static/` 目录是否上传完整
- **解决**:重新上传 `dist/web/static/` 目录
### 5. 路由跳转异常
- **检查**:Nginx 配置中是否有 `try_files $uri $uri/ /index.html;`
- **解决**:添加该配置后重启 Nginx
---
## 六、更新部署
当代码更新后:
1. 修改 `config/prod.env.js`(如需要)
2. 执行 `npm run build:web`
3.`dist/web/` 下的文件**覆盖上传**到宝塔网站根目录
4. 清除浏览器缓存或强制刷新(Ctrl+F5)
---
## 七、总结
- **构建产物**`dist/web/` 目录
- **上传位置**:宝塔网站根目录
- **配置要点**
- `BASE_API`:后端 HTTP 接口地址
- WebSocket:用户可在登录页配置,或通过 Nginx 反向代理
- **访问方式**`http(s)://your-domain.com`
部署完成后,用户访问网站即可使用,首次登录时记得在登录页配置 WebSocket 服务地址。