本文转自:https://www.hellomagento2.com/switch-magento-2-system-modes/

原文地址

在开始 Magento 2 使用之前,需要了解一些基本的东西,其中之一就是系统可用的模式。

  • 每种模式的主要特点
  • 如何切换模式
  • 如何显示当前的模式

Magento 2 总共有三种主要模式:developer(开发者模式), production(生产模式), default(默认模式)

还有一个 maintenance (维护)模式,该模式运行方式很特别,他将完全阻止对系统的访问。

Magento 2 系统模式的主要特点

  Developer Mode Production Mode Default Mode
Static File Caching(缓存静态文件)    
Exceptions Displayed(显示异常)    
Exceptions Logged(异常记录日志)  
Negative Performance Impact(负面的性能影响)  

Developer Mode

当你正在开发代码的时候,你应该选择开发者模式,为什么呢?

  • 可以看到错误信息
  • 每次请求都会生成静态文件(static view files)
  • 没有使用缓存
  • 立刻可以看到变化
  • 会在浏览器中显示未捕获的异常
  • 在错误处理程序中抛出异常
  • Exceptions are thrown whenever an event subscriber cannot be invoked(每当事件订阅服务器不能调用时,则将引发异常)
  • 该模式下 var/report 中的系统日志非常详细
  • 显示自定义的 X-Magento-* HTTP 请求和响应标头

该模式会降低性能,所以在生产环境中不该使用它。

Production Mode

部署到生产环境中后,你就应该使用生产模式,他是面向客户的,为什么呢?

  • 性能最好
  • 错误会记录到文件系统中,绝对不向客户展示错误。
  • Static view file materialisation is disabled
    • 这意味着 static view file 不会在每次需要时重新生成,他们已经通过 CLI 命令部署到 pub/static 文件夹下
    • 对 view files 的任何更改都要通过 CLI deploy 才会有效果
    • view files 已经被部署到 pub/static ,这个文件夹下只需要 read-only 权限,这样更安全
  • Magento docroot 只有 read-only 权限

developer 模式不应该用在生产环境中。 So, when you need to make changes, you should instead generate static content in development and then use the deployer.php tool to push changes to production

Default Mode

这是一个 fallback 模式,如果没有指定其他模式,就会使用默认模式。

  • 错误被记录到 var/reports 中,但不会展示给用户
  • Static view files are materialized and then cached
    • view files 的变化不会有效直到原来生成的 static view files 被清除了
  • 隐藏自定义的 X-Magento-* HTTP 请求和响应标头
  • 这种模式没有为生产做最好的优化

Maintenance Mode

这是 Magento 2 预置的一个功能。当你在给系统升级或做其他改变的时候,你不想让用户使用网站,这时候会返回给用户 503 提示。

Bootstrap::assertMaintenance() 方法控制该模式,你可以通过创建一个标识文件(var/.maintenance.flag)来启用该模式。

You can specify a group of people to have access to the site while this mode is employed by placing the associated IPs in var/.maintenance.ip.

如何切换模式

CLI 命令

magento deploy:mode:set [mode] [-s|--skip-compilation]

[mode] 不可少,可以是developer 或者 production
--skip-compilation 是可选的,如果你想在 production 模式的时候跳过 code compilation

Web Server Environment

(这种方式博主没有试过,暂时不翻译,以后试验过理解了再补上)
Apache web servers with mod_php support this method. The environment variables can be set in the main apache configuration or in the .htaccess.

If you are using an Apache system you can do the following:

  • Open Apache
  • Open the .htaccess file
  • Use the MAGE_MODE system environment variable to specify the mode as follows:
SetEnv MAGE_MODE [mode]

[mode] is required; it can be either default, developer or production

After setting the mode you will need to restart the web server for it to take effect.

php-fpm Environment

You can specify the mode in the php-fpm config or in the system environment in which the php-fpm is started.

In the php-fpm config file, the value can be set as follows:

env[MAGE_MODE]=[mode]

[mode] is required; it can be either default, developer or production

显示当前模式

CLI 命令:

magento deploy:mode:show

然后你会看到如下信息:

Current application mode: [mode].

补充:Magento 的命令怎么用

以 windows 下的 wamp 环境为例,请打开 CMD (命令提示符)
然后切换到 Magento 的根目录

e:
cd www\hellomagento2

这样我现在的位置在 E:\www\hellomagento2 下,这是我的 Magento 2 的根目录。这个目录下有 app,bin 等等文件。下面回到 CMD 输入如下命令:

php bin\magento list

就像下面这样,

好了,上面的命令告诉你 Magento 系统中所有可用的命令。同理,上面要显示当前的模式,命令是 php bin\magento deploy:mode:show

