Ich habe PostgreSQL, Atlassian JIRA, Stash, Confluence und Crowd auf einem einzigen Ubuntu 12.04-Server installiert. Sie sind integriert und funktionieren gemäß der Atlassian-Dokumentation.
Eine Sache, die mir aufgefallen ist, ist, dass die Produktsuite nicht toleriert, dass abhängige Komponenten ausfallen. Wenn beispielsweise Crowd gestoppt wird, können sich Benutzer nicht mehr anmelden. Wenn PostgreSQL aus Wartungsgründen gestoppt wird, werden die abhängigen Anwendungen möglicherweise nie wiederhergestellt.
Jede Nacht durchläuft das System ein Wartungsfenster, in dem das Betriebssystem und die Software gepatcht werden können. Das externe DNS ist so konfiguriert, dass eine Wartungsseite ordnungsgemäß angezeigt wird, wenn bei den Anwendungen ein Fehler auftritt.
Von Zeit zu Zeit kann PostgreSQL gestoppt, gepatcht und dann gestartet werden. Wie konfiguriere ich meine Upstart-Skripte so, dass Abhängigkeiten berücksichtigt werden? Ich habe den "Start ein" konfiguriert, aber er hat keine Auswirkung.
Ich schreibe gerne Windows-Dienste und konfiguriere ihre Abhängigkeiten während der Installation (z. B. Windows Installer oder PowerShell).
Testfälle:
Ich habe alle Dienste eingestellt. Ich habe dann Confluence gestartet und erwartet, dass es entweder fehlschlägt (da PostgreSQL und Crowd gestoppt sind) oder automatisch versucht, PostgreSQL und Crowd zu starten. Beides ist nicht passiert.
Ich habe alle Dienste gestartet. Ich habe dann Crowd gestoppt und erwartet, dass Confluence, JIRA und Stash gestoppt werden. Es hat nur Crowd gestoppt und alle anderen Dienste wurden weiter ausgeführt, funktionierten jedoch nicht richtig.
Abhängigkeiten:
- Menge : PostgreSQL, Networking
- Zusammenfluss : PostgreSQL, Networking, Crowd
- JIRA : PostgreSQL, Networking, Crowd
- Stash : PostgreSQL, Networking, Crowd
Zusammenfluss
# confluence
description "Atlassian Confluence"
start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]
respawn
kill timeout 30
env RUN_AS_USER=confluence
env BASEDIR=/usr/local/bin/confluence
script
LOGFILE=/var/log/confluence/confluence.`date +%Y-%m-%d`.log
exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script
JIRA
description "Atlassian JIRA"
start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]
respawn
kill timeout 30
env RUN_AS_USER=jira
env BASEDIR=/usr/local/bin/jira
script
LOGFILE=/var/log/jira/jira.`date +%Y-%m-%d`.log
exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script
Verstecken
description "Atlassian Stash"
start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]
respawn
kill timeout 30
env RUN_AS_USER=stash
env BASEDIR=/usr/local/bin/stash
env STASH_HOME="/var/local/lib/stash"
script
LOGFILE=/var/log/stash/stash.`date +%Y-%m-%d`.log
exec su - $RUN_AS_USER -c "$BASEDIR/bin/start-stash.sh -fg" >> $LOGFILE 2>&1
end script
Menge
# crowd
description "Atlassian Crowd - Single Sign-On (SSO) and Identity Management"
start on (net-device-up and local-filesystems and postgresql and runlevel [2345])
stop on runlevel [!2345]
respawn
kill timeout 30
env RUN_AS_USER=crowd
env BASEDIR=/usr/local/bin/crowd/apache-tomcat
script
LOGFILE=/var/log/crowd/crowd.`date +%Y-%m-%d`.log
exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script
PostgreSQL wurde über APT installiert und startet beim Start automatisch.
Antworten:
Versuchen:
Menge
Zusammenfluss
Verstecken
JIRA
Referenz: http://upstart.ubuntu.com/cookbook/
quelle
sudo service postgresql status
undsudo service crowd status
start on (net-device-up and started postgresql)
zustart on started postgresql
Dies wird ein wenig schwierig, da postgresql kein nativer Emporkömmling ist. Sie müssen Folgendes tun:
initctl emit -n started JOB=postgresql
am Ende des Startabschnitts von /etc/init.d/postgresql hinzuinitctl emit stopping JOB=postgresql
zum ANFANG des Stoppabschnitts von /etc/init.d/postgresql hinzuÄndern Sie die Menge zu:
Das sollte es sein. Wenn Sie Hilfe für die Schritte 1 und 2 benötigen, fragen Sie einfach.
quelle
if [ "$1" = start -o "$1" = restart ]; then ...; fi
bzw.if [ "$1" = stop -o "$1" = restart ]; then ...; fi
blockiert werden. Genau genommen sollte Ersteres auch dieEXIT
Variable überprüfen .