2004/8/16

FreeBSDでJSP(Java, Web)

はじめに

FreeBSD5.2.1にネイティブなJDKをインストールし、JSPの動作を確認しました。

本エントリでは夫々必要なパッケージ毎にインストール及び設定手順を説明します。

一応動作環境としては

OS FreeBSD 5.2.1
JDK 1.4.2-05(FreeBSDネイティブ)
Apache 1.3.31-04
Tomcat 5.0.27
mod_jk 2.0.2

となります。

JDK

インストール

FreeBSDネイティブなJDKを入れるためには、先ずlinuxエミュレーションのJDKが必要です。これはJDKのビルド時にクラスファイルを構築するときに必要みたいです。

まずはportinstall linux_baseをしておきましょう。もし、linux_base8がインストールされている人は残念ですが、正しくビルドできないので、7.1ベースの「linux_base」に入れ替えてください。

本来ならば、後はportinstall jdkをするだけでよい筈なのですが、実際には必要なファイルは自分で取ってくるのが基本となります。これは、Sun Microsystemsからソースファイルを取得するときに使用許諾をとらないといけないためです。

他にもFreeBSD用のパッチについても自分で取得してくる必要があります。portinstallすると足りないファイルとその取得方法が英語ですがメッセージとして出ますのでその指定されたURLからとってくればOKです。

JDKのソースを取得するときにはユーザ登録も必要なので多少の英語力は必要でしょうが、がんばってファイルを取得してください。

以下に/usr/ports/distfilesに必要なJDK関連のファイル一覧を示します。

  • bsd-jdk14-patches-6.tar.gz
  • j2sdk-1_4_2-bin-scsl.zip
  • j2sdk-1_4_2-src-scsl.zip
  • j2sdk-1_4_2_05-linux-i586.bin

これだけ取ってくればあとはmakeが勝手にlinuxベースのJDKも含めて全部取ってきてビルドしてくれます。数時間はかかるので辛抱して待ちましょう。

動作確認

無事インストールが終わると/usr/local/jdk1.4.2配下にファイルが出来上がっているはずです。実行ファイル群は/usr/local/jdk1.4.2/binにあるので、パスを通しましょう。ついでにJDKのホーム指定も行います。

.cshrcに以下の二行を追加してください。

set path=($path /usr/local/jdk1.4.2/bin)
setenv JAVA_HOME /usr/local/jdk1.4.2

あとはログインし直すか、source .cshrcを実行すればJDKを使う環境が整いました。

それでは一応動作確認ということで、HelloWorldApp.javaというファイルを作成して、以下の内容を入力してください。

public class HelloWorldApp {
  public static void main(String[] args) {
    System.out.println("こんにちは世界");
  }
}

次にjavac HelloWorldApp.javaと打ち込んでコンパイルします。

j実行はjava HelloWorldAppです。

> java HelloWorldApp
こんにちは世界
>

うまくいきましたか?とりあえずこれでJDKのインストール確認は終了です。

TOMCAT

インストール

インストール自体はportinstall jakarta-tomcatでOKです。

サーバの起動停止はtomcat50ctlコマンドにstart|stopをつければ制御可能です。もちろん/usr/local/etc/rc.dにもapacheよりも先にサービスが起動するようにスクリプトが設定されます。

デフォルトの設定ではport:8180でHTTPリクエストを受けられるので、適当なブラウザから「http://ホスト名:8180/」にアクセスして変なネコが表示されるか確認しましょう。

設定&確認

最低限の設定をしましょう。
その設定というのは、あなたがこれから作成するjspファイルを格納する専用のディレクトリを作成して、TOMCATに認識させることです。

もちろんデフォルトで作成されるjsp-examples/等に自作ファイルを格納してもいいですけれど、それでは格好悪いですし、第一ディレクトリのアクセス権がwwwオーナで0655となっているのでファイル編集するのも面倒です。

この例では新たにユーザ用ディレクトリとして「jsp」というディレクトリを作成して、http://ホスト名:8180/jsp/???.jspでアクセス出来るように設定します。

