'03.1.27 ('03.6.16更新)
なんだか他人に思えないTomcatです。えっと、Javaサーバです。インストールして使ってみましょう。難しくないですが、Apacheとの連携はちょっと手間かも。
(OS X 10.2.3で動作確認しました。Javaのバージョンは1.3.1。Tomcatは4.1.18。Apacheは1.3.27)
(自己責任で行ってください)
Java Servlet と Java Server Pages (JSP) を実行するサーバです。Apacheに比べると遅いですが、Webサーバの機能もあります。Tomcat自体Javaで書かれています。WebDAV機能もあります。
まずはTomcat本体のインストール。バイナリを使います。JavaだからOS X用でなくても大丈夫。
「本家」の「The Jakarta Site - Binary Downloads」からバイナリをダウンロードし、tarで展開するだけ。インストール先は/usr/local。StuffIt Expanderではちゃんと展開されないことがあるので注意。
「jakarta-tomcat-4.1.18.tar.gz」をダウンロード。「 jakarta-tomcat-4.1.18-LE-jdk14.tar.gz」はJava1.4用で、OS X 10.2.4までは1.3.1だからそのままでは使えない。10.2.3と10.2.4はJava 1.4.1 Updateをインストールすれば使えます。ダウンロードサイトによっては、ファイル名の頭に「jakarta-」が付かないファイルのこともあります。
% sudo mv jakarta-tomcat-4.1.18.tar.gz /usr/local % cd /usr/local % sudo tar zxvf jakarta-tomcat-4.1.18.tar.gz
ディレクトリ名を書き換えてもいいのですが、下記のようにリンクしておくと、複数のバージョンを置いておく時に便利。以降の説明でもtomcatディレクトリとして書きますので、リンクしない人は説明を置き換えてください。
% sudo ln -s jakarta-tomcat-4.1.18 tomcat
とりあえず、オーナーを管理者である自分にします。今後、設定ファイルを書き換えたり、ファイルを作ったりするときに便利です。root権限が無くともTomcatの起動ができるようになります。Tomcat専用ユーザを作ってもいいですね。
% sudo chown -R username:staff jakarta-tomcat-4.1.18
シェルにJavaのホームディレクトリを登録します。Tomcatの起動と終了に使うシェルスクリプトの中で使います。/Users/username/.cshrc (自分のホームディレクトリにある) に下記を追加。.tcshrcがあると.cshrcが無視されるので.tcshrcに追記します。どちらも無ければ作ります。
setenv JAVA_HOME /Library/Java/Home
Homeの後ろに改行を忘れずに。ターミナルでは新しいウィンドウから有効になります。
Tomcatに付属のスクリプトを使って起動します。
% /usr/local/tomcat/bin/startup.sh
止める時は
% /usr/local/tomcat/bin/shutdown.sh
「http://127.0.0.1:8080/」で少し待たされて、ちっともかわいくない猫が。

サンプルのServletとJSPが動けば成功です。
Cocoonを使うためにTomcatをインストールした人は、次はCocoonのインストール。
デフォルトで8080ですが、たとえば80に変えたい場合 /usr/local/tomcat/conf/server.xml の92行目辺り
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
「port="8080"」を「port="80"」としてポート番号を変えられます。Apacheと連携する場合は必要ないですけど。ただし、80などIANAで予約済みのポートを使うと、root権限でないとTomcatが起動できなくなります (sudo使えばいいんですが)。
Tomcat単独で使う場合には必要ありませんが、ApacheをメインのWebサーバとして使う場合は、特定のディレクトリでのみTomcatが動いてJavaが実行されるようにします。そのためにApacheへコネクタ・モジュールをインストールします。ここではmod_webappを使います。
Tomcat 4.0.1の時からのOS X用バイナリ (v1.0) が配付されていますが、最新版 (v1.2) のバイナリは無いのでソースからビルドすることにします。v1.0を使っても連携は出来ます。
(Apache2では試していませんが、mod_webappでは動かないかもしれません。mod_jk2, coyote等他のコネクタを使う方法もあります)
(OS X 10.1.5でビルドするにはautoconf 2.52以降のインストールが必要です)
ビルドにはAPR (Apache Portable Runtime) が必要なので先に展開します。これはプラットフォーム間の差異を補正し、簡単なインストールを実現するものです。
「http://apr.apache.org/」の「Index of /dist/apr」から最新版「apr-0.9.1.tar.gz」をダウンロード。
% tar zxvf apr-0.9.1.tar.gz % cd apr-0.9.1 % ./buildconf % cd ../
「The Jakarta Site - Source Downloads」から「jakarta-tomcat-connectors-4.1.18-src.tar.gz」をダウンロード。(ブラウザでダウンロードすると名前が短くなることがあるので注意)
makeまで一気に行ってみましょう。APRの場所は相対パスで書いたので注意。
% tar zxvf jakarta-tomcat-connectors-4.1.18-src.tar.gz % cd jakarta-tomcat-connectors-4.1.18-src/webapp % ./support/buildconf.sh % ./configure --with-apxs=/usr/sbin/apxs --with-apr=../../apr-0.9.1 % make
--enable-java=DIRオプションはつけない。つけるとtomcat-warp.jarをビルドすることになりますが、他のツールのインストールが必要になってかなり面倒です。Tomcatに付属のtomcat-warp.jarでも動くので良しとします。
apache-1.3ディレクトリにできた、mod_webapp.soを/usr/libexec/httpd/にコピー
% sudo cp apache-1.3/mod_webapp.so /usr/libexec/httpd
/etc/httpd/httpd.confに以下の設定をします。
# ServerNameを指定しないと動かない。実際に呼び出すサーバ名を書く。 ServerName 127.0.0.1 # 以下は書き加え。 LoadModule webapp_module libexec/httpd/mod_webapp.so AddModule mod_webapp.c <IfModule mod_webapp.c> WebAppConnection warpConnection warp localhost:8008 WebAppDeploy examples warpConnection /examples/ </IfModule>
/usr/local/tomcat/webapps/examplesにリダイレクトされます。
/usr/local/tomcat/conf/server.xmlの最後の方、以下の<!--と-->を消してコメントアウトされてる部分を読み込まれるようにします。(Tomcat 4.1になってコメントアウトされるようになった)
<!-- Define an Apache-Connector Service --> <!-- ←消す <Service name="Tomcat-Apache"> <Connector className="org.apache.catalina.connector.warp.WarpConnector" port="8008" minProcessors="5" maxProcessors="75" enableLookups="true" appBase="webapps" acceptCount="10" debug="0"/> <Engine className="org.apache.catalina.connector.warp.WarpEngine" name="Apache" debug="0"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="apache_log." suffix=".txt" timestamp="true"/> <Realm className="org.apache.catalina.realm.MemoryRealm" /> </Engine> </Service> --> ←消す </Server>
ポート8080からの直接呼び出しを止める場合、下記をコメントアウトします。92行目辺り。
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 --> <!-- ←書く <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false" disableUploadTimeout="true" /> --> ←書く
まずTomcatを再起動してからApacheの再起動。
% /usr/local/tomcat/bin/shutdown.sh % /usr/local/tomcat/bin/startup.sh % sudo apachectl restart
「http://127.0.0.1/examples/」にアクセス。

