2007/08/28

★GanttProjectをWebDAVで共有

みなさん、いかがお過ごしでしょうか?

さて、会社の方もおかげさまで仕事が増えてきて、うれしい悲鳴ではありますが、プロジェクトの管理の負担が大きくなりつつあるようです。

そこで、プロジェクト管理にGanttProjectという、オープンソースのプロジェクト管理システムを利用し、Webサーバにアップして複数人で共有しようじゃないかという提案がありました。

■本格的なガントチャートでプロジェクト管理 GanttProject
http://web-tan.forum.impressrd.jp/e/2007/04/12/725

ということでインストール時のメモです。巷のGanttProject + WebDAVの記事は、端折りすぎて分かりづらいので、自分なりになるべく端折らずに書いていきたいと思います。

まず、前提となる情報ですが(この辺の認識不足で苦労しました)、GanttProjectはjavaで作られており、基本的にはスタンドアロンのアプリケーションです。断じてサーブレットなどではありません。javaで作られたプログラムはJava Web Start(以下JWS)という名の仕組みによってWebサーバからプログラム本体をダウンロードし、直接実行することができます。インストール不要ってのがその利点で、.NETのClick Once(懐かしいw)と同じ概念です。で、巷ではJWSを利用すれば、GanttProjectはWeb上のサービスとして展開できますよと謳われている訳です。

今回の作業の概要は、CentOS4の社内Webサーバ(外部にも公開されてます)にGanttProjectを配置し、JWSによって各クライアント(WindowsXP)への配布の手間を解消し、さらにデータをWebDAV対応のWebサーバに保存可能にすることです。それによって情報を共有するというのが今回の目的です。

まずは、WebサーバへのGanttProjectの配置ですが、当初GanttProjectをサーブレットだと思いっきり勘違いしていたため、Webサーバ(CentOS4)にJREなどを無駄にインストールしてしまいました。

