一、部署前准备
1. 环境要求
- 服务器配置:建议Linux系统(CentOS 7+/Ubuntu 20.04+),2核4G内存起,带宽根据并发量调整。
- 依赖环境:
- 数据库:MySQL 5.7+/MariaDB 10.0+
- 缓存:Redis 5.0+
- 消息队列:RabbitMQ 3.8+(可选,用于订单异步处理)
- 编程语言:Java 8+/Node.js(根据源码语言选择)
- 工具:Git、Maven/Gradle(Java项目)、Nginx、Docker(可选容器化部署)
2. 源码获取
- 确认源码完整性:检查是否包含`src`目录、配置文件(如`application.yml`)、数据库脚本(`sql/`)。
- 权限问题:确保部署账户有服务器目录的读写权限。
二、部署步骤
1. 数据库初始化
- 步骤:
1. 创建数据库:`CREATE DATABASE fresh_market CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`
2. 执行SQL脚本:`mysql -u root -p fresh_market < sql/init.sql`
3. 修改配置文件中的数据库连接信息(如`application.yml`中的`spring.datasource.url`)。
- 常见问题:
- 错误:`Access denied for user root@localhost`
解决:检查数据库用户名/密码,或授权权限:`GRANT ALL PRIVILEGES ON fresh_market.* TO username@% IDENTIFIED BY password;`
2. 后端服务部署
- Java项目(Spring Boot为例):
1. 使用Maven打包:`mvn clean package`,生成`target/fresh-market.jar`。
2. 启动服务:`nohup java -jar fresh-market.jar --spring.profiles.active=prod > /var/log/fresh.log 2>&1 &`
3. 检查日志:`tail -f /var/log/fresh.log`,确认无`ERROR`级别日志。
- Node.js项目:
1. 安装依赖:`npm install`
2. 启动服务:`npm run start:prod`
3. 前端部署
- 静态资源(Vue/React):
1. 构建生产环境代码:`npm run build`
2. 将`dist/`目录内容上传至Nginx的`html/`目录。
3. 配置Nginx反向代理:
```nginx
location /api/ {
proxy_pass http://127.0.0.1:8080/; 后端服务地址
}
location / {
root /usr/share/nginx/html;
index index.html;
}
```
4. 缓存与消息队列
- Redis:
- 修改配置文件中的`spring.redis.host`和`spring.redis.password`。
- 测试连通性:`redis-cli -h 127.0.0.1 -a password ping`,返回`PONG`即成功。
- RabbitMQ(如需):
- 启用管理插件:`rabbitmq-plugins enable rabbitmq_management`
- 创建用户并授权:`rabbitmqctl add_user admin password && rabbitmqctl set_user_tags admin administrator`
三、常见问题与解决
1. 数据库连接失败
- 检查防火墙是否放行3306端口:`firewall-cmd --add-port=3306/tcp --permanent`
- 确认数据库用户是否有远程访问权限:`GRANT ALL PRIVILEGES ON fresh_market.* TO username@% IDENTIFIED BY password;`
2. 前端跨域问题
- 在后端配置CORS:
```yaml
application.yml
spring:
cors:
allowed-origins: "*"
allowed-methods: GET,POST,PUT,DELETE
```
- 或通过Nginx代理:
```nginx
location /api/ {
proxy_pass http://127.0.0.1:8080/;
add_header Access-Control-Allow-Origin *;
}
```
3. 服务启动后502错误
- 检查后端服务是否正常运行:`ps aux | grep java`
- 查看Nginx错误日志:`tail -f /var/log/nginx/error.log`
4. 性能优化建议
- 启用G1垃圾回收器:`-XX:+UseG1GC -Xmx4g -Xms4g`
- 数据库添加索引:对`orders`表的`user_id`、`create_time`字段建索引。
- 使用CDN加速静态资源:配置前端资源的CDN域名。
四、扩展功能部署
1. 支付接口对接
- 申请支付宝/微信支付商户号,获取`APPID`和`MERCHANT_ID`。
- 在`application.yml`中配置支付参数:
```yaml
payment:
alipay:
app-id: your_app_id
private-key: |
-----BEGIN RSA PRIVATE KEY-----
...
```
2. 短信通知服务
- 接入阿里云/腾讯云短信服务,配置`sms.access-key-id`和`sms.secret`。
五、维护与监控
1. 日志管理
- 使用ELK(Elasticsearch+Logstash+Kibana)集中存储日志。
- 配置日志轮转:`/etc/logrotate.d/fresh-market`:
```
/var/log/fresh-market/*.log {
daily
rotate 7
missingok
compress
}
```
2. 备份策略
- 数据库每日全量备份:`mysqldump -u root -p fresh_market > /backup/fresh_market_$(date +%F).sql`
- 代码版本控制:使用Git管理源码,定期推送至远程仓库。
六、寻求帮助
- 官方渠道:
- 万象源码官方文档:[文档链接]
- 技术支持邮箱:support@wanxiang.com
- 社区支持:
- GitHub Issues(如源码开源)
- Stack Overflow标签:`fresh-market-deployment`
提示:部署前建议先在本地测试环境(如Docker Compose)验证流程,再迁移至生产环境。遇到复杂问题时,提供详细的错误日志(如`cat /var/log/fresh-market/error.log`)可加速问题定位。