我已多次阅读Yii2文档。我也用Google搜索,但我找不到任何有用的东西。
问题是我不了解环境文件夹的概念。请让我解释一下:
为什么我必须在环境/ dev &中复制我的所有控制器,视图和其他文件。的环境/ PROD
我实际需要在哪些文件夹中进行开发?
环境文件夹的部署过程是什么?我每次将更改推送到生产服务器后都应该调用 init 吗?
答案 0 :(得分:18)
除非您有非常具体的需要,否则您很可能会忽略环境文件夹。
您的所有代码都应该放入common
,frontend
,console
或backend
个文件夹。 common
appart,这些是应用程序的默认可用入口点,您可以在其中放置控制器逻辑。您显然不必全部使用它们,只需使用frontend
就可以满足您的具体需求。
但是如果您选择高级模板,则可能会再次使用组合......比如说common
,backend
和frontend
环境文件夹对应于运行./init
时的选项。这就是名字:
它们包含运行./init
命令时编辑和/或添加的所有文件。这些包括VCS(git)忽略(因此从未创建)的所有文件。
我们正在谈论像 * - local.php 这样的文件,出于显而易见的原因,这些文件永远不应该被版本化。但是,根据您正在初始化的环境而改变的条目脚本也是如此。例如,您希望在生产中调试和注销,但在开发中。这些是您无法在配置文件级别设置的内容,因为它们需要在Yii应用程序模型之前设置,或者您知道每次初始化环境时都需要默认设置。
您可以想象添加另一个名称为预生产的环境,例如,除了启用日志记录之外,它会像生产环境一样初始化您的应用程序。为此,您将复制environments/prod
文件夹,根据需要修改条目脚本,并在environments/index.php
中添加选项。
克隆分支后,只需要运行./init
一次。如果您对CI很重要,那么您的CI服务器可能需要在每次运行时运行./init
脚本。这可能取决于您如何配置它。如果您对要应用的环境文件夹进行了更改,则需要再次运行它。
这可能你已经知道但只是因为有人在想。
./yii controller/action
这通常是所有魔法发生的地方,不需要复制任何代码。
答案 1 :(得分:0)
首先,您不需要在环境文件夹中放置控制器和视图。 environment
文件夹包含包含不同环境的不同配置的文件。
例如,在frontend/web/index.php
文件中,您希望在生产环境中将YII_ENV
设置为prod
,而在开发环境中设置为dev
。在environment
文件夹中,此文件已在特定文件夹中的特定设置中可用。
正如Here所解释的那样,您需要做的就是运行init
命令并选择您的环境,它会将特定于环境的文件放在适当的位置。