PostgreSQL、Atlassian JIRA、Stash、Confluence、Crowdを単一のUbuntu 12.04サーバーにインストールしました。これらは統合されており、アトラシアンのドキュメントに従って機能しています。
私が気づいたことの1つは、製品スイートが依存コンポーネントのダウンを許容しないことです。たとえば、Crowdが停止すると、ユーザーはログインできなくなります。メンテナンス上の理由でPostgreSQLが停止している場合、依存アプリケーションは回復できません。
毎晩、システムはメンテナンスウィンドウを通過し、その間にオペレーティングシステムとソフトウェアにパッチが適用される場合があります。外部DNSは、アプリケーションでエラーが発生した場合にメンテナンスページを適切に表示するように構成されています。
時々、PostgreSQLを停止し、パッチを適用してから起動する場合があります。依存関係を考慮するためにUpstartスクリプトを構成するにはどうすればよいですか? 「開始」を設定しましたが、効果はありません。
インストール中にWindowsサービスを記述し、それらの依存関係を構成することに抵抗はありません(WindowsインストーラーやPowerShellなど)。
テストケース:
すべてのサービスを停止しました。その後、Confluenceを起動し、失敗する(PostgreSQLとCrowdが停止するため)か、自動的にPostgreSQLとCrowdの起動を試みると予想しました。どちらも起こりませんでした。
すべてのサービスを開始しました。その後、Confluence、JIRA、およびStashが停止することを期待して、Crowdを停止しました。 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
Confluence
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はネイティブのupstartジョブではないため、これは少し難しくなります。以下を行う必要があります。
initctl emit -n started JOB=postgresql
行を追加しますinitctl emit stopping JOB=postgresql
行を追加します群衆を変更:
start on started postgresql
stop on stopping postgresql
それであるはずです。手順1と2についてサポートが必要な場合は、お問い合わせください。