NextcloudでRedisを動作させるまでの格闘

4 min read

こんにちは、無能です。

Nextcloud21.0.1+Nginx+PHP+MariaDB+RedisをUbuntu 20.04にセットアップ

以前のNextcloud導入のときにも参考にしたこの記事の通りに行いましたが当方環境下では正しくRadisが動作しませんでした。
別に動作しなくても普通に動くのでやらなくてもいいんですが・・・。
ずっともやもやするので解決編です。
なお、nginxにてプロキシキャッシュを設定しているのでその違いってなんぞや?と思ったのでChatGPTに説明してもらいました。下記のボタン押すと見れます。

#myText { display: none; } #toggleButton:checked ~ #myText

説明を表示

Nginxのプロキシキャッシュは、ウェブサーバー(Nginx)自体に組み込まれています。
リバースプロキシとして機能し、アプリケーションサーバーへのリクエストをキャッシュし、応答を返します。

主にウェブコンテンツ(HTML、画像、CSS、JavaScriptなど)のキャッシュに使用されます。
静的なファイルの配信を高速化し、サーバーへの負荷を軽減します。

NginxのプロキシキャッシュはNginxの設定ファイルを使用して簡単に管理および制御することができます。
キャッシュの期限やサイズ、キャッシュ対象のURLなどを設定できます。

Nginxのプロキシキャッシュは単一のNginxサーバー内で動作し、スケーラビリティや高可用性のためにはNginxのクラスタリングやレプリケーションなどの手法が必要です。

ディスク上に一時的なキャッシュファイルを保存しますが、長期的なデータの永続性や耐久性を提供する機能はありません。

Redisは独立したデータベースおよびキャッシュプラットフォームです。
別のサーバー上で実行され、アプリケーションはRedisに接続してキャッシュデータを読み書きします。

汎用的なキャッシュプラットフォームであり、様々なデータのキャッシュが可能です。
キャッシュするデータの種類は、文字列、リスト、セット、ソート済みセット、ハッシュなどです。

Redisはプログラムから直接制御および管理されます。
Redisのコマンドを使用してデータのセット、取得、削除、期限の設定など、キャッシュデータを操作します。

問題点

まずそもそもRedisが動作しませんでした。
最終的に入れたパッケージ
Redis , Redis-server , Redis-tools , php-fpm

Redisを起動してみると

sudo service redis-server start

出たエラー

その1

Reading the configuration file, at line 1
>>> 'logfile "/var/log/redis/redis.log"'
Can't open the log file: No such file or directory

解決 : redis.confにて設定しているlogにアクセスができないよ!と怒られる。
logfireを指定しなくても、勝手に作ってくれるようなので""にしておきました。本当に必要であればlogと権限、パーミッション設定を行えば普通に動くかと思います。

その2

# Opening port: bind: Address already in use

解決 : もうそのポート使ってんだよ!と怒られる。
初期にredis.confで設定されているポートは6379です。なぜかDevuan(OpenRC)ではsudo service redis-server stopでもエラーが出て止まりません。ということで何が使っているのか確認の為に以下を打ち込みます。

root@hoge:~# lsof -i :6379

裏で動いているradisのプロセスがあればビンゴ。PIDを確認してキルします。

root@hoge:~# kill -9 <PID>

この後には普通に起動できるかと。

その3

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 135
>>> 'slave-serve-stale-data yes'
Bad directive or wrong number of arguments

解決 : だいたいこれ出るのはRedisのバージョンとredis.confの記述のバージョンの違いによって引き起こされる事が殆どだと気づきました。

Redisのサイトから自分のバージョンと同じものを選び全部コピペしちゃいましょう。

Redis configuration

その4

 Failed opening the RDB file dump.rdb (in server root dir /) for saving: Permission denied
6232:M 07 Jul 2023 03:56:39.182 # Background saving error

解決 : dump.rdbファイルが開けないよ〜。と言われてます。
これと同じ様なもので、古いRDBファイルが残っていると起動後に途中で落ちたりします。最初メモリの問題かと思いましたが違いました。
これが起動してから、redis.confのキャッシュ先フォルダ Dir */~を変更したときに起こりました。
キャッシュディレクトリを変更しても読み込もうとするみたいなので強制的に削除しましょう。僕は/var/lib/redis/dump.rdbにありました。

sudo rm /var/lib/redis/dump.rdb

これでRedis側の問題は片付きました。

Nextcloud側

root@hoge:~# sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess

htaccessを更新したときにするやつ。

RedisException: Connection refused in /var/www/html/nextcloud/lib/private/RedisFactory.php:137
~~~~~

解決 : とファイル名付きで以降たくさんエラー起きたら、そもそもRedisが正しく動いてない or Nextcloud側の記述が間違えておりRedisと接続ができません、というエラー。
RedisとNextcloudのphp.configをメインに疑おう。


他にもあったような気はしますがこんなもんだったと思います。

これでRedisを今後扱うことがあっても安心ですね。

ていうかメモリキャッシュを重ねがけしたら逆にスピード遅くなる?と思ってますがどうなのでしょう。ある程度まで早いともはやその間に通信しているサーバーや端末の応答速度がネックになりそうなのでは。
まだまだ未開拓なので楽しみです。

もうふらふらです。
それでは。