AzureのAppServiceにPHPのRedisエクステンションをインストールする

1. App Serviceの作成

ランタイムスタックを PHP にして App Service を作成する。

create webapp
図 1. AppServiceの作成

2. Redisエクステンションのインストール

SSHコンソールを開く

ssh
図 2. SSH

インストール

# pecl install redis

Cannot load Zend OPcache - it was already loaded
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading redis-5.3.1.tgz ...
Starting to download redis-5.3.1.tgz (264,485 bytes)
......................................................done: 264,485 bytes
29 source files, building
running: phpize
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731
enable igbinary serializer support? [no] :

....

Build complete.
Don't forget to run 'make test'.

 :
 :
 :

 Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20180731/redis.so'
install ok: channel://pecl.php.net/redis-5.3.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=redis.so" to php.ini

.so ファイルを置くディレクトリを作り、ビルドされた redis.so をコピーする。

/home 配下に作成すること
# mkdir /home/site/ext
# cp /usr/local/lib/php/extensions/no-debug-non-zts-20180731/redis.so /home/site/ext/
# ls -al /home/site/ext/
total 2688
drwxrwxrwx 2 nobody nogroup       0 Jul 23 00:27 ./
drwxrwxrwx 2 nobody nogroup    4096 Jul 23 00:26 ../
-rwxrwxrwx 1 nobody nogroup 2746136 Jul 23 00:27 redis.so*

ini ファイルを置くディレクトリを作る。

こちらも /home 配下に作成すること
# mkdir /home/site/ini

extensions.ini ファイルを作成して、extension=/home/site/ext/redis.so を書き込む。

# touch /home/site/ini/extensions.ini
# echo 'extension=/home/site/ext/redis.so' >> /home/site/ini/extensions.ini

3. AppServiceの設定

[構成]メニューのアプリケーション設定にある「新しいアプリケションを選択」を選ぶ。

app setting
図 3. アプリケーション設定
  • 名前 : PHP_INI_SCAN_DIR

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

として追加する。

setting ini scan dir
図 4. PHP_INI_SCAN_DIR設定

変更を保存する。

save setting
図 5. 保存

App Service が再起動して反映される。

# php -i |grep redis
Cannot load Zend OPcache - it was already loaded
redis
redis.arrays.algorithm => no value => no value
redis.arrays.auth => no value => no value
redis.arrays.autorehash => 0 => 0
redis.arrays.connecttimeout => 0 => 0
redis.arrays.consistent => 0 => 0
redis.arrays.distributor => no value => no value
redis.arrays.functions => no value => no value
 :
 :
 :