Nextcloud の警告「メモリキャッシュが設定されていません。」
「メモリキャッシュが設定されていません。」の警告(memcache)
Nextcloud で「概要」→「セキュリティ&セットアップ警告」を確認すると、警告メッセージが表示されてました。
メモリキャッシュが有効になっていない場合や、ファイルロックが有効になっていない場合は、以下のメッセージの警告が表示されます
# メモリキャッシュが設定されていない場合 メモリキャッシュが設定されていません。可能であれば、パフォーマンスを向上するため、memcacheを設定してください。 より詳しい情報はドキュメントで参照できます。 # トランザクションファイルロックの設定されていない場合 データベースがトランザクションファイルロックに使われています。パフォーマンスをあげるには、可能であればメモリーのキャッシュを設定してください。 詳細については、ドキュメント↗を参照してください。
memcache 等が設定されていない警告なので「memcache」をインストールして設定していきます
memcacheのインストール
memcached をdnf でインストールします。RHEL9系だと「libmemcached」が無いので「libmemcached-awesome」をインストールします
# memcached をインストール $ sudo dnf install memcached libmemcached # RHEL9系だと「libmemcached」が無いので「libmemcached-awesome」をインストールします $ sudo dnf install memcached libmemcached-awesome
コードやオブジェクトをキャッシュできる「OPcache」、「APCu」もインストールします。
- OPCache(Opcode Cache)は、PHPのソースをリクエストごとに読みに行かず、コンパイルしたものをメモリから読み込んで実行するキャッシュ機能です。
- APCu(Alternative PHP Cache)は、変数の結果をメモリ上にキャッシュする機能で、主にデータのキャッシュに焦点を当てており、特にデータベースクエリの結果や計算結果など、頻繁にアクセスされるデータのキャッシュに利用されます。
# OPcacheとAPCu をインストール $ sudo dnf install php-opcache php-pecl-apcu # OPcacheがインストールされているか確認します $ php -v PHP 8.0.10 (cli) (built: Aug 24 2021 15:40:40) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.10, Copyright (c) Zend Technologies with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies
memcacheの設定
memcacheの設定は、nextcloudがあるディレクトリ内の設定ファイル(config.php)で memcacheを有効にします
$ sudo vim /var/www/html/nextcloud/config/config.php 'memcache.local' => '\OC\Memcache\APCu', 'memcache.distributed' => '\OC\Memcache\Memcached', 'memcache.locking' => '\OC\Memcache\Memcached',
opcacheの設定は、「/etc/php.d/10-opcache.ini」でおこなうので、下記のように設定します
$ sudo vim /etc/php.d/10-opcache.ini opcache.enable=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
APCuの設定は、「/etc/php.d/40-apcu.ini」でおこなうので、下記のように設定します
$ sudo vim /etc/php.d/40-apcu.ini [apcu] apc.enabled=1 apc.shm_size=32M apc.ttl=7200 apc.enable_cli=1 apc.serializer=php # apcuが有効になっているか確認します、「APCu Support」が「Enabled」になっていると確認します $ php -i | grep -i apcu /etc/php.d/40-apcu.ini apcu APCu Support => Enabled APCu Debugging => Disabled
設定を変更したら、Apache, php-fpm の再起動して設定を読み直します
$ sudo systemctl restart php-fpm $ sudo systemctl restart httpd
APCu の設定をおこなっていないと下記のように、「occ」を実行するとエラーになります。
下記のエラーの場合は、APCu は有効になっていないので、「/etc/php.d/40-apcu.ini」の設定を変更してAPCu を有効にします
# sudo -u apache php /var/www/html/nextcloud/occ An unhandled exception has been thrown: OCP\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)
ディスカッション
コメント一覧
まだ、コメントがありません