Laravel 5:运行 在服务器环境而非本地迁移

Laravel 5: run migrations on server environment, not local

我在 Laravel 5 应用程序中创建了一组简单的数据库迁移,它们 运行 在我的本地开发环境中运行良好。

现在是 运行 运行 在我的新生产服务器环境中迁移的时候了。我已经配置了数据库连接并部署了应用程序,应用程序可以看到数据库,但没有表 - 因此迁移需要 运行。

我相信以下命令应该 运行 使用 "production" 环境的迁移,该环境是使用远程数据库连接详细信息设置的:

php artisan --env=production migrate 

迁移有效,但在本地环境中 运行!这是我的生产环境的环境文件(使用 amazon elastic beanstalk 服务):

.elasticbeanstalk.env

APP_ENV=production
APP_DEBUG=true
APP_URL=<myappname.elasticbeanstalk.com>

DB_HOST=<myapp.amazonserveraddress.amazonaws.com:3306>
DB_DATABASE=<mydbname>
DB_USERNAME=<mydbusername>
DB_PASSWORD=<mydbpassword>

所以要么我的环境文件配置不正确,要么 artisan 无法切换到那个环境。我可以更改我的 .env 文件(本地开发环境,名为 "local")以连接到远程生产数据库,但我想正确使用 Laravels 环境。

我错过了什么?为什么迁移总是 运行 在 "local"?

谢谢。

您无法在本地 artisan 上 运行 任何远程命令。 运行 那里的任何东西都只能在本地工作(即使你设置了 ENV 变量)。

设置 ENV 变量只是告诉应用程序在 环境中表现。但是没有告诉artisan使用远程生产环境。

如果您想在您的生产服务器上执行 运行 命令,我建议您查看 Envoy。它是一个完全独立的项目(并且不必仅与 Laravel 项目一起使用)并且专门用于部署。

它基本上是一个围绕 SSH 连接到您的远程服务器然后 运行ning 命令的薄包装。我网站上的示例 Envoy.blade.php 文件可能如下所示:

@servers(['web' => 'account@server'])

@task('deploy')
    cd ~/src

    php artisan down
    git pull origin master

    composer install --no-dev --no-progress --prefer-dist
    php artisan migrate --force --no-interaction
    php artisan optimize
    php artisan up
@endtask

此 SSH 进入,将应用程序置于维护模式,提取新代码,进行各种 'new code' 设置,如 composer 安装、迁移等,然后将应用程序从维护模式中提取出来。