14

我已经多次阅读 Yii2 文档。我也用谷歌搜索,但我找不到任何有用的东西。

问题是我不明白环境文件夹的概念。请让我解释一下:

  1. 我可以在 Git 中使用分支(用于开发、登台和生产)
  2. *-local.conf文件被 Git 忽略,它们不会被推送到暂存或生产环境

为什么我必须复制environment/devenvironment/prod中的所有控制器、视图和其他文件?

我实际上必须在哪些文件夹中进行开发?

环境文件夹的部署过程是什么?每次将更改推送到生产服务器后,是否应该调用init ?

4

2 回答 2

19

除非您有非常特殊的需要,否则您很可能会忽略环境文件夹。

您的所有代码都应放入commonfrontendconsolebackend文件夹中。commonappart,这些是您的应用程序的默认可用入口点,您将在其中放置控制器逻辑。您显然不必全部使用它们,只需frontend根据您的具体需要使用就足够了。

但话又说回来,如果您选择高级模板,它可能会使用组合......比如说commonbackendfrontend

环境文件夹

环境文件夹对应于您在运行时拥有的选项./init。也就是说:

  • 0) 发展
  • 1) 生产

./init它们包含运行命令时编辑和/或添加的所有文件。这些包括所有被 VCS (git) 忽略(因此从未创建)的文件。

我们谈论的是像*-local.php文件这样的文件,出于显而易见的原因,它们永远不应该被版本化。而且入口脚本也会根据您正在初始化的环境而改变。例如,您希望在生产中进行调试和注销,但在开发中进行。这些是你无法在配置文件级别设置的东西,因为它们需要在 Yii 应用程序模型之前设置,或者你只知道每次初始化环境时都需要默认设置。

您可以想象添加另一个名为pre-production的环境,例如,它将像生产环境一样初始化您的应用程序,但启用了日志记录。为此,您将复制environments/prod文件夹,根据需要修改条目脚本,然后在environments/index.php.

克隆./init分支后只需要运行一次。如果你很喜欢 CI,那么你的 CI 服务器可能需要./init在每次运行时运行脚本。这可能取决于您如何配置它。如果您对要应用的环境文件夹进行了更改,则需要再次运行它。

common、console 和 *ends

这你可能已经知道了,但只是以防有人想知道。

  • common :包含所有应用程序通用的逻辑,从配置文件到模型
  • 前端:与前端 Web 界面相关的所有内容,也可以拥有自己的模型等。
  • 后端:与上面相同,但允许前端和后端应用程序之间的单独逻辑。
  • 控制台:用于通过命令行访问您的应用程序./yii controller/action

这通常是所有魔法发生的地方,无需复制任何代码。

于 2014-12-18T22:00:16.287 回答
0

首先,您不需要将控制器和视图放在环境文件夹中。environment文件夹包含包含针对不同环境的不同配置的文件。

例如,在frontend/web/index.php文件中,您希望在生产环境中设置YII_ENV为同时在开发环境中设置为。在文件夹中,此文件已在特定文件夹中具有这些特定设置。proddevenvironment

因此,正如这里所解释的,您需要做的就是运行init命令并选择您的环境,它将把环境特定的文件放在适当的位置。

于 2014-12-18T11:02:09.767 回答