Magento 2 生产模式会关闭按需生成部分代码和静态资源,适合正式站点,但切换过程会触发编译和部署。不能在未准备静态文件和回滚方案时直接执行。

部署前检查

bin/magento deploy:mode:show
bin/magento module:status
bin/magento setup:db:status
df -h

确认代码版本、Composer 依赖、数据库状态、磁盘空间和 PHP CLI 版本。备份 app/etc/env.phpconfig.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。确认 vargeneratedpub/staticpub/media 的读写边界正确。

上线后验证

  • 首页、分类、商品、搜索和结账正常。
  • 后台可以登录并保存配置。
  • 静态文件和媒体没有 404。
  • Cron、消费者和索引器正常运行。
  • PHP、Magento、Web 服务器日志没有新异常。
  • 缓存能够命中,页面响应时间恢复稳定。

生产模式切换成功只是部署的一部分。只有业务页面、后台任务和监控全部正常,发布才算完成。