🐣

Heroku RedisとLaravelの接続設定(2020年12月以降)

2021/01/23に公開1

概要

2020年12月ぐらいからHeroku RedisをHobbyより上位のプランで追加すると、
自己署名のTLS証明書が利用されるようになり、Laravelのデフォルト設定ではRedisに接続できなくなってしまったため、設定方法を記録として残しておく。

修正箇所

schemeの項目を追加し、Heroku側の環境変数ではtlsを設定する。
また、自己署名証明書の許可を「ssl」の項目でしてあげれば大丈夫です。
config/database.php

    'redis' => [

        'client' => env('REDIS_CLIENT', 'predis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        ],

        'default' => [
            'scheme' => env('REDIS_SCHEME', 'tcp'),
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_DB', 0),
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name'  => false,
                'allow_self_signed' => true,
            ],
        ],

        'cache' => [
            'scheme' => env('REDIS_SCHEME', 'tcp'),
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_CACHE_DB', 1),
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name'  => false,
                'allow_self_signed' => true,
            ],
        ],
    ],

最後に

直近で変わったという事と、Hobby以上のプランで利用している人が少ないためか情報が全然出てこなかったので備忘録として残しておきます。

Discussion

@tyamahori@tyamahori

こちらですが、 predisかと思われます phpredisを使う場合のやつ残しておきます〜!
https://laravel.com/docs/8.x/redis#phpredis


    'redis' => [

        'client' => env('REDIS_CLIENT', 'phpredis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix'  => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),
        ],

        'default' => [
            'scheme'   => env('REDIS_SCHEME', 'tcp'),
            'url'      => env('REDIS_URL'),
            'host'     => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD'),
            'port'     => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_DB', '0'),
            'context' => [
                 'stream' => [
                     'allow_self_signed' => true,
                     'verify_peer'       => false,
                     'verify_peer_name'  => false,
                 ],
            ],
        ],

        'cache' => [
            'scheme'   => env('REDIS_SCHEME', 'tcp'),
            'url'      => env('REDIS_URL'),
            'host'     => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD'),
            'port'     => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_CACHE_DB', '1'),
            'context' => [
                'stream' => [
                    'allow_self_signed' => true,
                    'verify_peer'       => false,
                    'verify_peer_name'  => false,
                ],
            ],
        ],
    ],