如何设置数据库连接 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

如何设置数据库连接

重要

该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre mium Su AWS pp ort 与 AWS Support 团队联系。

可以使用自定义配方来设置应用程序服务器与其后端数据库之间的连接。该配方按要求配置应用程序服务器,通常是通过创建配置文件。该配方从 Stacks 在每个实例上安装的堆栈配置和部署属性中的一组属性中获取连接数据, AWS OpsWorks 例如主机和数据库名称。

例如,的Chef 11 Linux 堆栈入门第 2 步基于一个名为 MyStack PHP App Server 和 MySQL 的堆栈,每个层都有一个实例。您在 PHP 应用服务器实例上部署了一个名为 SimplePHPApp 的应用程序,该应用程序使用 MySQL 实例上的数据库作为后端数据存储。当您部署应用程序时, AWS OpsWorks Stacks 安装包含数据库连接信息的堆栈配置和部署属性。下例显示数据库连接属性,表示为 JSON:

{ ... "deploy": { "simplephpapp": { ... "database": { "reconnect": true, "password": null, "username": "root", "host": null, "database": "simplephpapp" ... }, ... } } }

属性值由 AWS OpsWorks Stacks 提供,要么是生成的,要么基于用户提供的信息。

要允许 SimplePHPApp 访问数据存储,必须将名为 appsetup.rb 的自定义配方分配给 PHP 应用程序服务器层的部署生命周期事件,以此来设置 PHP 应用程序服务器与 MySQL 数据库之间的连接。当你部署 SimplephPapp 时, AWS OpsWorks Stacks 会运行appsetup.rb,它会创建一个名为db-connect.php的配置文件来设置连接,如以下摘录所示。

node[:deploy].each do |app_name, deploy| ... template "#{deploy[:deploy_to]}/current/db-connect.php" do source "db-connect.php.erb" mode 0660 group deploy[:group] if platform?("ubuntu") owner "www-data" elsif platform?("amazon") owner "apache" end variables( :host => (deploy[:database][:host] rescue nil), :user => (deploy[:database][:username] rescue nil), :password => (deploy[:database][:password] rescue nil), :db => (deploy[:database][:database] rescue nil), :table => (node[:phpapp][:dbtable] rescue nil) ) ... end end

表示连接特征的变量,如 hostuser 等被设置为来自部署 JSON 的 [:deploy][:app_name][:database] 属性的相应值。为简单起见,示例假定您已创建了一个名为 urler 的表,所以在说明书的属性文件中该表名表示为 [:phpapp][:dbtable]

该配方实际上可以将 PHP 应用程序服务器与任何 MySQL 数据库服务器连接,而不仅仅是 MySQL 层的成员。要使用其他 MySQL 服务器,您只需将[:database]属性设置为适合您的服务器的值,您可以使用自定义 JSON 来完成此操作。 AWS OpsWorks 然后,堆栈将这些属性和值合并到堆栈配置和部署属性中,并appsetup.rb使用它们来创建用于设置连接的模板。有关重写堆栈配置和部署 JSON 的更多信息,请参阅覆盖属性