Tomcat 5.5.15 (+ mod_proxy_ajp + postgresql-jdbc) [FC5]
作成 : 2006/04/30
Tomcatをインストール
パッケージをyumでインストール。 依存関係にあるパッケージ(いっぱいある)も一緒にインストールしてくれる。
# yum install tomcat5
....
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
tomcat5 i386 5.5.15-1jpp_6fc core 311 k
Installing for dependencies:
alsa-lib i386 1.0.11-3.rc2.2 core 402 k
ant i386 1.6.5-1jpp_7fc core 2.0 M
axis noarch 1.2.1-2jpp_2fc core 1.5 M
bcel noarch 5.1-1jpp_6fc core 459 k
binutils i386 2.16.91.0.6-5 updates 3.4 M
classpathx-jaf noarch 1.0-2jpp_5fc core 57 k
classpathx-mail noarch 1.0-4jpp_5fc core 351 k
cpp i386 4.1.0-3 core 2.4 M
eclipse-ecj i386 1:3.1.2-1jpp_13fc core 7.0 M
gcc i386 4.1.0-3 core 4.2 M
gcc-java i386 4.1.0-3 core 2.6 M
geronimo-specs i386 1.0-0.M2.2jpp_7fc core 227 k
geronimo-specs-compat i386 1.0-0.M2.2jpp_7fc core 4.9 k
gjdoc i386 0.7.7-3.1 core 1.1 M
glibc-devel i386 2.4-4 core 1.9 M
glibc-headers i386 2.4-4 core 601 k
gnu-crypto i386 2.1.0-1jpp_2fc core 1.6 M
jakarta-commons-beanutils i386 1.7.0-2jpp_6fc core 517 k
jakarta-commons-collections i386 3.1-2jpp_5fc core 984 k
jakarta-commons-daemon i386 1:1.0-2jpp_4fc core 44 k
jakarta-commons-dbcp noarch 1.2.1-3jpp_3fc core 109 k
jakarta-commons-digester i386 1.7-2jpp_10fc core 308 k
jakarta-commons-discovery noarch 1:0.3-1jpp_3fc core 71 k
jakarta-commons-el i386 1.0-4jpp_6fc core 236 k
jakarta-commons-fileupload noarch 1:1.0-3jpp_5fc core 24 k
jakarta-commons-httpclient noarch 1:3.0-0.rc2.0jpp_4fc core 267 k
jakarta-commons-launcher noarch 0.9-3jpp_3fc core 42 k
jakarta-commons-logging i386 1.0.4-2jpp_10fc core 105 k
jakarta-commons-modeler i386 1.1-4jpp_6fc core 225 k
jakarta-commons-pool noarch 1.2-2jpp_4fc core 46 k
java-1.4.2-gcj-compat i386 1.4.2.0-40jpp_83rh core 2.2 M
java-1.4.2-gcj-compat-devel i386 1.4.2.0-40jpp_83rh core 35 k
jessie i386 1.0.1-3 core 818 k
jpackage-utils noarch 1.6.6-1jpp_2rh core 50 k
ldapjdk noarch 4.17-1jpp_3fc.1.1 core 388 k
libXtst i386 1.0.1-1.2 core 15 k
libart_lgpl i386 2.3.17-2.2.1 core 75 k
libgcj i386 4.1.0-3 core 12 M
libgcj-devel i386 4.1.0-3 core 1.2 M
libgomp i386 4.1.0-3 core 38 k
log4j noarch 1.2.8-7jpp_8fc core 317 k
mx4j i386 1:3.0.1-1jpp_9fc core 2.4 M
oro noarch 2.0.8-1jpp_4fc core 72 k
regexp i386 1.3-2jpp_7fc core 87 k
tomcat5-common-lib i386 5.5.15-1jpp_6fc core 185 k
tomcat5-jasper i386 5.5.15-1jpp_6fc core 955 k
tomcat5-jsp-2.0-api i386 5.5.15-1jpp_6fc core 88 k
tomcat5-server-lib i386 5.5.15-1jpp_6fc core 3.5 M
tomcat5-servlet-2.4-api i386 5.5.15-1jpp_6fc core 144 k
wsdl4j noarch 1.5.1-1jpp_4fc core 160 k
xalan-j2 i386 2.6.0-3jpp_9fc core 3.8 M
xerces-j2 i386 2.7.1-6jpp_7fc core 3.1 M
xml-commons i386 1.3.02-0.b2.7jpp_7fc core 19 k
xml-commons-apis i386 1.3.02-0.b2.7jpp_7fc core 370 k
xml-commons-resolver noarch 1.1-1jpp_8fc core 61 k
zlib-devel i386 1.2.3-1.2.1 core 101 k
Transaction Summary
=============================================================================
Install 57 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 65 M
....
とりあえずTomcatを起動
とりあえず、起動してみる。 warningが表示されるけど、気にしない。
# /etc/init.d/tomcat start
Starting tomcat5: find: warning: you have specified the -mindepth option after a non-option argument -type, but options are not positional (-mindepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
Using CATALINA_BASE: /usr/share/tomcat5
Using CATALINA_HOME: /usr/share/tomcat5
Using CATALINA_TMPDIR: /usr/share/tomcat5/temp
Using JRE_HOME:
[ OK ]
プロセスが起動しているか、確認してみる。
# ps -ef | grep tomcat
tomcat 14741 1 4 21:52 ? 00:00:05 /usr/lib/jvm/java/bin/java -Djava.ext
.dirs=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre/lib/ext -Djava.endorsed.dirs=/usr/share
/tomcat5/common/endorsed -classpath /usr/lib/jvm/java/lib/tools.jar:/usr/share/tomcat
5/bin/bootstrap.jar:/usr/share/tomcat5/bin/commons-logging-api.jar:/usr/share/java/mx
4j/mx4j-impl.jar:/usr/share/java/mx4j/mx4j-jmx.jar -Dcatalina.base=/usr/share/tomcat5
-Dcatalina.home=/usr/share/tomcat5 -Djava.io.tmpdir=/usr/share/tomcat5/temp org.apac
he.catalina.startup.Bootstrap start
JSPファイルを作成
"こんにちは"と表示するだけのJSPファイルHelloWorld.jspを作成する。 文字コードセットは"UTF-8"で保存して、/var/www/webapps/jsp-test/ディレクトリに置いておく。
<%@ page contentType="text/html; charset=UTF-8" %>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="content-type" content="text/html" />
<title>Hello World</title>
</head>
<body>
<p>
<%
out.println("こんにちは");
%>
</p>
</body>
</html>
文字コードセット"EUC-JP"を使うなら、1行目のcharsetと2行目のencodingを変更する。
<%@ page contentType="text/html; charset=EUC-JP" %> <?xml version="1.0" encoding="EUC-JP"?>
Tomcatの設定(server.xml)
Tomcat設定ファイル/etc/tomcat5/server.xmlを編集して、/var/www/webapps/jsp-test/ディレクトリに置いたJSPファイルを処理できるようにする。 ブラウザで"http://hoge.nina.jp/jsp/HelloWorld.jsp"を指定したとき、JSPファイルにアクセスできるようにしてみる。
<!-- /etc/tomcat5/server.xml --> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> <GlobalNamingResources> <Environment name="simpleValue" type="java.lang.Integer" value="30"/> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> <Engine name="Catalina" defaultHost="hoge.nina.jp"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <!--コメントをはずすと、送受信したヘッダ情報を/var/log/tomcat5/catalina.outに書き出してくれる--> <!--デバッグしたいときに便利--> <!-- <Valve className="org.apache.catalina.valves.RequestDumperValve"/> --> <!--ブラウザでアクセスするときに指定するホスト名と同じにすること--> <!--間違えると"No Host matches server name xxxx"エラー(RequestDumperValve有効時ログに出力される)になって、真っ白なページが表示される--> <Host name="hoge.nina.jp" appBase="/var/www/webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <!--pathは、後で出てくるproxy_ajpの設定とあわせること--> <!--docBaseは、JSPファイルを置いたディレクトリを指定--> <Context path="/jsp" docBase="jsp-test" debug="0" reloadable="true"/> <!--アクセスログの設定--> <!--/var/log/tomcat5/ディレクトリに保存される--> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="hoge_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> </Host> </Engine> </Service> </Server>
設定したら、tomcatサービスを再起動しておく。
# /etc/init.d/tomcat5 restart
httpdの設定(proxy_ajp.conf)
httpd-2.2から、Tomcatと連携するためのコネクタmod_proxy_ajpがパッケージに含まれるようになったらしい。 連携のための設定は、/etc/httpd/conf.d/proxy_ajp.confに記述する。
# /etc/httpd/conf.d/proxy_ajp.conf LoadModule proxy_ajp_module modules/mod_proxy_ajp.so # server.xmlに記述したコンテキストパスと同じにすること ProxyPass /jsp/ ajp://localhost:8009/jsp/
設定したら、httpdサービスを再起動しておく。
# /etc/init.d/httpd restart
ブラウザからアクセスしてみる
ブラウザから"http://hoge.nina.jp/jsp/HelloWorld.jsp"にアクセスしてみる。 ...真っ白。 ログにへんなエラーが残っている。
# tail -f /var/log/tomcat5/catalina.out
[error] (13)Permission denied: proxy: AJP: attempt to connect to 127.0.0.1:8009 (localhost) failed
[error] ap_proxy_connect_backend disabling worker for (localhost)
[error] proxy: AJP: failed to make connection to backend: localhost
SELinuxを無効にしたら、ちゃんと"こんにちは"が表示された。
# /etc/syscofig/selinux
....
#SELINUX=enforcing
SELINUX=disabled
....
静的ページの文字エンコーディング
/var/www/webapps/jsp-test/ディレクトリに置いた静的なページ(*.html)は、httpdでのDefaultCharset指定に関係なくUTF-8として表示されてしまうようだ。 なので、EUCやSJISのページは文字化けしてしまう。 web.xmlのmime-typeで指定しちゃっていいのかなあ...
# /etc/tomcat5/web.xml # または、/var/www/webapps/jsp-test/WEB-INF/web.xml .... <mime-mapping> <extension>html</extension> <mime-type>text/html; charset=EUC-JP</mime-type> </mime-mapping> ....
PostgreSQL用JDBCドライバ
JavaサーブレットやJSPでPostgreSQLサーバに接続するときに必要。 yumでインストールできる。
# yum install postgresql-jdbc
インストールしただけでは、クラスが見つからないのでエラーになる。
java.lang.ClassNotFoundException: org.postgresql.Driver
JREのエクステンションディレクトリにjarファイルのシンボリックリンクを作成しておく。
# cd /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre/lib/ext/ # ln -s /usr/share/java/postgresql-jdbc3.jar .