7.1 KiB
7.1 KiB
医学信息支持系统 - 部署说明
环境要求
开发环境
- 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. 访问系统
- 前端地址: http://localhost
- 后端API: http://localhost:8080/api
- 默认账号: admin / admin123
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(推荐)
- 按照"快速开始"部分的步骤操作
- 确保配置正确的环境变量
- 建议配置反向代理(如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);
应用优化
-
后端:
- 启用数据库连接池
- 配置适当的JVM参数
- 使用Redis缓存热点数据
-
前端:
- 启用Gzip压缩
- 使用CDN加速静态资源
- 实现路由懒加载
Docker优化
# docker-compose.yml中添加资源限制
services:
backend:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
安全建议
-
生产环境必须修改:
- 数据库密码
- JWT密钥
- 默认管理员密码
-
启用HTTPS:
- 配置SSL证书
- 强制HTTPS访问
-
定期更新:
- 及时更新依赖包
- 修复安全漏洞
-
访问控制:
- 配置防火墙规则
- 限制数据库访问
- 实施IP白名单
技术支持
如遇到问题,请:
- 查看日志文件获取详细错误信息
- 参考本文档的常见问题部分
- 联系技术支持团队
更新日志
v1.0.0 (2024-10-26)
- 初始版本发布
- 实现核心功能模块
- 支持Docker部署