Leo*_*eon 3 mysql database migration laravel artisan
我在Laravel 5应用程序中创建了一组简单的数据库迁移,它们在我的本地开发环境中运行良好.
现在是时候运行在我的新生产服务器环境上运行迁移了.我已经配置了数据库连接并部署了应用程序,应用程序看到了数据库,但没有表 - 因此需要运行迁移.
我相信,以下命令应使用"生产"环境运行迁移,该环境使用远程数据库连接详细信息进行设置:
php artisan --env=production migrate
Run Code Online (Sandbox Code Playgroud)
迁移有效,但它运行在本地环境中!这是我的生产环境的环境文件(使用亚马逊弹性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>
Run Code Online (Sandbox Code Playgroud)
因此,我的环境文件配置不正确,或者工匠无法切换到该环境.我可以更改我的.env文件(本地开发环境,名为"local")以连接到远程生产数据库,但我想正确使用Laravels环境.
我错过了什么?为什么迁移总是在"本地"上运行?
谢谢.
您无法在本地运行任何远程命令artisan.你在那里运行的任何东西都只能在本地工作(即使你设置了ENV变量).
设置ENV变量只是告诉应用程序表现得好像它在那个环境中一样.但是并没有告诉工匠使用远程生产环境.
如果您想在生产服务器上运行命令,我建议您查看Envoy.它是一个完全独立的项目(并且不必仅用于Laravel项目),专门用于部署.
它基本上是一个瘦的包装器,用于SSH连接到远程服务器然后运行命令.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
Run Code Online (Sandbox Code Playgroud)
这个SSH,将应用程序置于维护模式,拉出新代码,执行各种"新代码"设置,如composer安装,迁移等,然后将应用程序拉出维护模式.