とりあえずサービスを停止させましょう。tomcat50ctl stopです。

続いて/usr/local/jakarta-tomcat5.0/conf/server.xmlを開いて以下の太字の部分を追加します。例ではjsp/の実体は/home/hogehoge/jspとなっています。

<!-- Define the default virtual host
     Note: XML Schema validation will not work with Xerces 2.2.
 -->
<Host name="localhost" debug="0" appBase="webapps"
 unpackWARs="true" autoDeploy="true"
 xmlValidation="false" xmlNamespaceAware="false">
<Context path="/jsp" docBase="/home/hogehoge/jsp" debug="0" reloadable="true">
</Context>

挿入位置はここで本当に合っているのか分かりません。とりあえず動いたからいいかな・・・と。

もちろん/home/hogehoge/jspというディレクトリも作成してください。

終わったらtomcat50ctl startで起動です。

今は何もオリジナルなjspファイルが無いので例として一つ作ってみましょう。/home/hogehoge/jsp/hello.jspを作成し、以下のソースを打ち込んで下さい。

<%
  String str="Hello world";
%>
<html>
<head>
<title>sample</title>
</head>
<body>
<hr>
<div align="center">
<%=str%>
</div>
<hr>
</body>
</html>

あとは、ブラウザから「http://ホスト名:8180/jsp/hello.jsp」で画面にHello worldと表示されればOKです。

mod_jk

最後にapacheから任意のURL指定でtomcatに繋いでjspを実行出来るようにするために、mod_jkを入れます。あ、apacheは既にインストールされているという前提です。スミマセン。

mod_jkにはVersion 1.x系と2.x系がありますが、違いは良く分からないのでmod_jk2を入れましょう。

portinstall mod_jk2でOKです。

/usr/local/etc/apache/httpd.confにコメント入りでmod_jk2のエントリが追加されますので、コメントアウトして、更に設定ファイルの位置を指定してあげます。

以下の設定の太字部分が該当箇所です。

   :        :
LoadModule unique_id_module   libexec/apache/mod_unique_id.so
LoadModule setenvif_module    libexec/apache/mod_setenvif.so
#LoadModule php4_module        libexec/apache/libphp4.so
#LoadModule perl_module        libexec/apache/libperl.so
LoadModule jk2_module         libexec/apache/mod_jk2.so
   :        :
AddModule mod_so.c
AddModule mod_setenvif.c
#AddModule mod_php4.c
#AddModule mod_perl.c
AddModule mod_jk2.c
   :        :
<IfModule mod_jk2.c>
    JkSet  config:file  /usr/local/etc/apache/workers2.properties
</IfModule>

続いて上の設定にも書いてある/usr/local/etc/apache/workers2.propertiesを作成します。以下に例を示します。

#mod_jk2 のログ設定
[logger.file:0]
level=ERROR
file=/var/log/mod_jk2.log
#共有メモリの設定
[shm:]
disabled=1
[channel.socket:localhost:8009]
[uri:/servlets-examples/*]
[uri:/jsp-examples/*]
[uri:/jsp/*]

uri指定に[uri:/jsp/*]が入っているのに注目してください。これはhttp://ホスト名/jsp/でhttp://ホスト名:8180/jsp/にアクセスするのと同等になるように設定しています。

では、apachectl restartでapacheを再起動して、http://ホスト名/jsp/hello.jspにアクセスしてみてください。

無事先ほど作成したhello.jspの実行結果が表示されれば成功です。

おわりに

他にもPostgreSQLを使ってJDBC経由でアクセスしたりと、色々と試してみたのですが、これはJavaそのものに関連する情報なのでまた別の機会にでも発表したいと思います。

今回の内容は設定して1日程度いじった程度での内容ですので、とりあえず動くけど説明不足な部分が多々あると思います。色々知っている方、コメント頂ければ幸いです。

投稿者 yotan : 2004年8月16日 20:30| トラックバック(0)
アンケート
このエントリは・・・
とても役に立った
役に立った
どちらとも言えない
あまり役に立たなかった
全く役に立たなかった