Amazon RDS MySQLデータベースを使用してHerokuでホストされているLaravelアプリでは、接続がタイムアウトします

中止

LaravelアプリをホストしているHerokuアプリがあります。最初はMySQLで開発を始めたので、AmazonのRDSサービスを使って開発を続けたいと思いました。そこでインスタンスを作成し、MySQLクライアントやコンソールなどを介して正常に接続できました。

問題は、Laravelアプリがデータベースを修正しようと何度も必死に試みた後、データベースに接続できないことです。DATABASE_URL環境変数の使用が必須であることを示唆する記事をいくつか見つけたので、Herokuアプリの設定から追加しました。それはそのように見えます:

mysql://myusername:mypass@myhostnamefromamazon/mydb?sslca=/app/storage/certs/amazon-rds-ca-cert.pem

このソリューションはHerokuのWebサイトで見つけました。次のように、amazon-rds-ca-cert.pemファイルをLaravelのストレージフォルダーに配置しました。/app/storage/certs/amazon-rds-ca-cert.pem

これでは問題が解決しなかったので、探し続けて、Lumenでこの問題が発生しStackoverflowの質問見つけましたconfig/database.php答えに応じて調整しましたが、まだうまくいきません!

<?php

$credentials = get_db_credentials();

$config = [
    'default' => env('DB_CONNECTION', 'mysql'),
    'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', $credentials->host),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', $credentials->database),
            'username' => env('DB_USERNAME', $credentials->username),
            'password' => env('DB_PASSWORD', $credentials->password),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
    ],
];

if (env('APP_ENV') == 'production') {
    $config['connections']['mysql']['options'] = [PDO::MYSQL_ATTR_SSL_CA => '../storage/certs/amazon-rds-ca-cert.pem'];
}

return $config;

このget_db_credentials()関数は単にDATABASE_URL環境変数を解析します。

私が得る正確な例外は次のとおりです。

[2018-10-25 19:32:16] production.ERROR: SQLSTATE[HY000] [2002] Connection timed out {"exception":"[object] (Doctrine\\DBAL\\Driver\\PDOException(code: 2002): SQLSTATE[HY000] [2002] Connection timed out at /tmp/build_05920c42a6de0a378402b798320d3f04/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:50

私はこれに完全に迷い、どのように進めるかわからない。

ceejayoz

AWSセキュリティグループは、HerokuのIPアドレス範囲からのトラフィックを許可する必要があります。

https://devcenter.heroku.com/articles/amazon-rds

HerokudynosにRDSインスタンスへのアクセスを許可する必要があります。これを行うための推奨される方法は、許可されたユーザーからのSSL暗号化接続のみを受け入れるようにRDSインスタンスを構成し、すべてのIPからの入力を許可するようにインスタンスのセキュリティグループを構成すること0.0.0.0/0です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

TOP 一覧

  1. 1

    PictureBoxで画像のブレンドを無効にする

  2. 2

    レスポンシブウェブサイトの一番下にスティッキーなナビゲーションバーを作成するのに問題がある

  3. 3

    Rパッケージ「AppliedPredictiveModeling」のインストール中にエラーが発生しました

  4. 4

    Chromeウェブアプリのウェブビューの高さの問題

  5. 5

    HTTPヘッダー 'SOAPAction'の値はサーバーによって認識されませんでした

  6. 6

    Pythonを使用して、リストからデータを読み取り、特定の値をElasticsearchにインデックス付けするにはどうすればよいですか?

  7. 7

    C ++でのcURLとマルチスレッドの使用

  8. 8

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  9. 9

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  10. 10

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  11. 11

    Spring @ModelAttributeモデルフィールドマッピング

  12. 12

    Python / SciPyのピーク検出アルゴリズム

  13. 13

    Ansibleで複数行のシェルスクリプトを実行する方法

  14. 14

    テキストフィールドの値に基づいて UIslider を移動します

  15. 15

    tf.nn_conv2dとtf.nn.depthwise_conv2dの違い

  16. 16

    ZScalerと証明書の問題により、Dockerを使用できません

  17. 17

    MLでのデータ前処理の背後にある直感

  18. 18

    Postmanを使用してファイル付きの(ネストされた)jsonオブジェクトを送信する

  19. 19

    java.lang.NoClassDefFoundError:com / sun / istack / tools / DefaultAuthenticator $ Receiver

  20. 20

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  21. 21

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

ホットタグ

アーカイブ