AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

向 PHP 应用程序环境中添加 Amazon RDS 数据库实例

您可以使用 Amazon Relational Database Service (Amazon RDS) 数据库实例存储应用程序收集和修改的数据。数据库可以挂载到您的环境由 Elastic Beanstalk 托管,也可以在外部创建和托管。

如果您是初次使用 Amazon RDS,请通过 Elastic Beanstalk 控制台向测试环境添加数据库实例,并验证您的应用程序是否可以与其连接。

要连接数据库,请向您的应用程序中添加驱动程序,在代码中加载驱动程序类,并使用 Elastic Beanstalk 提供的环境属性创建连接对象。配置和连接代码取决于您使用的数据库引擎和框架。

对于生产环境,请在 Elastic Beanstalk 环境外部创建数据库实例,从您的数据库资源中分离环境资源。使用外部数据库实例可以从多个环境连接到同一个数据库,并执行蓝绿部署。有关说明,请参阅配合使用 Elastic Beanstalk 和 Amazon Relational Database Service

向环境中添加数据库实例

向环境添加数据库实例

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. 数据库配置卡上,选择修改

  5. 选择数据库引擎,然后输入用户名和密码。

  6. 选择 Apply

添加一个数据库实例大约需要 10 分钟。环境更新完成后,您的应用程序就可以通过以下环境属性访问数据库实例的主机名和其他连接信息:

  • RDS_HOSTNAME – 数据库实例的主机名。

    Amazon RDS 控制台标签 – 终端节点 (这是主机名)

  • RDS_PORT – 数据库实例接受连接的端口。默认值因数据库引擎而异。

    Amazon RDS 控制台标签 – Port

  • RDS_DB_NAME – 数据库名称,ebdb

    Amazon RDS 控制台标签 – DB Name

  • RDS_USERNAME – 您为数据库配置的用户名。

    Amazon RDS 控制台标签 – Username

  • RDS_PASSWORD – 您为数据库配置的密码。

有关配置内部数据库实例的更多信息,请参阅向 Elastic Beanstalk 环境中添加数据库

下载驱动程序

要使用 PHP 数据对象 (PDO) 连接到数据库,请安装与您所选数据库引擎匹配的驱动程序。

有关更多信息,请参阅 http://php.net/manual/en/pdo.installation.php

使用 PDO 或 MySQLi 连接到数据库

您可以使用 $_SERVER[`VARIABLE`] 从环境中读取连接信息。

对于 PDO,请根据主机、端口和名称创建一个数据源名称 (DSN)。使用数据库用户名和密码将 DSN 传递到 PDO 的构造函数

例 使用 PDO 连接到 RDS 数据库 - MySQL

<?php $dbhost = $_SERVER['RDS_HOSTNAME']; $dbport = $_SERVER['RDS_PORT']; $dbname = $_SERVER['RDS_DB_NAME']; $charset = 'utf8' ; $dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}"; $username = $_SERVER['RDS_USERNAME']; $password = $_SERVER['RDS_PASSWORD']; $pdo = new PDO($dsn, $username, $password); ?>

对于其他驱动程序,请将 mysql 替换为您的驱动程序的名称 – pgsqlocisqlsrv

对于 MySQLi,请将主机名、用户名、密码、数据库名称和端口传递到 mysql_connect 函数。

例 使用 mysqli_connect() 连接到 RDS 数据库

$link = mysqli_connect($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'], $_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);

使用 Symfony 连接到数据库

对于 Symfony 版本 3.2 和更高版本,您可以使用 %env(PROPERTY_NAME)%,基于由 Elastic Beanstalk 设置的环境属性在配置文件中设置数据库参数。

例 app/config/parameters.yml

parameters: database_driver: pdo_mysql database_host: '%env(RDS_HOSTNAME)%' database_port: '%env(RDS_PORT)%' database_name: '%env(RDS_DB_NAME)%' database_user: '%env(RDS_USERNAME)%' database_password: '%env(RDS_PASSWORD)%'

有关更多信息,请参阅外部参数 (Symfony 3.4)

对于较早版本的 Symfony,环境变量仅在以 SYMFONY__ 开头时可供访问。这意味着 Elastic Beanstalk 定义的环境属性无法访问,并且您必须定义自己的环境属性以将连接信息传递给 Symfony。

要使用 Symfony 2 连接到数据库,请为每个参数创建一个环境属性。然后,使用 %property.name% 来访问配置文件中由 Symfony 转换的变量。例如,名为 SYMFONY__DATABASE__USER 的环境属性可作为 database.user 访问。

database_user: "%database.user%"

有关更多信息,请参阅外部参数 (Symfony 2.8)