# 医学信息支持系统 - 部署说明 ## 环境要求 ### 开发环境 - **JDK**: 17 或更高版本 - **Node.js**: 18 或更高版本 - **Maven**: 3.8 或更高版本 - **MySQL**: 8.0 或更高版本 ### 生产环境 - **Docker**: 20.10 或更高版本 - **Docker Compose**: 2.0 或更高版本 ## 快速开始(使用Docker) ### 1. 克隆项目 ```bash git clone cd 文献流程 ``` ### 2. 配置环境变量 复制环境变量示例文件并修改配置: ```bash cp .env.example .env ``` 编辑 `.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. 启动服务 ```bash docker-compose up -d ``` ### 4. 访问系统 - **前端地址**: http://localhost - **后端API**: http://localhost:8080/api - **默认账号**: admin / admin123 ### 5. 查看日志 ```bash # 查看所有服务日志 docker-compose logs -f # 查看特定服务日志 docker-compose logs -f backend docker-compose logs -f frontend ``` ### 6. 停止服务 ```bash docker-compose down ``` ## 本地开发部署 ### 后端开发 #### 1. 准备MySQL数据库 ```bash # 启动MySQL mysql -u root -p # 执行数据库脚本 source database/schema.sql source database/sample_data.sql ``` #### 2. 配置application.yml 编辑 `backend/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/medical_info_system username: your-username password: your-password ``` #### 3. 启动后端服务 ```bash cd backend mvn clean install mvn spring-boot:run ``` 后端服务将在 http://localhost:8080 启动。 #### 4. API文档 启动后访问:http://localhost:8080/api/swagger-ui.html ### 前端开发 #### 1. 安装依赖 ```bash cd frontend npm install ``` #### 2. 启动开发服务器 ```bash npm run dev ``` 前端开发服务器将在 http://localhost:3000 启动。 #### 3. 构建生产版本 ```bash npm run build ``` 构建结果将输出到 `frontend/dist` 目录。 ## 生产环境部署 ### 方式一:使用Docker Compose(推荐) 1. 按照"快速开始"部分的步骤操作 2. 确保配置正确的环境变量 3. 建议配置反向代理(如Nginx)并启用HTTPS ### 方式二:手动部署 #### 后端部署 ```bash cd backend mvn clean package -DskipTests java -jar target/medical-info-system-1.0.0.jar --spring.profiles.active=prod ``` #### 前端部署 ```bash cd frontend npm run build # 将dist目录内容部署到Nginx cp -r dist/* /usr/share/nginx/html/ ``` #### Nginx配置示例 ```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` ```yaml 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` ```javascript export default defineConfig({ server: { port: 3000, proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true } } } }) ``` ## 数据库管理 ### 备份数据库 ```bash # 使用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 ``` ### 恢复数据库 ```bash # 使用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容器监控 ```bash # 查看容器状态 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配额是否用完 ## 性能优化 ### 数据库优化 ```sql -- 创建必要的索引 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优化 ```yaml # 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部署