finyx_data_frontend/DEPLOYMENT.md
2026-01-07 08:13:50 +08:00

11 KiB
Raw Permalink Blame History

部署与运行说明文档

本文档详细说明 Finyx AI Prototype 项目的部署和运行流程。

📋 目录

🔧 环境准备

系统要求

  • 操作系统: Linux / macOS / Windows
  • Node.js: >= 16.0.0 (推荐使用 LTS 版本)
  • npm: >= 7.0.0 或 yarn: >= 1.22.0
  • 内存: 至少 2GB 可用内存
  • 磁盘空间: 至少 500MB 可用空间

检查环境

# 检查 Node.js 版本
node -v
# 应显示 v16.x.x 或更高版本

# 检查 npm 版本
npm -v
# 应显示 7.x.x 或更高版本

安装 Node.js如未安装

Linux (Ubuntu/Debian)

# 使用 NodeSource 仓库安装
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

macOS

# 使用 Homebrew
brew install node

Windows

Node.js 官网 下载安装包并安装

💻 本地开发

1. 克隆项目

git clone <repository-url>
cd finyx_data_frontend

2. 安装依赖

npm install

如果安装速度慢,可以使用国内镜像:

# 使用淘宝镜像
npm install --registry=https://registry.npmmirror.com

# 或使用 cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm install

3. 启动开发服务器

npm run dev

启动成功后,终端会显示:

  VITE v5.x.x  ready in xxx ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: http://192.168.x.x:5173/

