使用 rds 数据库实例在 aws elastic beanstalk 中托管 laravel 应用程序

Posted

技术标签:

【中文标题】使用 rds 数据库实例在 aws elastic beanstalk 中托管 laravel 应用程序【英文标题】:hosting a laravel application in aws elastic beanstalk with rds db instance 【发布时间】:2015-10-22 19:50:42 【问题描述】:

我已成功完成在弹性 beantalk 上部署我的应用程序。但是当我调用它显示的 URL 时(我已将表导出到 RDS 数据库实例)

Connector.php 第 47 行中的错误异常: SQLSTATE[HY000] [2002] 连接超时(查看:/var/app/current/local/resources/views/themes/default1/client/cart.blade.php)

我的database.php配置是:

'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'rds.cvp31y7ebg1x.us-west-2.rds.amazonaws.com:3306',
        'database'  => 'rdsdb',
        'username'  =>'rdsuser',
        'password'  => '******',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

请帮我解决这个问题。

谢谢。

【问题讨论】:

查看RDS安全组规则? 您是否使用由 Elastic Beanstalk 配置的 RDS?或者,您自己创建RDS? 【参考方案1】:

1) 您可以在配置中使用“port”-key 提供端口:

'port' => env('DB_PORT', '3306'),

2) 检查 RDS 安全组,或者 - 很可能您在 VPC 中使用 RDS:

3) 检查 VPC 安全组。将 VPC 安全组附加到您的 RDS 实例,并将您的 IP/您的账户(不好的做法)/您的实例或扩展组在这些 VPC 安全组中列入白名单。请记住:如果您在 VPC 中使用 RDS,则 VPC 安全组对 RDS 很重要!

【讨论】:

另一方面,您是否有可能在您的视图中访问 RDS?如果是这样,请帮自己一个忙,重新阅读 laravel 大量改编的 MVC 模式。 感谢@Huggy 的快速响应,我在我的database.php 文件中更改了端口号,它运行良好,但在beantalk 中它显示相同的错误,我希望这是因为我的VPC 安全性。请提供一些最佳实践建议 在我的所有安全组中,我的出站规则更改为所有流量。 首先,确保您实际上使用的是 VPC:在 RDS 控制台中,切换到实例详细信息并查找 VPC - 很可能,您的 RDS 将设置在 VPC 中。然后,切换到 VPC 服务仪表板并从左侧导航中选择“安全组”。您可能会在那里找到一个“默认”组。更改“入站规则”,添加端口 3306。作为源,您可以插入您的 EC2 beantalk 实例所在的安全组(也许它会为您自动完成 - 所以您可以尝试输入 sg- 并希望它会自动完成。EC2 sg 可以在 EC2 Dashb 中找到。 附加说明:确保此“默认”组已附加到您的 RDS 实例 - 您可以选择在您的 RDS 实例中使用 modify instance

以上是关于使用 rds 数据库实例在 aws elastic beanstalk 中托管 laravel 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Elastic Beanstalk 中更改数据库配置

无法通过 Python Elastic Beanstalk 中的 Flask SQLAlchemy URI 连接到 AWS MySQL RDS 实例

Django AWS RDS 环境变量未在 Elastic Beanstalk 中设置

Elastic Beanstalk CLI,如何使用 RDS 实例创建环境?

无法在 AWS Elastic Beanstalk 上创建新的 RDS 数据库

如何使用外部 RDS 数据库在 AWS Elastic Beanstalk 中设置 Laravel 应用程序