J'ai écrit un petit serveur webSocket en utilisant ruby. Je le lance depuis la ligne de commande en utilisant la commande :
ruby websocket_server.rb
Cela mettra le serveur en place et fonctionnera jusqu'à ce que je garde ma connexion ssh ouverte et en cours d'exécution (je le fais sur un serveur qui se trouve dans une batterie de serveurs distante, donc pas d'accès direct).
J'aimerais comprendre comment écrire deux scripts :l'un qui démarrera le programme ruby au démarrage et l'autre qui vérifiera (disons toutes les 30 minutes) si le programme est opérationnel.
En passant, mon objectif final est d'avoir un " bouton" sur un tableau de bord php pour relancer le processus s'il se bloque sans avoir à attendre le processus de vérification et de redémarrage (je suis déjà en mesure de vérifier l'état du processus).
Réponse acceptée :
Ubuntu 14.04 utilise upstart , vous pouvez donc écrire un petit fichier de configuration indiquant
comment vous voulez qu'upstart gère votre service, que vous
nommez par exemple "myweb". En utilisant sudo, créez un fichier appelé /etc/init/myweb.conf
(un
lien symbolique de là vers un vrai fichier ne fonctionnera pas) avec un contenu
quelque chose comme :
description "run webSocket server when network ready"
start on static-network-up
respawn
exec ruby websocket_server.rb
Vous pouvez tester cela avec
sudo start myweb
status myweb
sudo stop myweb
Le status
La commande indiquera si le processus est toujours en cours d'exécution. respawn
dit que vous
voudriez qu'il redémarre automatiquement s'il meurt. Les commandes start, stop et status ne sont que des liens vers initctl.
Voir man initctl
, man 5 init
pour le format de fichier conf et le livre de recettes upstart.