一、部署前准备
1. 系统环境要求
- 服务器配置:建议Linux系统(如CentOS 7+/Ubuntu 20.04+),CPU 4核以上,内存8GB+,磁盘空间50GB+(根据数据量调整)。
- 依赖环境:
- 数据库:MySQL 5.7+/MariaDB 10.3+ 或 MongoDB(根据源码要求)。
- Web服务器:Nginx/Apache + PHP 7.4+(需安装`pdo_mysql`、`mbstring`、`gd`等扩展)。
- 缓存:Redis(用于会话和队列)。
- 消息队列:RabbitMQ(可选,用于订单处理等异步任务)。
- 域名与SSL:提前备案域名并配置SSL证书(HTTPS)。
2. 源码获取与检查
- 确认源码完整性(如`README.md`、`composer.json`、`docker-compose.yml`等文件是否存在)。
- 检查是否有预编译的二进制文件或需手动编译的模块(如C扩展)。
二、部署步骤详解
1. 基础环境搭建
- 安装数据库:
```bash
MySQL示例(CentOS)
sudo yum install mysql-server
sudo systemctl start mysqld
mysql_secure_installation 安全配置
```
- 配置PHP环境:
```bash
安装PHP及扩展
sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-gd php7.4-mbstring
```
2. 源码部署
- 方式一:手动部署
1. 解压源码至Web目录(如`/var/www/fresh_app`)。
2. 配置`config/database.php`(数据库连接信息)。
3. 运行迁移命令(如Laravel框架):
```bash
php artisan migrate
```
4. 设置文件权限:
```bash
sudo chown -R www-data:www-data /var/www/fresh_app/storage
```
- 方式二:Docker容器化部署
1. 修改`docker-compose.yml`中的环境变量(如数据库密码)。
2. 启动服务:
```bash
docker-compose up -d
```
3. 配置Nginx/Apache
- Nginx配置示例:
```nginx
server {
listen 80;
server_name fresh.example.com;
root /var/www/fresh_app/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include fastcgi_params;
}
}
```
三、常见问题与解决方案
1. 数据库连接失败
- 现象:`SQLSTATE[HY000] [2002] Connection refused`
- 原因:数据库未启动、配置错误或防火墙拦截。
- 解决:
- 检查数据库服务状态:`sudo systemctl status mysql`。
- 验证`config/database.php`中的主机、端口、用户名和密码。
- 开放防火墙端口:`sudo ufw allow 3306`。
2. 静态资源404错误
- 现象:CSS/JS文件加载失败。
- 原因:Nginx未正确配置静态资源路径或权限不足。
- 解决:
- 确保Nginx的`root`指向`/public`目录。
- 检查`storage/framework/views`目录权限:`chmod -R 755 storage`。
3. 性能优化建议
- 缓存配置:
- 启用Redis缓存:修改`.env`文件中的`CACHE_DRIVER=redis`。
- 配置OPcache加速PHP执行:
```ini
; php.ini
opcache.enable=1
opcache.memory_consumption=128
```
- 数据库优化:
- 为常用查询字段添加索引(如商品表的`category_id`)。
- 定期清理过期订单数据。
四、进阶功能部署
1. 支付接口集成
- 申请支付宝/微信支付商户号,获取`APP_ID`和`MERCHANT_ID`。
- 在后台配置支付网关参数,测试沙箱环境。
2. 短信通知服务
- 接入阿里云/腾讯云短信服务,配置`SMS_KEY`和`SMS_SECRET`。
- 测试订单状态变更时的短信触发逻辑。
3. 多仓库库存管理
- 在数据库中创建`warehouses`表,关联商品库存字段。
- 修改订单分配逻辑,优先从最近仓库发货。
五、维护与监控
- 日志分析:
- 定期检查`storage/logs/laravel.log`,关注异常堆栈。
- 备份策略:
- 使用`mysqldump`每日备份数据库,保留7天快照。
- 监控工具:
- 部署Prometheus + Grafana监控服务器负载和响应时间。
六、求助渠道
- 官方文档:优先查阅源码包中的`docs/`目录或GitHub Wiki。
- 社区支持:在开源社区(如GitHub Issues、SegmentFault)搜索类似问题。
- 专业服务:联系源码提供商获取付费技术支持。
通过以上步骤,可系统化解决生鲜软件部署中的常见问题。若遇到特定错误,建议提供完整的错误日志(如`tail -f storage/logs/laravel.log`)以便精准定位。