nodejsアプリのセッションサポートにredisを使用しています。redisサーバーをインストールしましたが、redis-serverを実行すると動作しますが、ターミナルを閉じるとredisが停止して動作しません。ターミナルを閉じた後、redisサーバーを実行し続けるにはどうすればよいですか?
4 に答える
また、簡単なオプションが必要な場合は、次のコマンドを実行しますredis-server --daemonize yes
。
デーモンとしてRedisを起動する最も簡単な方法は、構成ファイルを編集して次の行を変更することです。
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
構成ファイルを起動するときは、必ずredis-serverコマンドラインで提供してください。
構成ファイルの例は、Redisディストリビューションで提供されています。
@DidierSpeziaが彼の答えで述べたように、
daemonize yes
Redisconfファイルに設定します。daemonize yes
でRedisconfファイルに設定します。/path/to/redis.conf
通常はにあり/etc/
ます。
と :
次に、confファイルを引数としてredis-serverをトリガーします。
./redis-server /etc/redis.conf
更新demonize
フラグを使用
してredisを直接実行することもできます
redis-server --daemonize yes
受け入れられた答えはほとんど時代遅れです。質問は古いですが、Googleはまだこれを高くランク付けしているので、これを修正させてください。
OPは彼のセットアップについて詳細を提供しませんでしたが、それはLinuxであると想定でき、コンテナーについても言及していないため、コンテナーなしでredisを実行していると想定することもできます。
受け入れられた答えを忘れるものにする3つの詳細があります
- ほとんどの(人気のある)ディストリビューションには、デフォルトでsystemdが付属しています
- ほとんどの(人気のある)ディストリビューションの公式リポジトリにredisがあります
- その公式のredisパッケージはredisのsystemdサービスをインストールします
それで
supervised systemd
デフォルトの設定になりますsudo systemctl start redis@instanceName
開始するには: 「instanceName」を置き換えるredisデーモン。sudo systemctl enable redis@instanceName
起動時の自動起動にも使用できます。service start
(ところで、スクリプトを忘れて、すでに初期化してください!これらは、直接呼び出すよりも移植性が低くなっていますsystemctl
)。- に設定しないでください。これにより、systemdの監視redis
daemonize: yes
が妨害されます。
Systemdがredisを監視して再起動し、サービスの依存関係とサービスの前提条件を設定できます。カスタム実行可能ファイルの場合でも、systemdユニットファイルを検索します(最大10行の構成ファイルが必要です)。 。たぶん、あなたはそれが欲しいでしょう。
3つの詳細(systemdを正解にする)が満たされていない/関連性がない場合は、redisコンテナ化を実行している可能性があります。docker / podman / etc。の場合、それはまったく別の質問です...(内部Linuxにはsystemdはありませんが、コンテナーデーモン自体を監視する必要があります(またはすでに実行している必要があります))