407 lines
7.1 KiB
Markdown
407 lines
7.1 KiB
Markdown
# 医学信息支持系统 - 部署说明
|
||
|
||
## 环境要求
|
||
|
||
### 开发环境
|
||
- **JDK**: 17 或更高版本
|
||
- **Node.js**: 18 或更高版本
|
||
- **Maven**: 3.8 或更高版本
|
||
- **MySQL**: 8.0 或更高版本
|
||
|
||
### 生产环境
|
||
- **Docker**: 20.10 或更高版本
|
||
- **Docker Compose**: 2.0 或更高版本
|
||
|
||
## 快速开始(使用Docker)
|
||
|
||
### 1. 克隆项目
|
||
|
||
```bash
|
||
git clone <repository-url>
|
||
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部署
|
||
|