一、部署前技术准备
1. 环境要求
- 服务器配置:建议Linux系统(CentOS 7+/Ubuntu 20.04+),CPU 4核以上,内存8GB+,磁盘空间50GB+(根据数据量调整)。
- 数据库:MySQL 5.7+ 或 MariaDB 10.3+,需支持InnoDB引擎。
- 中间件:Nginx/Apache(Web服务)、Redis(缓存)、RabbitMQ(消息队列,可选)。
- 依赖工具:Java JDK 1.8+、Maven 3.6+、Git。
2. 源码获取
- 确认获取方式:官方授权下载、GitHub仓库克隆或私有仓库拉取。
- 检查源码完整性:解压后核对文件结构(如`/src`、`/config`、`/docs`等目录)。
二、部署步骤详解
1. 数据库初始化
- 创建数据库:
```sql
CREATE DATABASE fresh_market CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
- 导入表结构:
使用`mysql -u root -p fresh_market < database_schema.sql`导入初始表。
*注意*:若源码提供`liquibase`或`flyway`管理,需按文档执行迁移脚本。
2. 配置文件修改
- 核心配置文件:
- `application.yml`/`application.properties`:修改数据库连接、Redis地址、JWT密钥等。
- `nginx.conf`:配置静态资源路径、负载均衡(若多实例部署)。
- 示例:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/fresh_market?useSSL=false
username: root
password: your_password
```
3. 编译与打包
- Maven项目:
```bash
mvn clean package -DskipTests
```
生成的可执行JAR包通常位于`/target`目录。
4. 启动服务
- 单实例启动:
```bash
java -jar fresh-market.jar --spring.profiles.active=prod
```
- 多模块项目:
按顺序启动依赖服务(如先启动`eureka-server`,再启动`order-service`)。
5. 反向代理配置(Nginx)
- 示例配置:
```nginx
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
location /static/ {
root /path/to/static/files;
}
}
```
三、常见问题与解决方案
1. 数据库连接失败
- 原因:密码错误、权限不足、网络隔离。
- 排查:
- 检查MySQL用户权限:`GRANT ALL PRIVILEGES ON fresh_market.* TO user@%;`
- 测试连接:`mysql -u user -p -h 127.0.0.1 fresh_market`。
2. 静态资源404
- 原因:Nginx未正确配置静态路径或Spring Boot未启用静态资源映射。
- 解决:
- 确保`spring.mvc.static-path-pattern`配置正确。
- 检查Nginx的`root`或`alias`指令路径。
3. 接口跨域问题
- 配置CORS:
在Spring Boot中添加全局配置:
```java
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/").allowedOrigins("*");
}
};
}
```
4. 性能优化建议
- 缓存策略:
- 使用Redis缓存商品信息、用户会话。
- 配置Spring Cache注解:`@Cacheable(value = "products")`。
- 数据库优化:
- 为高频查询字段(如`sku_id`)添加索引。
- 分表策略:按日期分表(如`order_202301`)。
四、部署后验证
1. 功能测试:
- 用户注册/登录、商品浏览、下单流程。
- 支付接口联调(需对接第三方支付SDK)。
2. 压力测试:
- 使用JMeter模拟并发请求,监控TPS、响应时间。
3. 日志监控:
- 配置ELK(Elasticsearch+Logstash+Kibana)集中管理日志。
五、扩展资源
- 官方文档:优先参考源码包中的`README.md`或`/docs`目录。
- 社区支持:
- GitHub Issues:搜索历史问题或提交新Issue。
- 技术论坛:Stack Overflow(标签`fresh-market`或`spring-boot`)。
- 部署工具:
- 自动化部署:Jenkins + Docker(推荐生产环境使用)。
- 云服务:阿里云ECS、AWS EC2(快速部署模板)。
提示:部署过程中建议记录每一步操作(如命令、配置变更),便于回滚和问题复现。若遇到特定错误,可提供日志片段进一步分析。