93 votes

Comment maintenir le serveur redis en fonctionnement

J'utilise redis pour le support de session dans une application nodejs. J'ai installé le serveur redis et il fonctionne lorsque je lance redis-server, mais lorsque je ferme le terminal, redis s'arrête et ne fonctionne pas. Comment faire pour que le serveur redis continue à fonctionner après la fermeture du terminal ?

219voto

lakesare Points 6279

Et, si vous voulez une option rapide, courez : redis-server --daemonize yes .

76voto

Didier Spezia Points 23333

La manière la plus simple de lancer Redis en tant que démon est d'éditer le fichier de configuration et de changer la ligne suivante :

# 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

Veillez à fournir le fichier de configuration sur la ligne de commande de redis-server lorsque vous le lancez.

Un exemple de fichier de configuration est fourni dans la distribution de Redis.

36voto

trex Points 3103

Comme mentionné par @DidierSpezia dans sa réponse,

Définir daemonize yes dans le fichier conf de Redis. Définir daemonize yes dans le fichier conf de Redis à /path/to/redis.conf Généralement il devrait être présent à /etc/ .

Et :

Puis déclenchez redis-server avec le fichier conf comme argument :

./redis-server /etc/redis.conf

UPDATE Vous pouvez lancer directement le redis avec demonize drapeau également

redis-server --daemonize yes

5voto

La réponse acceptée est pour la plupart dépassées . Alors que la question est vieux Google le classe toujours très bien, alors permettez-moi de corriger cela.

L'OP n'a pas fourni de détails sur sa configuration, mais vous pouvez supposer qu'il s'agit d'un linux, et il ne mentionne pas les conteneurs, donc vous pouvez également supposer qu'il exécute redis sans eux.

Il y a trois détails qui font la réponse acceptée, une chose à oublier

  • La plupart des distributions (populaires) sont fournies avec systemd par défaut.
  • La plupart des distributions (populaires) ont redis dans leurs dépôts officiels.
  • que le paquet officiel de redis installe le service systemd pour redis

Alors

  • Il aura supervised systemd dans sa configuration par défaut
  • Pour démarrer : le démon redis avec sudo systemctl start redis@instanceName où vous substituez "instanceName". Aussi sudo systemctl enable redis@instanceName pour le démarrage automatique au démarrage. (BTW, oubliez service start et init scripts déjà ! Ils sont moins portables aujourd'hui que d'appeler directement systemctl ).
  • faire PAS réglé sur daemonize: yes cela va interférer avec la supervision de redis par systemd !

Systemd supervisera, redémarrera votre redis, et vous pouvez définir des dépendances de service et des conditions préalables de service pour lui, même pour un exécutable personnalisé, ce n'est pas si difficile, recherchez les fichiers unitaires de systemd (vous aurez besoin d'un fichier de configuration de ~10 lignes). Il y a de fortes chances que vous le vouliez.

Si les trois détails (faisant de systemd la bonne réponse) ne sont pas rencontrés/pertinents, vous exécutez très probablement redis en conteneur. Pour docker/podman/etc., c'est une toute autre question... (pas de systemd dans le linux interne, mais vous auriez à (ou faites déjà) superviser le démon-conteneur lui-même)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X