Я установил PostgreSQL, Atlassian JIRA, Stash, Confluence и Crowd на одном сервере Ubuntu 12.04. Они интегрированы и работают в соответствии с документацией Atlassian.
Одна вещь, которую я заметил, это то, что набор продуктов не терпит зависания зависимых компонентов. Например, если Crowd остановлен, пользователи больше не смогут войти в систему. Если PostgreSQL остановлен по причинам обслуживания, зависимые приложения могут никогда не восстановиться.
Каждую ночь система проходит через окно обслуживания, в течение которого операционная система и программное обеспечение могут быть исправлены. Внешний DNS настроен на корректное отображение страницы обслуживания в случае ошибки в приложениях.
Время от времени PostgreSQL может быть остановлен, исправлен и затем запущен. Как мне настроить мои сценарии Upstart для учета зависимостей? Я настроил «Пуск вкл», но это не имеет никакого эффекта.
Мне удобно писать службы Windows и настраивать их зависимости во время установки (например, установщик Windows или PowerShell).
Тестовые случаи:
Я остановил все службы. Затем я запустил Confluence, ожидая, что он либо потерпит неудачу (поскольку PostgreSQL и Crowd остановлены), либо автоматически попытается запустить PostgreSQL и Crowd. Ни того, ни другого не произошло.
Я запустил все службы. Затем я остановил Crowd, ожидая, что Confluence, JIRA и Stash будут остановлены. Это только остановило Crowd, а все остальные службы продолжали работать, но не работали правильно.
Зависимости:
Confluence ]
# 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
Тайник
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
Толпа
# 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 был установлен через APT и запускается автоматически при запуске.
Попытка:
Толпа
start on (net-device-up and started postgresql)
stop on stopping postgresql
Слияние
start on started crowd
stop on stopping crowd
Притон
start on started crowd
stop on stopping crowd
Ссылка JIRA
start on started crowd
stop on stopping crowd
: http://upstart.ubuntu.com/cookbook/
Это будет немногим трудно, потому что postgresql не является собственным новомодным заданием. Необходимо сделать следующее:
initctl emit -n started JOB=postgresql
в конце части запуска/etc/init.d/postgresqlinitctl emit stopping JOB=postgresql
к НАЧАЛУ части остановки толпы Изменения/etc/init.d/postgresqlк:
start on started postgresql
stop on stopping postgresql
, Который должен быть им. Если Вы нуждаетесь в помощи для шагов 1 и 2, просто спрашиваете.