【问题标题】:Laravel 4.2 using Apache Dev and Production SubdomainsLaravel 4.2 使用 Apache 开发和生产子域
【发布时间】:2014-12-08 21:33:54
【问题描述】:

我需要使用 Laravel 和 Apache 的子域设置开发和生产环境。例如:

dev.mydomain.com
app.mydomain.com

应用是生产,开发是开发。在我的 /var/www 中,我有 dev.mydomain.com 和 app.mydomain.com 文件夹。在每个文件夹中,我都有相同的 Laravel 项目(除了指向不同子域和数据库的配置文件)。

我想将这些位置分开,以便能够在不同的数据库上进行测试,并在投入生产之前测试新的开发文件(几乎没有停机时间)。通过在我的 Apache 配置文件中临时删除另一个子域的配置,我可以一次访问其中一个子域,但这很麻烦,并且会导致两个应用程序停机。

我的 .htaccess 文件似乎是正确的,因为我可以查看两个子域上的测试 URL(通过使用简单的 .html 文件)。当我尝试访问安装了 laravel 的子域时,我得到了奇怪的结果,例如在应用程序子域中能够连接到开发数据库或能够登录到应用程序环境,但无法登录到开发环境或反之亦然。

我一直在搜索 stackoverflow 和谷歌搜索以尝试找到解决方案,但到目前为止还没有任何结果。我主要找到了有关如何设置的教程

detectEnvironment  

在链接中使用 laravel:

http://chrishayes.ca/blog/code/laravel-4-setting-utilizing-environments-environment-configuration

是否有人对此有解决方案,或者有更好的方法在 Laravel 中与生产环境一起使用开发/测试环境?

【问题讨论】:

  • 实际上 laravel 所做的和 Marcin 提议的一样(参见 source)。如果您从两个域检查您的测试页,当您在 PHP 中打印 gethostname() 时会回显什么?这些值用作环境数组的索引。
  • 编辑:不是索引,而是环境数组的值。索引可以是任意名称。
  • 感谢您的回复。两个子域的主机名相同,因为我从同一台服务器托管。是否有其他工作可以完成此任务,或者我是否需要使用另一台服务器进行开发?
  • 我认为你应该微调你的 apache 配置。使用 NameVirtualHosts 和 VirtualHost 在 apache 配置中定义两个虚拟主机。每个都应该有相应子域的 ServerName。然后,您可以并行运行两个域,而无需在运行时切换任何内容。这两个域将有两个不同的主机名,这允许您在 laravel 环境中使用经典设置。有一些配置工作要做,但你会从额外的努力中受益。
  • 谢谢@martinczerwi,我已经使用 AWS 设置了这个服务器。为两个子域设置 NameVirtualHost 的唯一方法是创建多个 IP 地址吗?有没有办法用一个 IP 地址做到这一点?

标签: php mod-rewrite laravel laravel-4 laravel-environment


【解决方案1】:

bootstrap/start.php你可以做的是根据使用的域设置环境:

$env = $app->detectEnvironment(function(){
        if (!isset($_SERVER['HTTP_HOST']) ||
            $_SERVER['HTTP_HOST'] =='dev.mydomain.com') {
            return 'dev';
        }
        return 'production';
    });

我相信这里唯一的问题是artisan - 您只能在一种环境中使用它。在上面的代码中,artisan 将用于开发环境(因为如果你使用 artisan $_SERVER['HTTP_HOST'] 没有设置,并且在上面的代码中这个dev 正在选择开发。

【讨论】:

    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2016-06-26
    • 2017-09-06
    • 2023-03-24
    相关资源
    最近更新 更多