Wurde der Server meines Hardwareempfehlers neu gestartet, blieb bisher die Webseite offline, denn der unter screen laufende Serverdienst wurde nicht automatisch neugestartet. Um das zu ändern steht in meiner crontab nun folgendes:
@reboot /home/onli/screenstart_pckombo.sh
Mit dem mir bis dahin unbekannten @reboot
werden Befehle nach einem Neustart ausgeführt.
screenstart_pckombo.sh startet also den Ruby-Server. Es darf den Server aber nicht direkt starten, sondern soll ihn als screen-session ausführen. Deshalb sieht das Skript so aus:
#!/bin/sh
screen -S "pckombo" -d -m
sleep 2
screen -r "pckombo" -X stuff '/usr/bin/env bash
'
screen -r "pckombo" -X stuff 'source /home/onli/.rvm/environments/ruby-2.1.4
'
screen -r "pckombo" -X stuff 'cd /home/onli/www.pc-kombo.de
rackup -E production
'
Zuerst wird die screen-session gestartet und kurz gewartet. Der nächste Befehl startet Bash, der darauf folgende lädt die RVM-Umgebung der genutzten Ruby-Version. Schließlich wird der Server gestartet. Das letzte ' steht bewusst jeweils in der Folgezeile, so wird sicher der Befehl unter screen auch ausgeführt.
Damit das funktioniert und statt der vorinstallierten Ruby-Version die von RVM genutzt wird, musste noch folgendes in die ~/.screenrc eingetragen werden(via):
shell -${SHELL}