基本的には、GanttProjectのプログラムをそのままWebサーバの公開ディレクトリにアップするだけで良いです。 で、どこからGanttProjectのプログラムファイルを持って来るかですが、オフィシャル(http://ganttproject.biz/)では、クライアントPCにインストールして利用するためのパッケージのみ配布されており、JWS用のパッケージは用意されておらず、デモのページでJWS版のDEMOが試用できるようになっているのみです。

他にJWS版のソースがないか方々探しつくしたのですが、見つけられず。JWSの概念から推測するに Windows版をそのままサーバにアップすれば行けるんじゃないか?と思いやってみましたが、いきなり例外が発生したりと全く動かず。(今考えると、jarに署名したり設定次第でこのやり方でも行けると思います。)

途方に暮れていたところ、ふと「JWSがWebサーバ上のjarファイルを実行するしくみなら、httpでjarファイルを手動でダウンロードできるはず!」 閃きまして、オフィシャルのJWSデモから直接必要なファイルをダウンロードしてみました。必要なファイルは以下の通りです。

http://ganttproject.biz/jws20/ganttproject.jnlp
http://ganttproject.biz/jws20/ganttproject.gif
http://ganttproject.biz/jws20/configuration.jar
http://ganttproject.biz/jws20/eclipsito.jar
http://ganttproject.biz/jws20/net.sourceforge.ganttproject_2.0.0.jar
http://ganttproject.biz/jws20/org.ganttproject.chart.pert_2.0.0.jar

予想どおり普通にダウンロードできました。で、ganttproject.jnlpのjnlpタグのcodebase属性と2番目のargumentタグ(GanttProjectでデフォルトで開くプロジェクトファイルの指定)を環境に合わせて書き換え、.htaccessに「AddType application/x-java-jnlp-file jnlp」を追加し、ブラウザからjnlpファイルを開くとJWSでGanttProjectを実行することに成功しました!長かった・・・。

がしかし、これで終わりではなくまだWebDAVの設定が終わっていません。このままでは、プロジェクトファイルの共有ができません。

ということで、Apache2にWebDAVのモジュールをインストールします。Apache2用のWebDAVモジュール名はmod_davです。ただ、これだけではWebDAVは動きません。なぜかというと、mod_davはクライアントからの要求の窓口を提供するのみで、クライアントからのファイルのアップロードをサーバのファイルシステムに保存するか、はたまたDBへ保存するかなどの保存処理は別のモジュールの仕事になります。今回は普通にファイルシステムに保存できればよいのでmod_dav_fsを使いました。以下それぞれのインストール方法です。

# cd /Apache2のソースディレクトリ/modules/dav/main
# /usr/local/apache2/bin/apxs -c mod_dav.c liveprop.c props.c providers.c std_liveprop.c util.c util_lock.c
# /usr/local/apache2/bin/apxs -i -a -n dav mod_dav.la

# cd /Apache2のソースディレクトリ/modules/dav/fs
# /usr/local/apache2/bin/apxs -c mod_dav_fs.c dbm.c lock.c repos.c
# /usr/local/apache2/bin/apxs -i -a -n dav_fs mod_dav_fs.la

次に/usr/local/apache2/conf/httpd.confに以下の記述を追加しました。(ここでは敢えて<>を全角で表記してるので注意)

DavLockDB /var/lock/dav/lock
<directory>
Dav on
</directory>

次に、/var/lock/dav/lockと/usr/local/apache2/htdocs/GanttProjectを格納しているディレクトリにApache実行ユーザが書き込み可能な権限を与えました。

実際、こんなにスムーズには進みませんでしたが、とりあえずWebDAVの設定ができました。で、Apacheを再起動し、GanttProjectをJWSで起動し、プロジェクトファイルをサーバ上に保存できることを確認しました。

ただ、社内サーバは外部にも公開してるので、このままではアドレスがバレれば、誰でも書き込み放題になってしまうので、とりあえずBASIC認証を設定してみることに。WebDAVはHTTPを拡張した規格なので、ふつうのBASIC認証の設定でWebDAVにも反映されるハズです。で、.htaccessに以下を追加しました。

AuthType Basic
AuthName "GanttProject Dir"
AuthUserFile /usr/local/apache2/htdocs/省略/.htpasswd
require valid-user

でまぁ、WebDAV的にはこれで認証を要求されるようになったわけですが、今度はGanttProjectをJWSで起動したときにデフォルトで設定してるプロジェクトファイルのオープンに失敗するようになりました。どうも、GanttProjectの中で認証に蹴られてる感じです。ダイアログぐらい出して欲しいものです。LLで作られてれば自力で改造するところですが、javaは下手すると例外地獄に陥りそうだったので改造はしないことに。というかjavaの開発環境は会社にはないし。なんとか設定のみで切り抜けられないか考えてたら、閃きました。jnlpファイルのデフォルトで開くプロジェクトファイルのアドレスを指定してる部分を、ユーザIDとパスを含む形に書き換えたら良いんじゃないかと。で、以下のように書き換えてみました。(ここでは敢えて<>を全角で表記してるので注意)

<argument>http://www.example.jp/ganttproject/hoge.gan</argument>
               ↓
<argument>http://userid:password@www.example.jp/ganttproject/hoge.gan</argument>

これで、GanttProjectをJWSで起動し、BASIC認証をしつつ、WebDAVによってWebサーバ上にプロジェクトファイルを保存することに成功しました!

長かった・・・

しかし楽しかったです。

Comments on "GanttProjectをWebDAVで共有"

 

Blogger 益本 said ... (2007年8月28日 18:45) : 

HTMLを直接編集して投稿したのですが、実体参照がきちんと記号に変換されたり、そのまま出てきたりしますね。

とりあえず、<>とかは全角で書きましたが、なんかすっきりしないです。

 

Blogger 田波-tanami- said ... (2007年8月28日 21:55) : 

使うのがこれからとても楽しみです。
ありがとうございます!!
ガントチャートは見てすぐに状態が把握できるので、便利ですね♪これなら途中修正も簡単に入れられるそうですし!!

Bloggerはあんまり融通は利かないようですね。HTML編集でないほうで書いても、うまくタグが適用されていなかったりします。クライアントが使いにくいのでは。。。とちょっぴり心配です。

提案した石橋さん、インストールしてくださった益本さん、ありがとうございます(*´(エ)`*)

 

Blogger 田波-tanami- said ... (2007年8月28日 23:15) : 

>ところでブロッガってサーバに入れても、グーグルアカウントの入力は必須なんだね…。
>そういうもの?

ブロッガはグーグルアカウントを持っていないと使えないってことでしょうね。。。
ヘルプに「Blogger アカウントを持っていないメンバーは、アカウントを作成する必要があります。」と書いてあります。
今、ためしに自分のほかのアドレスに招待状を出したら「投稿者としてこのブログに参加するには、 Google アカウントを使ってログインし、招待を承認してください。」という画面が出ました。

 

Blogger Tm said ... (2007年8月29日 8:34) : 

田波先生!ちょっとお願いが…
(;A; = ;A;)オロオロ
管理者権限で削除とかできない?
匿名でよかったのにー

 

Blogger 田波-tanami- said ... (2007年8月29日 11:10) : 

さっきから削除しているのに、名まえのとこだけが残ってしまう!!
ちょっと時間が経たないとだめなのかも。しばらく待ってみて確認もう一度するね。

 

post a comment