Я пытаюсь настроить простой сайт Wordpress, используя AWS Elastic Beanstalk с отключенной базой данных RDS (не является частью экземпляра ELB в случае, если я хочу подключить несколько сайтов к БД), примерно следуя этому руководству:
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html.
Тем не менее, я получаю следующую ошибку при загрузке установки Wordpress:
Error establishing a database connection
До сих пор я пытался устранить проблему с помощью:
- Проверка того, что и RDS, и EC2 находятся в одном и том же VPC с одной и той же группой безопасности, для которой установлены надлежащие правила для входящих вызовов:
- Я убедился, что RDS доступен следующим образом:
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 может подключаться к RDS, подключившись к нему по SSH и используя команду mysql
и скопировав / вставив мои переменные env, чтобы убедиться в отсутствии опечаток, как рекомендовано @littleforest, что успешно подключен к базе данных.
Я обновил пример PHP-приложения, поставляемого с AWS, для вывода переменных env, чтобы убедиться, что сервер их читает. Выводят как надо.
Мой файл wp_config.php выглядит как рекомендованный турториалом:
<?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');
И в программном обеспечении config> моего Elastic Beanstalk я проверил эти переменные:
- RDS_DB_NAME
- RDS_HOSTNAME
- RDS_PASSWORD
- RDS_PORT
- RDS_USERNAME
Я знаю, что мне не хватает чего-то глупого, что гуру AWS поймает сразу, но это сводит меня с ума.