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 ?
Réponses
Trop de publicités?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.
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
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". Aussisudo systemctl enable redis@instanceName
pour le démarrage automatique au démarrage. (BTW, oubliezservice start
et init scripts déjà ! Ils sont moins portables aujourd'hui que d'appeler directementsystemctl
). - 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)