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 安装、迁移等,然后将应用程序从维护模式中提取出来。
我在 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 安装、迁移等,然后将应用程序从维护模式中提取出来。