可以通过以下方式访问:

  • 本地访问: http://localhost:5173
  • 局域网访问: 使用终端显示的 Network 地址(例如:http://192.168.1.100:5173

注意: 开发服务器已配置为允许外部访问,可以通过局域网 IP 地址访问,方便移动设备测试或远程调试。

4. 开发模式特性

  • 热模块替换 (HMR): 代码修改后自动刷新
  • 快速构建: Vite 提供极速的开发体验
  • TypeScript 支持: 实时类型检查
  • ESLint 检查: 代码质量检查

5. 修改端口和主机配置(如需要)

如果 5173 端口被占用,可以通过以下方式修改:

方式一:命令行参数

# 修改端口
npm run dev -- --port 3000

# 指定主机(允许外部访问)
npm run dev -- --host 0.0.0.0 --port 3000

方式二:修改 vite.config.ts

export default defineConfig({
  server: {
    host: '0.0.0.0', // 允许外部访问
    port: 3000,      // 自定义端口
    strictPort: false, // 端口被占用时自动尝试下一个
  }
})

获取本机 IP 地址:

# Linux/macOS
ip addr show | grep "inet " | grep -v 127.0.0.1
# 或
ifconfig | grep "inet " | grep -v 127.0.0.1

# Windows
ipconfig
# 查找 IPv4 地址

🏗️ 生产构建

1. 构建生产版本

npm run build

构建完成后,会在 dist/ 目录生成优化后的静态文件:

dist/
├── index.html
├── assets/
│   ├── index-[hash].js
│   ├── index-[hash].css
│   └── ...

2. 预览生产构建

在部署前,可以本地预览生产版本:

npm run preview

访问 http://localhost:4173 查看预览效果。

3. 构建优化

生产构建已自动启用以下优化:

  • 代码压缩和混淆
  • Tree-shaking移除未使用代码
  • 资源压缩CSS、JS
  • 代码分割(按需加载)

🚀 部署方式

静态文件部署

方式一:直接部署 dist 目录

  1. 构建项目

    npm run build
    
  2. 上传 dist 目录dist/ 目录下的所有文件上传到 Web 服务器

  3. 配置 Web 服务器 参考下面的 Nginx 配置

方式二:使用 CI/CD 自动部署

GitHub Actions 示例 (.github/workflows/deploy.yml):

name: Deploy

on:
  push:
    branches: [ main ]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
          
      - name: Install dependencies
        run: npm install
        
      - name: Build
        run: npm run build
        
      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./dist

Docker 部署

1. 创建 Dockerfile

在项目根目录创建 Dockerfile:

# 构建阶段
FROM node:18-alpine AS builder

WORKDIR /app

# 复制 package 文件
COPY package*.json ./

# 安装依赖
RUN npm ci

# 复制源代码
COPY . .

# 构建应用
RUN npm run build

# 生产阶段
FROM nginx:alpine

# 复制构建产物到 nginx
COPY --from=builder /app/dist /usr/share/nginx/html

# 复制 nginx 配置
COPY nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

2. 创建 .dockerignore

node_modules
dist
.git
.env
*.log
.DS_Store

3. 构建和运行 Docker 容器

# 构建镜像
docker build -t finyx-frontend .

# 运行容器
docker run -d -p 80:80 --name finyx-app finyx-frontend

4. 使用 Docker Compose

创建 docker-compose.yml:

version: '3.8'

services:
  frontend:
    build: .
    ports:
      - "80:80"
    restart: unless-stopped
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro

运行:

docker-compose up -d

Nginx 配置

创建 nginx.conf 文件:

server {
    listen 80;
    server_name your-domain.com;
    root /usr/share/nginx/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/javascript application/xml+rss application/json;

    # 静态资源缓存
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # SPA 路由支持
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 安全头
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # 错误页面
    error_page 404 /index.html;
}

部署到服务器:

# 复制配置文件
sudo cp nginx.conf /etc/nginx/sites-available/finyx-frontend

# 创建软链接
sudo ln -s /etc/nginx/sites-available/finyx-frontend /etc/nginx/sites-enabled/

# 测试配置
sudo nginx -t

# 重启 Nginx
sudo systemctl restart nginx

🔐 环境变量配置

开发环境

创建 .env.development:

VITE_API_BASE_URL=http://localhost:3000/api
VITE_APP_TITLE=Finyx AI Prototype (Dev)

生产环境

创建 .env.production:

VITE_API_BASE_URL=https://api.yourdomain.com
VITE_APP_TITLE=Finyx AI Prototype

使用环境变量

在代码中使用:

const apiUrl = import.meta.env.VITE_API_BASE_URL;

注意: Vite 要求环境变量必须以 VITE_ 开头才能在客户端代码中访问。

常见问题

1. 端口被占用

问题: Error: Port 5173 is already in use

解决方案:

# 查找占用端口的进程
lsof -i :5173  # macOS/Linux
netstat -ano | findstr :5173  # Windows

# 杀死进程或使用其他端口
npm run dev -- --port 3000

1.1 无法通过 IP 地址访问

问题: 只能通过 localhost 访问,无法通过局域网 IP 地址访问

解决方案:

  1. 检查配置: 确保 vite.config.tsserver.host 设置为 '0.0.0.0'(已默认配置)
  2. 检查防火墙: 确保防火墙允许端口访问
    # Ubuntu/Debian
    sudo ufw allow 5173/tcp
    sudo ufw reload
    
    # CentOS/RHEL
    sudo firewall-cmd --add-port=5173/tcp --permanent
    sudo firewall-cmd --reload
    
    # macOS (如果启用了防火墙)
    # 系统偏好设置 > 安全性与隐私 > 防火墙 > 防火墙选项
    
  3. 检查网络: 确保设备在同一局域网内
  4. 获取本机 IP:
    # Linux/macOS
    ip addr show | grep "inet " | grep -v 127.0.0.1
    # 或
    hostname -I  # Linux
    ifconfig | grep "inet " | grep -v 127.0.0.1  # macOS
    
    # Windows
    ipconfig
    # 查找 IPv4 地址(通常是 192.168.x.x 或 10.x.x.x
    
  5. 使用 Network 地址: 启动开发服务器后,终端会显示 Network 地址,使用该地址访问

2. 依赖安装失败

问题: npm install 失败或很慢

解决方案:

# 清除 npm 缓存
npm cache clean --force

# 删除 node_modules 和 package-lock.json 重新安装
rm -rf node_modules package-lock.json
npm install

# 或使用国内镜像
npm install --registry=https://registry.npmmirror.com

3. 构建失败

问题: npm run build 报错

解决方案:

  • 检查 Node.js 版本是否符合要求
  • 清除缓存和依赖重新安装
  • 检查 TypeScript 类型错误:npm run lint

4. 路由刷新 404

问题: 刷新页面后出现 404

解决方案: 确保 Web 服务器配置了 SPA 路由支持(参考上面的 Nginx 配置)

5. 跨域问题

问题: 开发时 API 请求跨域

解决方案: 在 vite.config.ts 中配置代理:

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
})

6. 内存不足

问题: 构建时内存溢出

解决方案:

# 增加 Node.js 内存限制
NODE_OPTIONS="--max-old-space-size=4096" npm run build

📊 性能优化建议

1. 代码分割

  • 使用 React.lazy() 进行路由级别的代码分割
  • 按需加载大型组件库

2. 资源优化

  • 压缩图片资源
  • 使用 WebP 格式
  • 启用 CDN 加速静态资源

3. 缓存策略

  • 配置合理的 HTTP 缓存头
  • 使用 Service Worker 进行离线缓存

4. 监控和分析

  • 集成性能监控工具(如 Sentry
  • 使用 Web Vitals 监控核心指标

🔍 健康检查

部署后,可以通过以下方式检查应用状态:

# 检查 HTTP 响应
curl -I http://your-domain.com

# 检查页面内容
curl http://your-domain.com | head -20

📞 技术支持

如遇到部署问题,请:

  1. 查看本文档的常见问题部分
  2. 检查服务器日志
  3. 联系开发团队获取支持

最后更新: 2024年 文档版本: 1.0.0