Laravel在Linux上如何更新升级
小樊
42
2025-11-16 17:56:09
Laravel 在 Linux 上的升级指南
一 升级前准备
- 备份关键资产:代码仓库(确保有最新提交/标签)、数据库(mysqldump 或等效方式)、环境配置(.env)、存储与日志(storage/、public/storage、storage/logs/)。
- 确认目标版本要求:核对 PHP 版本、扩展、以及第三方包的兼容性;阅读目标版本的 UPGRADE.md 与 CHANGELOG.md,了解重大变更与弃用项。
- 准备回滚方案:保留当前可运行的发布包或Git 标签/分支,便于快速回退。
- 搭建与生产一致的预发布/测试环境,优先在测试环境完成全部验证后再上线。
- 可选工具:复杂升级可考虑 Laravel Shift 自动化辅助;具备自动化测试能显著降低风险。
二 标准升级流程(小版本或补丁)
- 查看当前版本:
php artisan --version。
- 更新 Composer:
composer self-update(确保依赖解析能力与稳定性)。
- 在应用根目录升级框架:
composer update laravel/framework(或带版本约束:composer require laravel/framework:<目标版本>)。
- 执行升级指令:运行
php artisan upgrade(Laravel 提供的升级辅助命令,用于应用框架层面的调整)。
- 清缓存:
php artisan config:clear && php artisan route:clear && php artisan view:clear。
- 数据库与代码检查:如有迁移则执行
php artisan migrate(先备份),并运行测试/手工回归核心流程。
- 上线与监控:平滑切换(如蓝绿/灰度),观察 日志 与 异常监控。
三 跨版本升级策略
- 阶梯式升级(推荐):按相邻版本逐级升级(如 8.x → 9.x → 10.x → 11.x),每一步都执行“备份 → 升级 → 清缓存 → 迁移 → 测试”,并严格对照各版本的 UPGRADE.md。此方式定位问题更容易、风险更低。
- 迁移式升级(大跨度或结构复杂时):
- 创建目标版本的新项目:
composer create-project laravel/laravel <新项目路径> <目标版本>;
- 将旧项目的业务代码有选择地迁移到新项目(如 app/、routes/、config/ 中自定义部分、表单请求、策略、命令等);
- 对齐 composer.json 依赖与版本约束,执行
composer update;
- 运行迁移
php artisan migrate;
- 全面回归测试与性能验证。
四 升级后验证与常见问题
- 必做验证:
- 路由、表单、验证、授权、队列、邮件、通知、文件系统、第三方包功能回归;
- 运行测试套件并补充关键场景的端到端测试;
- 检查 日志 与 调度任务 是否正常。
- 常见问题与处理:
- 依赖冲突或不兼容:逐项回退冲突包版本,或等待其适配新 Laravel;必要时采用“迁移式升级”。
- 配置/环境变量变化:对照 UPGRADE.md 调整 config/ 与 .env;清缓存后再测。
- 目录权限:确保 storage/ 与 bootstrap/cache 对 Web 服务用户(如 www-data) 可写。
- 计划任务与队列:重启队列进程,确认 Horizon/Supervisor 配置与版本兼容。
五 运维与发布建议
- 使用 Git 分支/标签 管理升级过程(如
upgrade/11.0),通过 CI/CD 在测试环境跑完测试再合并到生产分支。
- 采用灰度/蓝绿发布与回滚预案,最小化升级对用户的影响。
- 在 生产前 做一次全量备份与演练,确保恢复流程可用。
- 若升级幅度大或时间紧,可考虑 Laravel Shift 辅助减少手工改动量与风险。