Laravel 4.2使用Apache Dev和Production子域

时间:2014-10-14 07:23:20

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

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

dev.mydomain.com
app.mydomain.com

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

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

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

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

的教程
detectEnvironment  

如同链接中的laravel:

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

在生产环境中,是否有人为Laravel中的开发/测试环境提供了解决方案或更好的方法?

1 个答案:

答案 0 :(得分:0)

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

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

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