在Laravel建立生产/开发环境

时间:2015-02-04 19:18:00

标签: php git laravel-4

我在GitHub与我的一位同事合作,这是一个关于Laravel的项目。现在我做了一些提交并给这个人发了Git链接,他看起来很好看并且有以下说法:

  

我将环境设置为开发后,迁移工作正常   而不是生产。我经常做什么,你当然不会   必须将,设置为开发的默认环境并将其设置为   仅当在虚拟主机文件中设置了变量时才生成   在.htaccess。

现在我理解了为开发设置默认环境的部分,但是让我完全摆脱困境的是虚拟主机这个词。

我阅读了Laravel关于生产环境的文档,但是这个人说的对我来说有点混乱。有人可以澄清一下吗?

同一个人也给我发了以下功能:

$env = $app->detectEnvironment(function() {
        return getenv('APP_ENV') ?: 'local';
});

我是Laravel的新手,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

环境

当你的朋友给你看代码时:

$env = $app->detectEnvironment(array(
    'local' => array('homestead'),
)); 

它指的是框架中允许您将主机名(homestead)绑定到特定环境名称(local)的部分。

您可以在bootstrap/start.php找到项目中包含此代码的文件。或者看一下here on GitHub

当您为特定主机名指定环境名称时,框架将以不同方式加载配置设置。如果你看文件夹:

app/config/

您会注意到有一个名为local的文件夹。该文件夹包含一些与app/config/文件夹根目录中的配置文件相匹配的配置文件。在具有您在start.php文件中指定的主机名的计算机上启动框架时,它会使用您在应用常规配置版本之前在local/版本的文件中提供的任何设置。

这意味着如果您为本地环境使用不同的数据库凭据,则可以将它们放在config/local/database.php配置中,并且只有在本地环境中启动框架时才会使用它们。

local目录中的配置项级联,因此您只需添加与生产环境不同的配置。

您可以通过添加新环境名称以及应在其上运行的计算机的主机名来设置不同的环境:

$env = $app->detectEnvironment(array(
    'local'   => array('homestead'),
    'testing' => array('testserver')
)); 

现在我可以创建一个名为app/config/testing的文件夹,添加一个新的database.php配置文件,并具体说明我的测试数据库的凭据。从测试服务器启动框架时,将使用testing配置文件中的任何详细信息,然后剩余的配置详细信息将来自默认(生产)环境配置文件。

此外,Laravel 4.2假设app/config为您的生产环境,因此当您在生产服务器上启动框架时,它将使用app/config

中配置文件中的所有凭据

您可以在how Laravel handles configurations here上阅读更多内容。

虚拟机(Homestead)

您朋友正在谈论的虚拟机homestead是Laravel的官方虚拟开发环境。它基本上是一个专门用于处理laravel的虚拟机(尽管你也可以将它用于非Laravel项目)。 Laracasts有一个fee video talking about homestead,可以帮助你填补。