我试图通过使用AWS Elastic Beanstalk和断开的RDS数据库(如果要将多个站点连接到数据库,不属于ELB实例)来建立一个简单的Wordpress站点,大致遵循以下指南: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html。
但是,加载Wordpress安装时出现以下错误:
Error establishing a database connection
到目前为止,我已经尝试通过以下方法解决问题:
nrb$ nc -zv <***masked-connection-string***> 3306
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif en0
src 192.168.20.149 port 58825
dst 3.215.127.182 port 3306
rank info not available
TCP aux info available
Connection to <***masked-connection-string***> port 3306 [tcp/mysql] succeeded!
我已经验证我的EC2可以通过SSH并使用mysql
命令并复制/粘贴我的env变量以确保没有@littleforest建议的错字来连接到RDS,已成功连接到数据库。
我已经更新了AWS随附的示例PHP应用程序,以输出我的env变量,以确保服务器正在读取它们。他们按需输出。
我的wp_config.php文件看起来像turtorial推荐的那样:
<?php
define('DB_NAME', $_SERVER['RDS_DB_NAME']);
define('DB_USER', $_SERVER['RDS_USERNAME']);
define('DB_PASSWORD', $_SERVER['RDS_PASSWORD']);
define('DB_HOST', $_SERVER['RDS_HOSTNAME'] . ':' . $_SERVER['RDS_PORT']);
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
define('AUTH_KEY', $_SERVER['AUTH_KEY']);
define('SECURE_AUTH_KEY', $_SERVER['SECURE_AUTH_KEY']);
define('LOGGED_IN_KEY', $_SERVER['LOGGED_IN_KEY']);
define('NONCE_KEY', $_SERVER['NONCE_KEY']);
define('AUTH_SALT', $_SERVER['AUTH_SALT']);
define('SECURE_AUTH_SALT', $_SERVER['SECURE_AUTH_SALT']);
define('LOGGED_IN_SALT', $_SERVER['LOGGED_IN_SALT']);
define('NONCE_SALT', $_SERVER['NONCE_SALT']);
$table_prefix = 'wp_';
define('WP_DEBUG', false);
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
在我的Elastic Beanstalk的config>软件中,我已经验证了以下变量:
我知道我缺少某种愚蠢的东西,一个AWS专家马上就会抓住它,但这真让我发疯。
答案 0 :(得分:0)
好的!几次偏头痛并尖叫着键盘后,我才知道发生了什么。
由于我能够通过SSH连接到RDS服务器,所以我认为问题必须出在Wordpress上。果然,当我打开DEBUG模式时,Wordpress在RDS服务器上找不到我的数据库。
事实证明,设置RDS 数据库实例ID不是数据库名称。但是,即使在高级配置选项下指定名称,RDS也不会在启动时设置该数据库。
因此,要解决此问题,我必须:
mysql
命令连接到RDS 然后,一旦我确认数据库存在于mysql控制台中,我就可以运行著名的5分钟的Wordpress安装。