Laravel 5.5 : 세션 저장에 Redis 사용 (Heroku)

8877 단어 laravel5.5
프로덕션 환경에서 사용하는 Heroku에서 세션을 저장할 위치를 기본 파일에서 Redis로 변경합니다.
그러나 이것은 필수는 아닙니다. 대상이 파일로 남아도 전혀 문제가 없습니다.
또한 Heroku에서 Redis를 이용하려면 무료 플랜이라도 신용카드를 등록해야 합니다.
아래에서는 Heroku CLI을 설치된 것으로 진행합니다.

상위 기사



Laravel 5.5에서 기본 CRUD 만들기 - Qiita

애드온 추가



Create a new instance

PowerShell
# 無料プランでRedisを使う
> heroku addons:create heroku-redis:hobby-dev

추가 기능 Hobby Dev 플랜은 무료이지만 신용 카드 등록이 필요합니다.
아래 페이지에서 등록 화면으로 갈 수 있습니다.
htps : // 헤로쿠. 코 m/ゔぇ리 fy

등록하지 않으면 아래와 같이 경고됩니다.
> heroku addons:create heroku-redis:hobby-dev
Creating heroku-redis:hobby-dev on sutara79-laravel... !
 !    Please verify your account to install this add-on plan (please enter a credit card) For more information, see
 !    https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify

자격증명 취득



아래의 명령으로 얻을 수 있는 REDIS_URL 안의 패스워드, 호스트, 포트를 Laravel로 사용합니다.

PowerShell
> heroku config | Select-String REDIS

REDIS_URL:         redis://<ユーザー>:<パスワード>@<ホスト>:<ポート>

다만, 공식 문서로 경고되고 있는 대로, REDIS_URL (은)는 언제라도 변경될 가능성이 있다고 합니다.
단순히 값을 복사하는 것이 아니라, 동적으로 REDIS_URL 로부터 필요한 값을 꺼내지 않으면 안됩니다.

In order for Heroku to manage this add-on for you and respond to a variety of operational situations, the REDIS config vars may change at any time. Relying on the config var outside of your Heroku app may result in you having to re-copy the value if it changes.

Create a new instance

동적으로 자격 증명 검색



아래의 기사가 매우 참고가 되었습니다.
Heroku의 Laravel에서 Redis 사용 - Qiita

config/database.php
// ファイル冒頭に追加
if (getenv('REDIS_URL')) {
    $url = parse_url(getenv('REDIS_URL'));

    putenv('REDIS_HOST='.$url['host']);
    putenv('REDIS_PORT='.$url['port']);
    putenv('REDIS_PASSWORD='.$url['pass']);
}

PHP: parse_url - Manual
PHP: getenv - Manual
PHP: putenv - Manual

로컬에서 동작 확인



URL이 올바르게 분해되었는지 확인합니다.
미리 로컬에서도 Redis를 사용할 수 있도록 해 두십시오.
세션 저장에 Redis 사용 (로컬 환경) )

아래와 같이 환경 설정을 변경하십시오.

.env
# コメントアウトする
# REDIS_HOST=127.0.0.1
# REDIS_PASSWORD=null
# REDIS_PORT=6379

# 上の設定をHerokuのREDIS_URLの形式にあてはめる
REDIS_URL=redis://foo:[email protected]:6379

나머지는 위 기사에서 확인하는 방법과 같습니다.
미리 작성한 루트에 브라우저에서 액세스합니다. ( https://(ドメイン)/test-session )
그런 다음 Redis GUI 도구를 사용하여 세션이 저장되었는지 확인합니다.
확인이 끝나면 Heroku로 푸시하십시오.

PowerShell
> git push heroku master

Heroku에서 실제로 Redis 사용



PowerShell
# Herokuでのセッションの保存先を`redis`に変更
> heroku config:set SESSION_DRIVER=redis

동작 확인



로컬에서의 동작 확인과 같이, 우선은 https://(ドメイン)/test-session 에 브라우저로부터 액세스 합니다.
그런 다음 세션이 저장되어 있는지 확인하고 싶지만 Heroku는 GUI를 사용할 수 없으므로 명령으로 확인합니다.

아래와 같이 선택적으로 Heroku 앱 이름을 지정하면 한 번의 명령으로 Heroku Redis에 연결할 수 있습니다.
(Heroku) redis : cli

PowerShell
> heroku redis:cli -a sutara79-laravel -c sutara79-laravel

그건 그렇고, redis:cli의 도움말은 다음과 같습니다.

PowerShell
> heroku redis:cli --help
Usage: heroku redis:cli [DATABASE] [flags]

opens a redis prompt

Flags:
 -a, --app      (required) app to run command against
 -c, --confirm
 -r, --remote   git remote of app to use

접속 후는 보통으로 Redis 명령 를 사용할 수 있습니다.
우선, KEYS* 로 모든 키를 취득해, 그중에서 Laravel의 세션용으로 사용되고 있는 것을 찾아내, 그 키의 내용을 GET 로 취득합니다.
그 안에 こんにちはこんにちは!!도 포함되어 있으며 세션이 제대로 Redis에 저장되어 있음을 알 수 있습니다.
또한 절단에는 QUIT을 사용합니다.
자신의 PC에 설치한 Redis에서는 exit도 사용할 수 있었지만, 그것은 공식적으로 제공된 명령이 아닌 것 같네요.

절차를 요약합니다.

PowerShell
# Redisに接続
> heroku redis:cli -a sutara79-laravel -c sutara79-laravel
Connecting to redis-angular-23368 (REDIS_URL):


# すべてのキーを取得
> keys *
1) laravel:SeDXaIe5ffKdZhdeHpgy8wLnhjyXJTOSps5o43fJ


# キーの中身をGETで取得
# 「こんにちはこんにちは!!」が含まれていることを確認
> get laravel:SeDXaIe5ffKdZhdeHpgy8wLnhjyXJTOSps5o43fJ
s:316:"a:6:{s:6:"_token";s:40:"gz7JGwGUOFdatn2uQfxhaG1CYGoPJKiB0vTufxLW";s:6:"locale";s:2:"en";s:9:"_previous";a:1:{s:3:"url";s:50:"http://sutara79-laravel.herokuapp.com/test-session";}s:22:"PHPDEBUGBAR_STACK_DATA";a:0:{}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:3:"foo";s:32:"こんにちはこんにちは!!";}";


# 切断にはQUITを使う
> quit
OK

# (EXITは使えない)
> exit
ERR unknown command 'exit'

좋은 웹페이지 즐겨찾기