gpt4 book ai didi

php - 如何在 AWS Elastic Beanstalk 上执行 Laravel Artisan 迁移?

转载 作者:可可西里 更新时间:2023-11-01 12:29:06 27 4
gpt4 key购买 nike

我安装了 Laravel 并设置了三个环境,它们各自对应的配置目录:

  • 本地
  • 分期
  • 制作

我使用 php artisan migrate:make create_users_tablehere创建数据库迁移。

在我的本地环境中,我使用 Vagrant 和一个简单的 MySQL 服务器设置,在暂存和生产环境中,我使用 AWS RDS。

staging 配置数据库访问environment我有一个 app/config/staging/database.php 文件,其设置如下:

...
"mysql" => array(
"driver" => "mysql",
"host" => $_SERVER["RDS_HOSTNAME"],
"database" => $_SERVER["RDS_DB_NAME"],
"username" => $_SERVER["RDS_USERNAME"],
"password" => $_SERVER["RDS_PASSWORD"],
"charset" => "utf8",
"collaction" => "utf8_unicode_ci",
"prefix" => "",
),
...

我使用 git 通过 git aws.push 部署应用程序,如所述 here .

问题是:部署时如何在暂存(和以后的生产)EBS 服务器上运行迁移?

最佳答案

我通过在名为 .ebextensions 的项目根目录中创建一个新目录来解决它.在该目录中,我创建了一个脚本文件 my-scripts.config :

.ebextensions/
my-scripts.config
app/
artisan
bootstrap
...

文件my-scripts.config在 EBS 部署时执行,是一个 YAML 文件,如下所示:

container_commands:
01-migration:
command: "php /var/app/ondeck/artisan --env=staging migrate"
leader_only: true

将目录和文件添加到git,提交并运行git aws.push它会迁移。

解释 .ebextensions 中的内容作品可见here .

路径/var/app/ondeck是脚本运行时应用程序所在的位置,之后它将被复制到 /var/app/current 中.

artisan 选项 --env=staging用于告诉 artisan 它应该在什么环境中运行,以便它可以从 app/config/staging/database.php 中找到正确的数据库设置。

如果您需要一种快速而肮脏的方法来记录迁移命令失败的原因,您可能想尝试类似 "php /var/app/ondeck/artisan --env=staging migrate > /tmp/artisan-migrate.log" 的方法这样您就可以登录到您的 ec2 实例并检查日志。

关于php - 如何在 AWS Elastic Beanstalk 上执行 Laravel Artisan 迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com