Jakartaプロジェクトのサブプロジェクトとして開発されているオープンソースのソフトウェアで、Javaサーブレット・JSPを処理するアプリケーションサーバです。
Tomcatは単独でWebサーバとして動作できるそうだがApacheのプラグインと動作できるようになっており、実際にはプラグインとしての利用が主流となっているそうです。
tomcatのインストール # yum -y install tomcat ApacheとTomcatの連携モジュールをインストール # yum -y install mod_jk2 |
環境ファイルの編集 # vi /etc/profile 以下を追加します。 export JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin export TOMCAT_HOME=/usr/share/tomcat export CATALINA_HOME=/usr/share/tomcat export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/common/lib 編集した環境ファイルを反映させる # source /etc/profile 設定ファイルの編集 # vi /usr/share/tomcat/conf/web.xml <servlet> <servlet-name>default</servlet-name> <servlet-class> org.apache.catalina.servlets.DefaultServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> ディレクトリの内容が表示されてしまうのを防ぐ <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> サーブレットクラスをJRE(Java実行環境)のクラスライブラリへコピー # cp /usr/share/tomcat/common/lib/servlet.jar $JAVA_HOME/jre/lib/ext/ Apache連携でサーブレットとJSPがInternal Server Errorとなってしまうことの対処 # vi /etc/httpd/conf/workers2.properties [shm:] #info=Scoreboard. Required for reconfiguration and status with multiprocess servers #file=${serverRoot}/logs/jk2.shm #size=1000000 #debug=0 disabled=1 |
apache(httpd)を再起動する # /etc/rc.d/init.d/httpd restart httpdを停止中: [ OK ] httpd を起動中: [ OK ] tomcatを起動する # /etc/rc.d/init.d/tomcat start tomcat を起動中: [ OK ] |
『OSの再起動を行なった時にtomcatを自動的に起動するように設定する』を行なった場合は、サービスの起動順番は「apache(httpd)」→「tomcat」となりますので、気にする必要はありません。
起動時にtomcatを起動する # chkconfig tomcat on 設定内容を確認 # chkconfig --list tomcat tomcat 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ |
クライアントより[http://サーバのアドレス/examples/servlets/]でアクセスして下記の様な画面が表示されれば動作しています。
クライアントより[http://サーバのアドレス/examples/jsp/]でアクセスして下記の様な画面が表示されれば動作しています。
tomcatでは、基本的に「/usr/share/tomcat/webapps/」がドキュメントのルートになっています。
例えば、サーブレットのサンプルが"examples"になっていました。[http://サーバのアドレス/examples/servlets/]
これは、tomcatの設定ファイル「/usr/share/tomcat/conf/server.xml」で以下の様に定義されています。
/usr/share/tomcat/conf/server.xmlの内容 <!-- Tomcat Root Context --> <!-- <Context path="" docBase="ROOT" debug="0"/> --> <!-- Tomcat Examples Context --> <Context path="/examples" docBase="examples" debug="0" reloadable="true" crossContext="true"> |
サーブレットモジュールを作成し任意のアドレス(http://サーバのアドレス/fedora/servlet/)でアクセス出来る様にする。
tomcat設定ファイルにアドレスを定義する # vi /usr/share/tomcat/conf/server.xml <!-- Tomcat Root Context --> <!-- <Context path="" docBase="ROOT" debug="0"/> --> <Context path="/fedora" docBase="fedora" reloadable="true" crossContext="true"> </Context> <!-- Tomcat Examples Context --> <Context path="/examples" docBase="examples" debug="0" reloadable="true" crossContext="true"> servlet/以降へのアクセスはサーブレットとする # vi /usr/share/tomcat/conf/web.xml <!-- The mapping for the invoker servlet --> <!-- <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> --> 上記の <!-- と --> 部分を消す ↓↓↓↓↓ <!-- The mapping for the invoker servlet --> <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> アドレスのfedora/以降はtomcatに認識させる # vi /etc/httpd/conf/workers2.properties [uri:/examples/servlet/HelloW] info=Example with debug enabled. debug=10 最終行以下に追加 [uri:/fedora/*] パスを作成する # mkdir /usr/share/tomcat/webapps/fedora/ # mkdir /usr/share/tomcat/webapps/fedora/WEB-INF/ # mkdir /usr/share/tomcat/webapps/fedora/WEB-INF/classes/ パスが長いのでカレントを移動 # cd /usr/share/tomcat/webapps/fedora/WEB-INF/classes/ サーブレットソースの作成 # vi TestServlet.java import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html; charset=EUC-JP"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Test Servlet</title>"); out.println("</head>"); out.println("<body>"); out.println("サーブレットのテスト"); out.println("</body>"); out.println("</html>"); out.close(); } } ソースのコンパイル # javac TestServlet.java |
クライアントより[http://サーバのアドレス/fedora/servlet/TestServlet]でアクセスして"サーブレットのテスト"と表示されれば動作しています。
JSPを作成し任意のアドレス(http://サーバのアドレス/fedora/jsp/)でアクセス出来る様にする。
サーブレットの設定(fedora/でアクセス)が完了している事を前提としています。 パスを作成する # mkdir /usr/share/tomcat/webapps/fedora/jsp/ パスが長いのでカレントを移動 # cd /usr/share/tomcat/webapps/fedora/jsp/ JSPソースの作成 # vi TestJSP.jsp <%@ page contentType="text/html;charset=EUC-JP" %> <html> <head> <title>Test JSP</title> </head> <body> <p> <% String strJSP = "JSPのテスト"; out.println(strJSP); %> </p> </body> </html> |
クライアントより[http://サーバのアドレス/fedora/jsp/TestJSP.jsp]でアクセスして"JSPのテスト"と表示されれば動作しています。