Gemstone - Linux-Service Support

<< Click to Display Table of Contents >>

Navigation:  Gemstone/S - Datenbank >

Gemstone - Linux-Service Support

Start-/Stopskripte

Zum Starten und Stoppen einer PAS Anwendung als Service muß man aus dem Checkout des GsDevKit_stones im Unterverzeichnis "pas-app-templates" die Skripte "pas_start_stone_app.sh" und "pas_stop_stone_app.sh" kopieren und anpassen und in das unix-scripts Verzeichnis der Anwendung kopieren.

pas_start_stone_app.sh

Dieses Skript startet die gesamte Anwendung. Die notwendigen Informationen werden aus der Datei "credentials.sh" im "unix-scripts" der Anwendung entnommen. Diese muss vollständig konfiguriert sein

pas_stop_stone_app.sh

Dieses Skript stoppt die gesamte Anwendung. Die notwendigen Informationen werden aus der Datei "credentials.sh"  im "unix-scripts" der Anwendung entnommen. Diese muss vollständig konfiguriert sein

Linux System Start-/Stopskripte

Basierend auf den beiden obigen Skripten arbeiten die service-Skripte für die Anwendung unter Linux, damit die Anwendung als service gestartet - und auch entsprechend heruntergefahren werden kann.

Mit der installierten Runtime (pas/git/GsDevKit_stones) auf dem Server gibt es Templates (Unterverzeichnis "services") für ein Systemstartskript unter Linux.

Dabei gibt es zwei Versionen der Skripte

gemstone_all -  Ein Skript, wenn die zusätzlichen Dienste (PostgreSQL und RabbitMQ) auf dem gleichen Rechner gestartet werden. Dann wird die Anwendung erst gestartet, wenn PostgreSQL und RabbitMQ bereits gestartet sind.

gemstone - Ein Skript, wenn die zusätzlichen Dienste (PostgreSQL und RabbitMQ) auf einem anderen Rechner gestartet werden.

Eines dieser Skripte kopiert man nach "/etc/init.d" als "service-name" und man beachte, daß die Datei Ausführungsrechte besitzt, den korrekten Benutzername definiert und auch im richtigen Verzeichnis die beiden Skripte "pas_start_stone.sh" bzw. "pas_stop_stone_app.sh" aufruft.

Um die Skripte in die Ablaufpfade von Linux einzuführen, muß man den folgenden Befehl durchführen:

 

sudo systemctl enable <service-name>

 

Danach kann man das System starten:

 

sudo systemctl <service-name> start)

 

oder stoppen

 

sudo systemctl <service-name> stop

 

Beispiel

Im folgenden wird ein Skript gezeigt. Daraus kann man die allgemeine Funktionsweise erkennen

 

 

#!/bin/bash
### BEGIN INIT INFO
# Required-Start:    $local_fs $network $syslog $time
# Required-Stop:     $local_fs
# Provides:          gs_app_name
# Default-Start:     2
# Default-Stop:      0 6
# Description:       Shutdown or Reboot a Gemstone based application
### END INIT INFO
 
#
# Copy this script into /etc/init.d and use it as template for starting the service
#
# systemctl enable gs_app_name
#
# will enable the service. It needs a remote PopstgreSQL database and a remote RabbitMQ Server
#
 
#
# The user the application is running under ...
#
export GS_APP_USER=<name>
 
case "$1" in
   start)
         sudo -u $GS_APP_USER -- bash -i -c 'cd ${HOME}/<project-folder>/unix-scripts ; ./pas_start_stone_app.sh'
        ;;
   stop)
         sudo -u $GS_APP_USER -- bash -i -c 'cd ${HOME}/<project-folder>/unix-scripts ; ./pas_stop_stone_app.sh'
        ;;
   *)
       echo "Usage: $0 {start|stop}"
       exit 1
       ;;
esac
 
exit 0

 

 

Hinweise

Man muß folgendes berücksichtigen: Die service-Skripte starten die Anwendung als normaler Benutzer und so sollte es sein. In den Linux System Start-/Stop Skripte wird extra der Benutzer gewechselt (von root zum normalen Benutzer), damit die eigentlichen Skripte korrekt durchgeführt werden. Wenn man das nicht machen würde, dann können spätere Tasks (z.B. cronjobs) sich nicht mit der Datenbank verbinden, weil der Versuch zurückgewiesen wird, den SharedMemory zu nutzen: "access denied".