サンプルが動けば成功です。
自分用のディレクトリを作ってみましょう。
/usr/local/tomcat/webappsに、たとえば「mine」ディレクトリを作ります。
% cd /usr/local/tomcat/webapps % mkdir mine
280行目辺り、<!-- Tomcat Examples Context -->の上くらいに入れます。わかりづらいですが、<Host name="localhost"...></Host>に挟まれた部分です。下記はプログラム開発用にreloadable="true"ですが、実運用ではreloadable="false"にします。"true"はファイルが変更される度に更新される代わりに遅くなります。"false"だと変更後再起動が必要です。
<!-- mine --> <Context path="/mine" docBase="mine" debug="0" reloadable="true"/>
Apacheと連携してる場合httpd.confの設定に1行追加。実運用ならexamplesディレクトリは非公開にします。
<IfModule mod_webapp.c>
WebAppConnection warpConnection warp localhost:8008
# WebAppDeploy examples warpConnection /examples/
WebAppDeploy mine warpConnection /mine/
</IfModule>
まずTomcatを再起動してからApacheの再起動。
% /usr/local/tomcat/bin/shutdown.sh % /usr/local/tomcat/bin/startup.sh % sudo apachectl restart
Tomcatには、server.xml等の設定ファイルの内容をGUIで設定できるツールが付属しています。(以前は別配布でした)
http://127.0.0.1:8080/からアクセスするので、ポート8080からの呼び出しを止めてあるなら戻します。
ユーザを追加します。デフォルトで書いてあるユーザは、消さなくても使えないので危険じゃないと思いますが、消してもいいです。
<tomcat-users>
<user name="tomcat" password="tomcat" roles="tomcat" />
<user name="role1" password="tomcat" roles="role1" />
<user name="both" password="tomcat" roles="tomcat,role1" />
<user username="admin" password="hogehoge" roles="admin"/>
</tomcat-users>
ローカルからのアクセスに制限するため、「-->」を移動して、<Valve className= ... />を有効にします。
<!-- Uncomment this Valve to limit access to the Admin app to localhost for obvious security reasons. Allow may be a comma-separated list of hosts (or even regular expressions). --> ←書く <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/> --> ←消す
Tomcatを再起動します。
% /usr/local/tomcat/bin/shutdown.sh % /usr/local/tomcat/bin/startup.sh
http://127.0.0.1:8080/にアクセスし、左の「Tomcat Administration」リンクをクリックして認証画面に行きます。ユーザー名とパスワードを入力しログイン。下記の画面が現れます。

Tomcatをインストールしただけで使えます。
「http://127.0.0.1:8080/webdav/」がホームディレクトリになります。Finderの「移動」の「サーバへ接続...」からアクセスしてみましょう。
デフォルトでは、安全のため読むだけで書き込みできません。
Apacheと連携したなら、httpd.confに以下を追加して
WebAppDeploy webdav warpConnection /webdav/
「http://127.0.0.1/webdav/」ですね。
webdav/WEB-INF/web.xmlの以下の<!--と-->を消すと、書き込みも出来るようになります。
<!-- ←消す <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> --> ←消す
例に因って、OS X同士なら大丈夫ですが、他機種とのやりとりでは化けそうです。Apacheと連携した場合は、OS X同士でも使えない感じです。Apache使うならmod_davでいいんですけどね。
参照:Mac OS XでWebDAVサーバ
このページのためにお世話になった方々です。ありがとうございます。