Magento 2 生产模式会关闭按需生成部分代码和静态资源,适合正式站点,但切换过程会触发编译和部署。不能在未准备静态文件和回滚方案时直接执行。
部署前检查
bin/magento deploy:mode:show
bin/magento module:status
bin/magento setup:db:status
df -h
确认代码版本、Composer 依赖、数据库状态、磁盘空间和 PHP CLI 版本。备份 app/etc/env.php、config.php 与数据库,并记录当前可回滚版本。
进入维护模式
bin/magento maintenance:enable
有负载均衡时,要确保所有节点使用一致的维护和发布策略。仅在一个节点执行、其他节点继续提供旧代码,可能造成版本混用。
执行数据库升级和编译
bin/magento setup:upgrade --keep-generated
bin/magento setup:di:compile
编译失败时从第一个异常处理,常见原因是构造函数依赖错误、生成代理冲突或扩展与 PHP 版本不兼容。不要删除错误信息后继续上线。
部署静态内容
bin/magento setup:static-content:deploy zh_Hans_CN en_US
参数应包含实际启用的 area、主题和 locale。多节点站点要保证每个节点读取相同版本的静态资源。
切换生产模式
bin/magento deploy:mode:set production --skip-compilation
bin/magento cache:clean
bin/magento maintenance:disable
因为前面已经完成编译,所以可跳过重复编译。不同版本的命令参数可能有差异,执行前先查看 --help。
权限检查
部署用户、Web 用户和 Cron 用户应按项目策略共享必要用户组。不要使用 777。确认 var、generated、pub/static 和 pub/media 的读写边界正确。
上线后验证
- 首页、分类、商品、搜索和结账正常。
- 后台可以登录并保存配置。
- 静态文件和媒体没有 404。
- Cron、消费者和索引器正常运行。
- PHP、Magento、Web 服务器日志没有新异常。
- 缓存能够命中,页面响应时间恢复稳定。
生产模式切换成功只是部署的一部分。只有业务页面、后台任务和监控全部正常,发布才算完成。

