AutoMedinfo/DEPLOYMENT.md

7.1 KiB
Raw Blame History

医学信息支持系统 - 部署说明

环境要求

开发环境

  • JDK: 17 或更高版本
  • Node.js: 18 或更高版本
  • Maven: 3.8 或更高版本
  • MySQL: 8.0 或更高版本

生产环境

  • Docker: 20.10 或更高版本
  • Docker Compose: 2.0 或更高版本

快速开始使用Docker

1. 克隆项目

git clone <repository-url>
cd 文献流程

2. 配置环境变量

复制环境变量示例文件并修改配置:

cp .env.example .env

编辑 .env 文件,配置以下关键信息:

# 数据库密码
MYSQL_ROOT_PASSWORD=your-secure-password
MYSQL_PASSWORD=your-secure-password

# JWT密钥生产环境必须修改
JWT_SECRET=your-very-secure-jwt-secret-key

# Dify API配置
DIFY_API_KEY=your-dify-api-key

# 大模型API配置
LLM_API_KEY=your-llm-api-key

3. 启动服务

docker-compose up -d

4. 访问系统

5. 查看日志

# 查看所有服务日志
docker-compose logs -f

# 查看特定服务日志
docker-compose logs -f backend
docker-compose logs -f frontend

6. 停止服务

docker-compose down

本地开发部署

后端开发

1. 准备MySQL数据库

# 启动MySQL
mysql -u root -p

# 执行数据库脚本
source database/schema.sql
source database/sample_data.sql

2. 配置application.yml

编辑 backend/src/main/resources/application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/medical_info_system
    username: your-username
    password: your-password

3. 启动后端服务

cd backend
mvn clean install
mvn spring-boot:run

后端服务将在 http://localhost:8080 启动。

4. API文档

启动后访问:http://localhost:8080/api/swagger-ui.html

前端开发

1. 安装依赖

cd frontend
npm install

2. 启动开发服务器

npm run dev

前端开发服务器将在 http://localhost:3000 启动。

3. 构建生产版本

npm run build

构建结果将输出到 frontend/dist 目录。

生产环境部署

方式一使用Docker Compose推荐

  1. 按照"快速开始"部分的步骤操作
  2. 确保配置正确的环境变量
  3. 建议配置反向代理如Nginx并启用HTTPS

方式二:手动部署

后端部署

cd backend
mvn clean package -DskipTests
java -jar target/medical-info-system-1.0.0.jar --spring.profiles.active=prod

前端部署

cd frontend
npm run build

# 将dist目录内容部署到Nginx
cp -r dist/* /usr/share/nginx/html/

Nginx配置示例

server {
    listen 80;
    server_name your-domain.com;
    
    # 前端静态文件
    root /usr/share/nginx/html;
    index index.html;
    
    # 前端路由
    location / {
        try_files $uri $uri/ /index.html;
    }
    
    # 后端API代理
    location /api/ {
        proxy_pass http://localhost:8080/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

配置说明

后端配置

主配置文件:backend/src/main/resources/application.yml

app:
  # JWT配置
  jwt:
    secret: ${JWT_SECRET}        # JWT密钥
    expiration: 86400000         # 过期时间(毫秒)
  
  # Dify配置
  dify:
    api-url: ${DIFY_API_URL}
    api-key: ${DIFY_API_KEY}
  
  # 大模型配置
  llm:
    api-url: ${LLM_API_URL}
    api-key: ${LLM_API_KEY}
    model: ${LLM_MODEL}
  
  # 文献下载配置
  literature:
    download-path: ${LITERATURE_DOWNLOAD_PATH}
    accounts:
      pubmed:
        username: ${PUBMED_USERNAME}
        password: ${PUBMED_PASSWORD}
      embase:
        username: ${EMBASE_USERNAME}
        password: ${EMBASE_PASSWORD}
      cnki:
        username: ${CNKI_USERNAME}
        password: ${CNKI_PASSWORD}

前端配置

代理配置:frontend/vite.config.js

export default defineConfig({
  server: {
    port: 3000,
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true
      }
    }
  }
})

数据库管理

备份数据库

# 使用Docker
docker exec medical-info-mysql mysqldump -u root -p medical_info_system > backup.sql

# 本地MySQL
mysqldump -u root -p medical_info_system > backup.sql

恢复数据库

# 使用Docker
docker exec -i medical-info-mysql mysql -u root -p medical_info_system < backup.sql

# 本地MySQL
mysql -u root -p medical_info_system < backup.sql

监控与日志

应用日志

后端日志位置:

  • Docker部署./logs/
  • 本地开发:控制台输出

Docker容器监控

# 查看容器状态
docker-compose ps

# 查看资源使用
docker stats

# 查看容器日志
docker-compose logs -f [service-name]

常见问题

1. 数据库连接失败

问题: 后端无法连接数据库

解决方案:

  • 检查MySQL服务是否启动
  • 确认数据库用户名和密码是否正确
  • 检查防火墙设置
  • 如使用Docker确保容器在同一网络中

2. 前端无法访问后端API

问题: 前端请求后端API时出现跨域错误

解决方案:

  • 检查后端CORS配置
  • 确认API代理配置正确
  • 检查后端服务是否正常运行

3. 文献下载失败

问题: 系统无法下载文献

解决方案:

  • 检查文献数据库账号配置是否正确
  • 确认下载路径是否有写入权限
  • 查看后端日志了解具体错误信息

4. Dify API调用失败

问题: AI功能无法正常使用

解决方案:

  • 确认Dify API Key配置正确
  • 检查网络连接是否正常
  • 查看API配额是否用完

性能优化

数据库优化

-- 创建必要的索引
CREATE INDEX idx_inquiry_status ON inquiry_requests(status);
CREATE INDEX idx_inquiry_created_at ON inquiry_requests(created_at);
CREATE INDEX idx_literature_inquiry ON literatures(inquiry_request_id);

应用优化

  1. 后端:

    • 启用数据库连接池
    • 配置适当的JVM参数
    • 使用Redis缓存热点数据
  2. 前端:

    • 启用Gzip压缩
    • 使用CDN加速静态资源
    • 实现路由懒加载

Docker优化

# docker-compose.yml中添加资源限制
services:
  backend:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G

安全建议

  1. 生产环境必须修改:

    • 数据库密码
    • JWT密钥
    • 默认管理员密码
  2. 启用HTTPS:

    • 配置SSL证书
    • 强制HTTPS访问
  3. 定期更新:

    • 及时更新依赖包
    • 修复安全漏洞
  4. 访问控制:

    • 配置防火墙规则
    • 限制数据库访问
    • 实施IP白名单

技术支持

如遇到问题,请:

  1. 查看日志文件获取详细错误信息
  2. 参考本文档的常见问题部分
  3. 联系技术支持团队

更新日志

v1.0.0 (2024-10-26)

  • 初始版本发布
  • 实现核心功能模块
  • 支持Docker部署