ふぃーるどのーつ

技術系ブログ「ふぃーるどのーつ」

Jiraをsystemdで起動する場合の設定サンプル

Atlassian Jira(以下Jira)をはじめとするアトラシアン製品は、インストーラーが作成する自動起動スクリプトinit.d ベースであり、systemdで起動する場合は自分でユニット定義を作成する必要があります。

ユニットを定義する /etc/systemd/system/jira.service ならびに /etc/systemd/system/jira.env の例は、以下の通りとなります。

jiraをsystemdで起動するときのユニット設定のサンプル

(2018/9/20追記) 当初ユニット定義を

[Unit]
Description=The JIRA Server
After=syslog.target
After=network.target

としていましたが、Amazon EC2上で起動した時に、cloud-initによる初期化処理の前にデーモンが起動する不具合があったため、修正しました。

(追記ここまで)

ユニット定義内の記述については、以下の通りとなります。

  • Jiraのインストールディレクトリーは、 /opt/atlassian/jira/current であるものとして、記述しています。
  • JAVA_HOME などの起動時に指定が必要な環境変数を、jira.env で指定します。Bitbcuket等では起動シーケンスの関係でJVMのヒープ設定等をここに書く場合があるため、外だしして記述するようにしています。
  • PIDFile の指定で、systemdがJiraのjavaプロセスを把握できるようにします。
  • User ならびに Group はJiraの起動ユーザー/グループの指定です。
  • KillMode=none は systemctl stop でJiraのプロセスが停止しなかった場合にsystemdは処理をスキップすることの指定です。停止しなかった場合は手動でプロセスを停止する必要があります。
  • システムロケールja_JP.UTF-8 である前提です。そうでない場合は jira.env環境変数 LANG を指定します。

サービスの登録は、以下のように行います。

sudo systemctl daemon-reload
sudo systemctl enable jira
sudo systemctl start jira

sudo systemctl status jira を実行したときに以下のように、Active: active (running) と記述されれば、サービスの組み込みは成功しています。

● jira.service - The JIRA Server
   Loaded: loaded (/etc/systemd/system/jira.service; enabled; vendor preset: disabled)
   Active: active (running) since 火 2018-02-27 12:18:59 JST; 1min 14s ago
  Process: 5163 ExecStop=/opt/atlassian/jira/current/bin/stop-jira.sh (code=exited, status=0/SUCCESS)
  Process: 5284 ExecStart=/opt/atlassian/jira/current/bin/start-jira.sh (code=exited, status=0/SUCCESS)
 Main PID: 5315 (java)
   CGroup: /system.slice/jira.service
           ¶ 5315 /usr/java/default/bin/java -Djava.util.logging.config.file=/opt/atlassian/jira/curre...

 2月 27 12:18:59 jira.local start-jira.sh[5284]: If you encounter issues starting or stopping JIRA...ide
 2月 27 12:18:59 jira.local start-jira.sh[5284]: Using JIRA_HOME:       /var/atlassian/application...ira
 2月 27 12:18:59 jira.local start-jira.sh[5284]: Server startup logs are located in /opt/atlassian...out
 2月 27 12:18:59 jira.local start-jira.sh[5284]: Using CATALINA_BASE:   /opt/atlassian/jira/current
 2月 27 12:18:59 jira.local start-jira.sh[5284]: Using CATALINA_HOME:   /opt/atlassian/jira/current
 2月 27 12:18:59 jira.local start-jira.sh[5284]: Using CATALINA_TMPDIR: /opt/atlassian/jira/current/temp
 2月 27 12:18:59 jira.local start-jira.sh[5284]: Using JRE_HOME:        /usr/java/default
 2月 27 12:18:59 jira.local start-jira.sh[5284]: Using CLASSPATH:       /opt/atlassian/jira/curren...jar
 2月 27 12:18:59 jira.local start-jira.sh[5284]: Using CATALINA_PID:    /opt/atlassian/jira/curren...pid
 2月 27 12:18:59 jira.local systemd[1]: Started The JIRA Server.
Hint: Some lines were ellipsized, use -l to show in full.

参考

Run Confluence as a systemd service on linux - Atlassian Documentation