AppService on Linux上でPHPのセッション管理をAzure Cache for Redisで行う

JWT

Azure Cache for RedisでPHPのセッション管理を行う方法を紹介します。

  1. AppService上のPHPアプリでのセッション管理について
  2. AppServiceにPHPRedisをインストール
  3. PHPのセッションの設定を変更
  4. まとめ

1. AppService上のPHPアプリでのセッション管理について

AzureのAppService on Linux上のPHPアプリでセッション管理をしようとすると、

  • スケールアウト時
  • デプロイなどの再起動時

にセッションが破棄されます。

そのため、厳密にセッションを管理する場合、Redisなどの外部ストレージを使用する必要があります。

2. AppServiceにPHPRedisをインストール

AppService on Linuxでは、peclを使えるのでこれでPHPRedisをインストールしてみましょう。

上記のようにエラーが出てしまいました。

以下のURLにpeclでPHPRedisのインストール時にエラーが出た場合の対処法があったので、こちらでPHPRedisをインストールします。

https://docs.microsoft.com/en-us/answers/questions/252433/still-not-possible-to-build-redisso-under-php-74-u.html

手動でPHPRedisをインストールしていきます。

最後に、AppServiceのポータルの「構成」からアプリケーション設定に

名前:PHP_INI_SCAN_DIR

値:/usr/local/etc/php/conf.d:/home/site/ini

を追加してください。

 

3. PHPのセッションの設定を変更

PHPのセッション管理をRedisで行うように変更します。

PHPアプリのプロジェクト直下に.user.iniファイルを作成し、そこに設定を記述します。

${REDIS_AUTH}で環境変数を参照しています。

${REDIS_AUTH}に当てはまる部分は、Azure Cache for Redisのポータルの「アクセスキー」の「プライマリキー」をURLエンコードした値を環境変数に設定してください。

以上で、Azure Cache for Redisを使用したセッション管理を行えます。

4. まとめ

AppServiceでは、スケールアウト時やデプロイ時にセッションは破棄されますが、セッションの破棄を許容できるならわざわざRedisで管理する必要がないかもしれません。

厳密にセッション管理を行いたい場合はRedisで管理することをお勧めします。

参考

https://docs.microsoft.com/en-us/answers/questions/252433/still-not-possible-to-build-redisso-under-php-74-u.html



❏❏ TOPIC ❏❏ ------------------------------------------------------------

カスタム自由!フリーECサイトパッケージ
チャットボット導入サービス
WEBシステム開発・スマホアプリ開発はSRIAへ