向 PHP 应用程序环境中添加 Amazon RDS 数据库实例 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

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

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

注意

出于学习目的或对于测试环境,您可以使用 Elastic Beanstalk 来添加数据库实例。

对于生产环境,请在 Elastic Beanstalk 环境外部创建数据库实例,以从您的数据库资源中分离环境资源。这样,当您终止环境时,就不会删除数据库实例。使用外部数据库实例,还可以从多个环境连接到同一个数据库,并执行蓝绿部署。有关说明,请参阅将 Elastic Beanstalk 和 Amazon RDS 结合使用

向环境中添加数据库实例

向环境添加数据库实例

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域)列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments (环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration (配置)

  4. Database (数据库) 配置类别中,选择 Edit (编辑)

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

  6. 选择 Apply

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

属性名称 描述 属性值

RDS_HOSTNAME

数据库实例的主机名。

在 Amazon RDS 控制台的 Connectivity & security (连接和安全) 选项卡上:Endpoint (终端节点)

RDS_PORT

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

在 Amazon RDS 控制台的 Connectivity & security (连接和安全) 选项卡上:Port (端口)

RDS_DB_NAME

数据库名称 ebdb

在 Amazon RDS 控制台的 Configuration (配置) 选项卡上:DB Name (数据库名称)

RDS_USERNAME

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

在 Amazon RDS 控制台的 Configuration (配置) 选项卡上:Master username (主用户名)

RDS_PASSWORD

您为数据库配置的密码。

在 Amazon RDS 控制台中不可供参考。

有关配置内部数据库实例的更多信息,请参阅将数据库添加到 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 替换为您的驱动程序的名称 - pgsql ocisqlsrv

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

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

$link = new mysqli($_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)