laravel - 无法连接到已部署应用程序 Elastic Beanstalk 中的 RDS
问题描述
我有一个连接到 RDS 数据库的 Laravel 应用程序,在 localhost 中它运行良好,但是当我将应用程序部署到 Elastic Beanstalk 时它停止工作。
与mysql的连接:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => 'dbpassword',
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
DB_CONNECTION=mysql
DB_HOST=dbname.ctwrtyncfghj.us-east-1.rds.amazonaws.com
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=dbUser
为了部署,我压缩了除 vendor/.xml 之外的所有文件。
解决方案
我解决了这个问题,所以我将编写需要两个步骤的解决方案:
1. 从 Laravel 到 AWS 文档的 RDS 连接需要像这样完成:
一个。在 config/database.php 中添加定义语句:
define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
define('RDS_PORT', $_SERVER['RDS_PORT']);
湾。并更改 mysql 配置:
'mysql' => [
'driver' => 'mysql',
'host' => RDS_HOSTNAME,
'port' => RDS_PORT,
'database' => RDS_DB_NAME,
'username' => RDS_USERNAME,
'password' => RDS_PASSWORD,
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
]
2. 来自 AWS EB 应用程序的 RDS 连接需要被视为 VPC ( https://aws.amazon.com/documentation/vpc/ ):
一个。此视频准确展示了如何准确配置您的 VPC 和子网以使用 EB
https://www.youtube.com/watch?v=udY8x_g0dTk&frags=pl%2Cwn
湾。创建 VPC 和子网后,您需要创建一个全新的 EB 环境并连接到您的 VPC 和子网
推荐阅读
- python - 当python中的相似元素时如何有效地组合列表中的元组
- python - PyTest : 在运行时动态生成测试名称
- css - 使用 Nextjs 应用程序中的样式组件更改活动引导导航链接的颜色。(打字稿)
- c++ - 在 C++ 子类中使用继承的属性和“结构”
- sql - SQL 按多个字段分组获得第一次出现
- selenium-webdriver - 使用 Python selenium firefoxdriver 打开 Tor 浏览器时出错
- winforms - 隐藏的 wx.Frame 自动显示,从最小化还原后无法隐藏
- javascript - 从最新的存储库提交中缩小 javascript 库
- php - OSX - phpinfo() 和 php -v 版本不同
- node.js - 获取 GAPI 中标签的最后一封电子邮件