如果你出现错误提示php 不是内部或外部命令,也不是可运行的程序或批处理文件,可以去这里看看。

[转]magento 2 modes – 每种模式的特点及如何切换(翻译)的更多相关文章

  1. mod_wsgi 的两种模式

    mod_wsgi 的两种模式 http://ssmax.net/archives/977.html http://www.cnblogs.com/yuxc/p/3555005.html mod_wsg ...

  2. javascript 创建对象的7种模式

    使用字面量方式创建一个 student 对象: var student = function (){ name : "redjoy", age : 21, sex: women, ...

  3. javascript面向对象系列第二篇——创建对象的5种模式

    × 目录 [1]字面量 [2]工厂模式 [3]构造函数[4]原型模式[5]组合模式 前面的话 如何创建对象,或者说如何更优雅的创建对象,一直是一个津津乐道的话题.本文将从最简单的创建对象的方式入手,逐 ...

  4. javascript创建对象的几种模式

    在js中有几种模式可以创建对象,通过对象操作所包含的属性与方法. 一般来说,构造函数名称的第一个字母为大写字母,非构造函数名称的第一个字母为小写字母,当然,构造函数与一般函数唯一的区别只是调用的方式不 ...

  5. SQL Server 2012复制教程以及复制的几种模式

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  6. git push :推送本地更改到远程仓库的三种模式

    摘要:由于在git push过程中,no-fast-forward 的push会被拒绝,如何解决git push失败的问题?这里面有三种方法,分别会形成merge形式的提交历史,线性形式的提交历史,覆 ...

  7. App开发三种模式

    APP开发三种模式 现在App开发的模式包含以下三种: Native App 原生开发AppWeb App 网页AppHybrid App 混合原生和Web技术开发的App 详细介绍: http:// ...

  8. [转]VMware Workstation网络连接的三种模式

    经常要使用VMWare Workstation来在本地测试不同的操作系统,以前也搞不清楚网络连接三种模式,最近看了几篇文章才算明白.现总结如下: 1. VMware Workstation的虚拟网络组 ...

  9. Windows2003 IIS6.0支持32位和64位两种模式的设置方法

    IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...

随机推荐

  1. [require-js]向下滑动ajax加载的javascript实现

    define(function(){ function ScrollMoreInfo($wraper , loadDataFunc , json_ids , perNum , tpl_info) { ...

  2. UNIGUI换版本注意事项

    比如UNIGUI换版本注意事项 许多人在更换UNIGUI版本时,会遇到各种问题,报各样错.比如下面的: 然后便不知所措,怀疑是UNIGUI新版本有问题——不能安装成功.其实不然. 下面是正确的解决方法 ...

  3. 用光的微粒说和广义相对论来解释衍射现象 Explanation of Diffraction Phenomenon by Particle Theory of Light and General Relativity

    历史上,物理学是用波动说来解释光的衍射现象.但用微粒说结合广义相对论同样可以做到. 把光看作粒子,当经过障碍物边缘时,由于广义相对论效应,边缘附近的空间被弯曲,使得不同路径的平行光发生偏转,落在障碍物 ...

  4. C# 判断access建库、建表、文件是否存在等

    1.创建数据库 2.判断表是否存在 3.创建表 1.    #region access数据库操作 之 创建数据库         private void creatMDB(string dbNam ...

  5. 【NumberValidators】工商营业执照号码和统一社会信用代码验证

    从本质上讲,工商营业执照号码和统一社会信用代码是两套完全不一样的编码规则,识别结果也仅有行政区划部分为两者共有,但因为这两种编码同时存在的原因,所以如果需要在系统中唯一标志一家企业时,还是可以通过工商 ...

  6. python3之paramiko模块

    1.paramiko模块介绍 paramiko模块提供了基于ssh连接,进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 2.paramiko的使用方法 (1 ...

  7. 【flex】学习笔记/总结

    CSS3 flex布局 查看兼容情况: caniuse.com 盒子模型: content-box:平时普通盒子模型,padding/border 会使盒子变大 向外扩展 border-box:盒子模 ...

  8. HTML元素ID和JS方法名重复,JS调用失败

    HTML元素ID和JS方法名重复时,JS中的重名方法无法被找到,不能执行. 修改ID或者方法名,两者不一致即可.

  9. Mac上搭建rtmp流媒体服务器(结合FFmpeg的使用)

    1.确保安装homebrew ---安装则跳到第二步 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/ins ...

  10. 【并发】3、LockSupport阻塞与唤醒,相较与wait和notify

    我们可以使用wait和notify分别对象线程进行阻塞或者唤醒,但是我们也可以使用LockSupport实现一样的功能,并且在实际使用的时候,个人感觉LockSupport会更加顺手 范例1,wait ...