サーバ

JIRA 4.3.4 のインストール/アップデート(バージョン 4.3 から)

JIRA はAtlassian社のJava ベースのバグトラッキングシステムで、JBossApacheCodehausでも使われています。
とっつきやすさと高機能をうまく両立しており、また見た目が洗練されている素晴らしい製品です。
オープンソースプロジェクトへは無償ライセンスを提供してくれるので私のプロジェクトでも使っています

今回は4.3から4.3.4へのアップグレードをしました、新規インストールの手順もほとんど同じです。

1. 現行 JIRA のバックアップ、新規インスタンスでインポート
既存 JIRA インスタンスより、
ADMINISTRATION > Import & Export > Backup Data to XML
File name: jirabackup110626.xml > "Backup"

バージョン4.2以前はファイル名としてフルパスを指定する必要がありましたが JIRA 4.2.2 からは : $jirahome/export ディレクトリへ書き出されるためファイル名だけを指定すれば良いようになりました。

無事成功すると Data exported to: /Users/yusukey/jirahome/export/jirabackup110626.xml
と表示されます。
ここで現行インススタンスはシャットダウンします。

2. Atlassian より最新版をダウンロード
http://www.atlassian.com/software/jira/JIRADownloadCenter.jspaより atlassian-jira-4.3.4.tar.gz をダウンロードしました。以前は atlassian-jira-enterprise-4.X.X-standalone.tar.gz という名前でしたがちょっとファイル名の命名規則が変わった模様。

3. MySQL への接続設定
既存データベースに接続させることもできるけれども、最適なスキーマを作るには新規にデータベースを用意した方が良いとのことです。データ自体は先の手順でXMLにエクスポートしているのでデータベースの作成のみでマイグレーションはMySQLのレベルで行う必要はありません。

$ ./mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17958
Server version: 5.1.48 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database jira434 character set utf8;
Query OK, 1 row affected (0.11 sec)

mysql> Bye

conf/server.xml 内に以下の様に記述し、コネクションプールを設定&コンテクストパスを"/jira"に設定。

<Context path="/jira" docBase="${catalina.home}/atlassian-jira" reloadable="false">
<!--Resource name="jdbc/JIRADS" auth="Container" type="javax.sql.DataSource"

driverClassName="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:${catalina.home}/database/jiradb"
username="sa"
password=""

minEvictableIdleTimeMillis="4000"
timeBetweenEvictionRunsMillis="5000"
maxActive="20"
/-->
<Resource name="jdbc/JIRADS" auth="Container" type="javax.sql.DataSource"
username="yusukey"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jira433?useUnicode=true&amp;characterEncoding=UTF8"
validationQuery="SELECT 1"
minEvictableIdleTimeMillis="4000"
timeBetweenEvictionRunsMillis="5000"
maxActive="20" />

validationQueryというのを設定するのがミソです。最近のバージョンではこれを設定していないとJIRAの画面で警告がでます。

4. JIRA のデータソース設定
atlassian-jira/WEB-INF/classes/entityengine.xml を修正
接続 DB を hsql から mysql に、schema-name を削除。

99:    <datasource name="defaultDS" field-type-name="hsql"
100: schema-name="PUBLIC"

99: <datasource name="defaultDS" field-type-name="mysql"
100: <!--削除-->

5. メールセッションの設定
conf/server.xml 内に以下の様に追記してメールセッションを有効にします。

<Context path="/jira" docBase="${catalina.home}/atlassian-jira" reloadable="false">
<Resource name="mail/jiraMail"
auth="Container"
type="javax.mail.Session"
mail.transport.protocol="smtp"
mail.smtp.host="smtp.gmail.com"
mail.smtp.port="465"
mail.smtp.auth="true"
mail.smtp.user="jira@yusuke.homeip.net"
password="****"
mail.smtp.starttls.enable="true"
mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"
/>

また、atlassian-jira/WEB-INF/lib/ 以下の activation-1.1.1.jar と mail-1.4.1.jar を lib/ 直下に移動します。

jira4.3$ mv ./atlassian-jira/WEB-INF/lib/activation-1.1.1.jar lib/
jira4.3$ mv ./atlassian-jira/WEB-INF/lib/mail-1.4.1.jar lib/

これは Tomcat レベルでメールセッションを設定する場合、クラスパスの階層の兼ね合いから JIRAの WEB-INF/lib 以下に JavaMail 関連のライブラリがあるとメール送信時に NoClassDefFoundError が発生してしまうからです。
JIRA の管理画面で smtp サーバを設定する場合はこの手順は不要です。
しかし、JIRA の管理画面からは Gmail 等 SSL しか受け付けない SMTP サーバを設定する場合必要になります。
参考:
Using Gmail as a JIRA Mail Server
Configuring JIRA to Send SMTP Mail

6. jira.home の設定
atlassian-jira/WEB-INF/classes/jira-application.properties の jira.home に任意のディレクトリを絶対パスで指定します。

jira.home=/Users/yusukey/jirahome

7. 起動パラメータの調整
ヒープサイズ、Permanent領域サイズを bin/setenv.sh では以下のように設定しました。今までヒープサイズは170mに指定していたけれどもデータのインポート時にOutOfMemoryErrorが発生したので270mとしてみました。
JVM_MINIMUM_MEMORY="270m"
JVM_MAXIMUM_MEMORY="270m"
JIRA_MAX_PERM_SIZE=160m

8. AJPポートの設定
ウチのサーバではApacheをフロントに立ててAJPで接続しているのでAJPコネクタをセットアップします。またほかのサービスとポートがかぶらないようシャットダウンポートを9005に、HTTPコネクタを無効にしています。


<Server port="9005" shutdown="SHUTDOWN">
.
.
.
<!--
<Connector port="8080"
.
.
.

</Engine>
<Connector port="9009"
maxHttpHeaderSize="8192" maxThreads="20" minSpareThreads="20" maxSpareThreads="20" useBodyEncodingForURI="true"
protocol="AJP/1.3" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="600000" disableUploadTimeout="true" />
</Service>
</Server>

8. JIRA の起動
startup.sh とかから起動。

9. データのインポート
JIRA にアクセスし、インポート。
Import Existing Data
File name: /Users/yusukey/jirahome/export/jirabackup110626.xml
エクスポート時はディレクトリが固定されていて入力できないのにインポート時はフルパスで入力する必要がありました。ちょっと不親切です。

10. アップグレード完了!
以上でバージョンアップが完了。

gitプラグインもいれたいところですが、まだ4.3には対応していないみたいです。
JIRA Git Plugin – JIRA – Atlassian Plugin Exchange

関連記事:
JIRA 4.3 のインストール/アップデート(バージョン 4.2.2 から) – 侍ズム
JIRA 4.2.2 のインストール/アップデート(バージョン 4.2.0 から) – 侍ズム
JIRA Git Plugin のインストール – 侍ズム
JIRA 4.2 のインストール/アップグレード(バージョン 4.1 から) – 侍ズム
JIRA 4.1 のインストール/アップグレード(バージョン 4.0.2 から) – 侍ズム
JIRA 4.0.0 から JIRA 4.0.2 へのアップグレード – 侍ズム
アトラシアン(Atlassian)製品の価格と購入方法
Atlassian が JIRA4 をリリース – 指名ユーザライセンス制を導入 – 侍ズム
JIRA 3.13.1 へ FishEye プラグイン 2.3 をインストール
JIRA をバージョン 3.13.1 へアップデート – 侍ズム
FishEye 1.6.3 のインストール
JIRA をバージョン 3.12.3 へアップデート