2011-12-15
WAR 版 JIRA のインストール方法
前回に引き続き、また JIRA の話になります。WAR 版 JIRA のインストール方法です。「WAR 版 JIRA の環境構築なら前回書いただろ!」と言われるかもしれませんが、、、前回の記事についていたブックマークに「WAR版のデプロイ方法がわからなかったので助かります。」というコメントをいただき、需要があるんだなーと思って記事を読み返していたら、すいません、若干手順を間違えていました。本当に申し訳ありません。ちょうど、Jiemamy サーバ上の JIRA のバージョンアップを行う機会があったので、その際の作業ログがてら、WAR 版 JIRA のインストール方法をご紹介します。
環境
以下で紹介する WAR 版 JIRA のインストールに使用している環境は次の通りです。
- Fedora 15 (kernel-2.6.41.4-1.fc15.x86_64)
- Oracle Java 6 Update 29
- tomcat6-6.0.32-10.fc15.noarch
- postgresql-jdbc-9.0.801-4.fc15.x86_64
- Atlassian JIRA 4.4.4
インストール手順
1. JIRA 用の $CATALINA_BASE を用意します。前回の記事でも紹介した通り、せっかくなので Tomcat は Fedora で提供されている rpm で管理していきましょう。その方がアップデートの時も楽です。
$ sudo mkdir -m 0775 /usr/share/jira \ /usr/share/jira/bin \ /etc/jira \ /var/log/jira \ /var/cache/jira \ /var/cache/jira/temp \ /var/cache/jira/work \ /opt/jira \ /opt/jira/webapps $ sudo mkdir /usr/share/java/jira $ sudo ln -s /etc/jira /usr/share/jira/conf $ sudo ln -s /usr/share/java/jira /usr/share/jira/lib $ sudo ln -s /var/log/jira /usr/share/jira/logs $ sudo ln -s /var/cache/jira/temp /usr/share/jira/temp $ sudo ln -s /opt/jira/webapps /usr/share/jira/webapps $ sudo ln -s /var/cache/jira/work /usr/share/jira/work $ sudo chown -R root:tomcat /usr/share/jira \ /etc/jira \ /var/log/jira \ /var/cache/jira \ /opt/jira $ sudo ln -s /usr/share/tomcat6/bin/tomcat-juli.jar /usr/share/jira/bin/tomcat-juli.jar $ sudo cp -p /etc/tomcat6/server.xml /etc/jira/ $ sudo ln -s /etc/tomcat6/catalina.properties /etc/jira/catalina.properties $ sudo cp -p /etc/sysconfig/tomcat6 /etc/sysconfig/jira $ sudo ln -s /etc/init.d/tomcat6 /etc/init.d/jira $ sudo chkconfig --add jira
2. WAR 版 JIRA をダウンロードして、/opt/jira/ ディレクトリ配下に展開します。
3. /opt/jira/atlassian-jira-4.4.4-war/edit-webapp/WEB-INF/classes/jira-application.properties を編集し、jira.home を適切に設定します。ここは、JIRA のデータをどこに置くかを指定しますので、用意するディレクトリのアクセス権は tomcat ユーザで書き込みできる必要があります。
4. 必要に応じて、war に含めなければならないプラグイン等を /opt/jira/atlassian-jira-4.4.4-war/edit-webapp/ ディレクトリ配下に配置したり設定を行います。
5. JIRA をビルドします。build.sh を叩けばいいだけです。
$ cd /opt/jira/atlassian-jira-4.4.4-war/ $ sudo JAVA_HOME=/usr/java/default sh build.sh
6. JIRA が接続するデータベースの JDBC ドライバを Tomcat の lib ディレクトリに入れます。ここでは、データベースに PostgreSQL を使っており、rpm 版の PostgreSQL JDBC ドライバを入れていますので、その jar ファイルに向けてシンボリックリンクを張ります。
$ sudo ln -s /usr/share/java/postgresql-jdbc.jar /usr/share/java/jira/postgresql-jdbc.jar
7. JIRA の稼働に必要な Tomcat 用のライブラリを、Tomcat の lib ディレクトリに入れます。必要なライブラリは、JIRA のドキュメントにリンクが記載されています。参照:Installing JIRA on Tomcat 6.0 - JIRA 4.4 - Atlassian Documentation - Confluence
$ cd /usr/share/java/jira $ sudo unzip jira-jars-tomcat-distribution-4.4-tomcat-6x.zip
8. JIRA のデプロイ用コンテキスト xml を書きます。JIRA をビルドしたら、/opt/jira/atlassian-jira-4.4.4-war/dist-tomcat/tomcat-6/ ディレクトリ配下に jira.xml というデフォルトのデプロイ用コンテキスト xml がありますので、これを参考に設定します。
$ sudo cp /opt/jira/atlassian-jira-4.4.4-war/dist-tomcat/tomcat-6/jira.xml /etc/jira/Catalina/localhost/ $ sudo vim /etc/jira/Catalina/localhost/jira.xml
9. Tomcat の server.xml を適切に変更します。デフォルトのままでもいいですが、コネクタのポート番号を変えたいときとか、結構設定変更する部分はあるかと思います。
$ sudo vim /etc/jira/server.xml
$ sudo vim /etc/sysconfig/jira
CATALINA_BASE と CATALINA_TMPDIR と CATALINA_PID の設定は忘れずに行いましょう。あと、JAVA_OPTS を適切に設定する必要があります。推奨値は JIRA のドキュメントにも記載されています。
CATALINA_BASE="/usr/share/jira" CATALINA_TMPDIR="/var/cache/jira/temp" CATALINA_PID="/var/run/jira.pid" JAVA_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dmail.mime.decodeparameters=true"
11. 起動します。これでインストール作業が終わりです!
$ sudo /sbin/service jira start
2011-12-07
JIRA の運用例
1年8ヶ月ぶりにブログを書くという、なんとも申し訳ない気分になりながら、今日は JIRA についてエントリを書きたいと思います。というか、ただ @yusukey に JIRA Advent Calendar 2011 で管理 Tips なのを書いてくれるはず、という無茶ぶりをされたからですがw
JIRA は Jiemamy で使われており、その管理を担当しているのもあって、数年前からお世話になっている BTS ではありますが、これがなんとも管理がややこしい!細かいことができる分、管理もそれなりにややこしいです。今回は Jiemamy JIRA で行っている管理手法について紹介したいと思います。前提として、Jiemamy JIRA は WAR 版を使っています。スタンドアロン版だと、ついてきている Tomcat のバージョンがちょっと古かったりするので、脆弱性が残っている場合があるためです。そのため、Tomcat は最新のバージョンをなるべく追えるように、JIRA は WAR 版を使っています。
環境の用意
何はともあれ、まずは環境を用意しないと何も始まりません。Jiemamy のサーバでは、OS の Tomcat パッケージを使って JIRA を動かしています。JIRA 以外にも、Confluence や Bamboo 等を動かしているので、最初は単一の Tomcat 上ですべてのアプリケーションを動かす、ということをやっていました。もちろん、こういうことをやるとサポート対象外なのでやめましょうw
なので、Tomcat のインスタンス 1つあたり、1つの Atlassian 製品を動作させるのが鉄則になってきます。普通に考えると、OS から提供される Tomcat パッケージを使おうにも、1つの Tomcat インスタンスしか上げられないので、結局こういうところから Tomcat をダウンロードして、1つずつ環境を構築して、Tomcat のセキュリティアップデートが出てくると、すべての Tomcat を一斉にアップデートして・・・ということをやると思います。
ですが、Fedora とかで提供されている Tomcat パッケージはマルチインスタンス化が可能です。簡単には会社のブログで書いていて、ここではインスタンス 1つごとのディレクトリを /usr/share/instance/ 配下に全部まとめたんですが、Jiemamy のサーバでは次のようにディレクトリを細かく分けています。これは、元々の Tomcat パッケージのデフォルトのディレクトリ構成 (/usr/share/tomcat6/ ディレクトリ) を踏襲しています。
| ディレクトリパス | 実体のパス |
|---|---|
| /usr/share/instance/bin | /usr/share/instance/bin |
| /usr/share/instance/conf | /etc/instance |
| /usr/share/instance/lib | /usr/share/java/instance |
| /usr/share/instance/logs | /var/log/instance |
| /usr/share/instance/temp | /var/cache/instance/temp |
| /usr/share/instance/webapps | /opt/instance/webapps |
| /usr/share/instance/work | /var/cache/instance/work |
それぞれのディレクトリの所有者やアクセス権は、基本的に Tomcat パッケージのデフォルトのディレクトリ構成を真似ます。なんで webapps ディレクトリが /var/lib/instance 配下じゃなくて /opt/instance 配下になっているかですが、/var/lib/instance 配下は jira.home にしているからですw
JIRA のバージョンアップ作業
JIRA を運用していると、JIRA もバージョンアップが重ねられますし、時にセキュリティ上問題があるので早急にアップデートを行う必要が出てくる場面もあるかと思います。でも、結構 JIRA のアップデートって面倒くさいですよね。war ファイルをぽん、と置くだけじゃないですし、毎回 build.sh を叩く必要があります。そして問題が発生すれば以前のバージョンに切り戻したり、と。何かと手間がかかります。だがそれがいい。
Jiemamy JIRA では、だいたい次のような手順でバージョンアップを行っています。
- 最新版の JIRA の WAR 版をダウンロードし、/opt/instance/ ディレクトリ配下に展開する。
- /opt/instance/atlassian-jira-x.x.x-war/edit-webapp/ ディレクトリ配下を適切に編集する。
- /opt/instance/atlassian-jira-x.x.x-war/build.sh を叩いて war ファイルを生成する。
- 作成した war ファイルを /opt/instance/webapps/ ディレクトリ配下に置く。
これでバージョンアップが完了です。edit-webapp に置くファイルとかをバージョン管理とかに上げておくと、楽かもしれないですね。ちなみに、Tomcat をバージョンアップすることになっても、CATALINA_HOME と CATALINA_BASE は分けてあるので、基本的に /opt/instance/webapps/ ディレクトリ配下は何も手を加える必要がありません。yum update tomcat6 を実行するだけで、すべてのインスタンスの Tomcat のバージョンアップが完了するからです。便利ですね!
上記の手順は少し間違えています。正しい JIRA のインストール手順については WAR 版 JIRA のインストール方法 - von Ewigkeitに書きました。
バックアップ関連
さて、ほとんど書くこともなくなってきたので、最後にバックアップの運用例を紹介します。
Jiemamy サーバでは、cron を使って日次でバックアップを取っています。バックアップには独自で作ったスクリプトを使っていますが、JIRA のバックアップに当たっては、だいたい次のようなことをしています。
- JIRA のデータベースをバックアップ。Jiemamy のサーバは PostgreSQL を使っているので、pg_dump を使っています。
- ${jira.home}/data/ ディレクトリを丸ごとバックアップ。
だいたいこれだけ。まぁ、これで十分かなって。というか、どういうデータをバックアップすべきかは、ちゃんとドキュメントに載っています。JIRA だけではなく、Confluence とかも載ってた気がします。ドキュメント重要。
いかがでしたでしょうか。JIRA 管理の Tips を書く、という無茶ぶりを受けつつ、結局書いたのは運用例なので、なんとも拍子抜けさせてしまっているというか、なんというかw
皆様の JIRA 運用のちょっとした参考になれば幸いです。
さて、明日の JIRA Advent Calendar は、エロ部長こと @j5ik2o がお届けします!
2010-04-06
FreeBSD で OpenGrok をインストールする。
ソースコード調査とかで使える OpenGrok を FreeBSD にインストールする方法です。Web ベースでシンボルの調査とかができるので、見た目としてはいいんじゃないかと。それでも自分は cscope 最強だと思ってますがw
OpenGrok は ports にあるので、さっくり ports から入れましょう。Apache Tomcat に依存しているので、それも一緒にインストールされます。
portmaster devel/opengrok
インストールが終わったら、OpenGrok の設定。デフォルトでは /etc/opengrok/configuration.xml に設定ファイルを用意することとなるので (なんで /usr/local/etc 配下じゃないんだろう・・・) 下記のコマンドで設定ファイルを生成します。
opengrok -v -s <ソースを配置するディレクトリ> -d <データを配置するディレクトリ> -W /etc/opengrok/configuration.xml 自分がやった例: opengrok -v -s /home/opengrok/source -d /home/opengrok/data -W /etc/opengrok/configuration.xml
あとは Tomcat を起動して http://localhost:8080/source/ とブラウザに入力したら OpenGrok が見えます。
その後のソースファイルの配置等は、ソースを配置するディレクトリにソースをばかすかつっこんで、最後に下記コマンドをぶち込めばインデックスファイルをデータを配置するディレクトリに生成してくれます。
opengrok -R /etc/opengrok/configuration.xml
以上!
2010-03-28
portmaster に移行
今まで ports の管理には portupgrade を使っていたんですが、gihyo.jp のとある記事で portmaster なんてものが存在することを知りました。
よくよく調べてみると、どうやら ruby に依存しない ports 操作コマンドだそうで。とりあえず portmaster を入れてみないことには始まらないので、まずはインストール。たぶん最後の portupgrade 実行。
portinstall ports-mgmt/portmaster
インストールされている ports リストの出力
コマンドはこんな感じ。
portmaster -L
出力例はこんな感じです。なんか細かく出てきます。
===>>> Root ports (No dependencies, not depended on) ===>>> bigreqsproto-1.0.2 ===>>> compat7x-amd64-7.2.702000.200906.1 ===>>> cscope-15.7a : ===>>> Trunk ports (No dependencies, are depended on) ===>>> arc-5.21o_1 ===>>> arj-3.10.22_3 : ===>>> Branch ports (Have dependencies, are depended on) ===>>> apache-2.2.14_5 ===>>> apr-ipv6-gdbm-db42-1.3.9.1.3.9_1 : ===>>> Leaf ports (Have dependencies, not depended on) ===>>> automake-1.10.1 ===>>> bash-4.0.35 :
たぶんですが、それぞれのカテゴリの意味はこんな感じでしょう。
- Root ports
- どの ports にも依存せず、依存されていない。
- Trunk ports
- どの ports にも依存していないが、何らかの ports に依存されている。
- Branch ports
- 何らかの ports に依存し、依存されている。
- Leaf ports
- 何らかの ports に依存しているが、どの ports にも依存されていない。
ports のインストール
コマンドはこんな感じ。パッケージ名指定したり、/usr/ports の下のディレクトリ位置を指定するだけ。
portmaster squid-3.0.24 portmaster www/squid30
ports のアップグレード
コマンドはこんな感じ。こちらもパッケージ名を指定するだけ。
portmaster squid-3.0.24
ports の削除
コマンドはこんな感じ。
portmaster -e portupgrade-2.4.6_4,2
2010-03-24
何かやったらエントリ書かなきゃね
結構前からほとんどエントリを書けてないけれど、小さくても簡単なことでも、何か技術的なことやったらエントリ書かなきゃね。自分の為の技術備忘録にもなるし、Tips 集になるかもしれないし。ちゃんと書いていこう。

