Apache2とTomcat4を連携させてみる
Modified: 29 July 2005
コネクタのダウンロード
以下がTomcat4のダウンロードサイトです。
http://jakarta.apache.org/site/downloads/downloads_tomcat-4.cgiリンクをたどっていくと、以下からダウンロードできます。
http://ftp.kddilabs.jp/infosystems/apache/jakarta/tomcat-connectors/jk/binaries/linux/jk-1.2.6/CentOS(RHEL)用のJKがなかったので、FC2(たぶんFedoraCore2)用をダウンロードしました。
jakarta-tomcat-connectors-jk-1.2.6-linux-fc2-i386-apache-2.0.50.so
"FedoraCore2"用といってもコネクタは、Apacheのバージョンに依存するものですので、CentOS3.5のApacheでも使えます。
コネクタのインストール
ダウンロードしたファイルは、そのまま、"/etc/httpd/module"にコピーし、"mod_jk.so"にロジカルリンクします。
# cp jakarta-tomcat-connectors-jk-1.2.6-linux-fc2-i386-apache-2.0.50.so /etc/httpd/module
# cd /etc/httpd/module
# ln -s jakarta-tomcat-connectors-jk-1.2.6-linux-fc2-i386-apache-2.0.50.so mod_jk.so
"mod_jk"の設定をする
以下のように、対象のディレクトリを指定し、"/etc/httpd/conf" に、"mod_jk.conf"のファイル名で置きます。
################################################################### # Auto generated configuration. Dated: Tue Sep 23 11:07:31 CDT 2003 ################################################################### # # The following line instructs Apache to load the jk module # #LoadModule jk_module modules/mod_jk.so #JkWorkersFile /etc/httpd/conf/workers.properties #JkLogFile /etc/httpd/logs/mod_jk_sanyo-kyosai.jp.log # # Log level to be used by mod_jk # #JkLogLevel error ################################################################### # SSL configuration # # # By default mod_jk is configured to collect SSL information from # the apache environment and send it to the Tomcat workers. The # problem is that there are many SSL solutions for Apache and as # a result the environment variable names may change. # # The following (commented out) JK related SSL configureation # can be used to customize mod_jk's SSL behaviour. # # Should mod_jk send SSL information to Tomact (default is On) # JkExtractSSL Off # # What is the indicator for SSL (default is HTTPS) # JkHTTPSIndicator HTTPS # # What is the indicator for SSL session (default is SSL_SESSION_ID) # JkSESSIONIndicator SSL_SESSION_ID # # What is the indicator for client SSL cipher suit (default is SSL_CIPHER) # JkCIPHERIndicator SSL_CIPHER # # What is the indicator for the client SSL certificated (default is SSL_CLIENT_CERT) # JkCERTSIndicator SSL_CLIENT_CERT # # # ################################################################### # # Root context mounts for Tomcat # #JkMount /*.jsp ajp12 #JkMount /servlet/* ajp12 ######################################################### # configuration for the /testsite context starts. ######################################################### <Directory "/www/tomcat4/webapps/testsite"> Options Indexes FollowSymLinks </Directory> JkMount /servlet/* ajp13 JkMount /html/*.jsp ajp13 <Location "/WEB-INF/"> AllowOverride None deny from all </Location> <Location "/META-INF/"> AllowOverride None deny from all </Location>
"httpd.conf"を設定する
Apacheの設定ファイル、"httpd.conf"を以下のように設定します。
: LoadModule jk_module modules/mod_jk.so : <VirtualHost *> ServerName test.tomo.ac ServerAdmin tomo@tomo.ac DocumentRoot /www/tomcat4/webapps/testsite ErrorLog logs/error_log CustomLog logs/access_log combined Include /etc/httpd/conf/mod_jk.conf <Directory "/www/tomcat4/webapps/testsite"> AllowOverride FileInfo Authconfig Limit Options AddHandler cgi-script .cgi Options ExecCGI Includes Allow from all </Directory> </VirtualHost> :
"workers.properties"を設定する
以下のサンプルをそのまま使えばとりあえずそのまま動くと思います。
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/config/jk.html
# # $Header: /home/cvspublic/jakarta-tomcat/src/etc/Attic/workers.properties,v 1.3.2.2 2000/10/16 01:59:22 larryi Exp $ # $Revision: 1.3.2.2 $ # $Date: 2000/10/16 01:59:22 $ # # # workers.properties - # # This file provides jk derived plugins with with the needed information to # connect to the different tomcat workers. # # As a general note, the characters $( and ) are used internally to define # macros. Do not use them in your own configuration!!! # # Whenever you see a set of lines such as: # x=value # y=$(x)\something # # the final value for y will be value\something # # Normaly all you will need to modify is the first properties, i.e. # workers.tomcat_home, workers.java_home and ps. Most of the configuration # is derived from these. # # When you are done updating workers.tomcat_home, workers.java_home and ps # you should have 3 workers configured: # # - An ajp12 worker that connects to localhost:8007 # - An ajp13 worker that connects to localhost:8009 # - A jni inprocess worker. # - A load balancer worker # # However by default the plugins will only use the ajp12 worker. To have # the plugins use other workers you should modify the worker.list property. # # # # workers.tomcat_home should point to the location where you # installed tomcat. This is where you have your conf, webapps and lib # directories. # #workers.tomcat_home=c:\jakarta-tomcat # # workers.java_home should point to your Java installation. Normally # you should have a bin and lib directories beneath it. # #workers.java_home=c:\jdk1.2.2 # # You should configure your environment slash... ps=\ on NT and / on UNIX # and maybe something different elsewhere. # ps=/ # #------ ADVANCED MODE ------------------------------------------------ #--------------------------------------------------------------------- # # #------ DEFAULT worket list ------------------------------------------ #--------------------------------------------------------------------- # # # The workers that your plugins should create and work with # worker.list=ajp12, ajp13 # #------ DEFAULT ajp12 WORKER DEFINITION ------------------------------ #--------------------------------------------------------------------- # # # Defining a worker named ajp12 and of type ajp12 # Note that the name and the type do not have to match. # worker.ajp12.port=8007 worker.ajp12.host=localhost worker.ajp12.type=ajp12 # # Specifies the load balance factor when used with # a load balancing worker. # Note: # ----> lbfactor must be > 0 # ----> Low lbfactor means less work done by the worker. worker.ajp12.lbfactor=1 # #------ DEFAULT ajp13 WORKER DEFINITION ------------------------------ #--------------------------------------------------------------------- # # # Defining a worker named ajp13 and of type ajp13 # Note that the name and the type do not have to match. # worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 # # Specifies the load balance factor when used with # a load balancing worker. # Note: # ----> lbfactor must be > 0 # ----> Low lbfactor means less work done by the worker. worker.ajp13.lbfactor=1 # # Specify the size of the open connection cache. #worker.ajp13.cachesize # #------ DEFAULT LOAD BALANCER WORKER DEFINITION ---------------------- #--------------------------------------------------------------------- # # # The loadbalancer (type lb) workers perform wighted round-robin # load balancing with sticky sessions. # Note: # ----> If a worker dies, the load balancer will check its state # once in a while. Until then all work is redirected to peer # workers. worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=ajp12, ajp13 # #------ DEFAULT JNI WORKER DEFINITION--------------------------------- #--------------------------------------------------------------------- # # # Defining a worker named inprocess and of type jni # Note that the name and the type do not have to match. # worker.inprocess.type=jni # #------ CLASSPATH DEFINITION ----------------------------------------- #--------------------------------------------------------------------- # # # Additional class path components. # #worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes # # The XML parser provided with Tomcat # #worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar #worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar # # Tomcat's implementation # #worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jasper.jar #worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)servlet.jar #worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)webserver.jar # # Javac as available from Java2SE # #worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar # # Setting the command line for tomcat # Note: The cmd_line string may not contain spaces. # #worker.inprocess.cmd_line=-config #worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml #worker.inprocess.cmd_line=-home #worker.inprocess.cmd_line=$(workers.tomcat_home) # # The JVM that we are about to use # # This is for Java2 # #worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll # # And this is for jdk1.1.X # #worker.inprocess.jvm_lib=$(workers.java_home)$(ps)bin$(ps)javai.dll # # # Setting the place for the stdout and stderr of tomcat # #worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout #worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr # # Setting the tomcat.home Java property # #worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home) # # Java system properties # # worker.inprocess.sysprops=java.compiler=NONE # worker.inprocess.sysprops=myprop=mypropvalue # # Additional path components. # # worker.inprocess.ld_path=d:$(ps)SQLLIB$(ps)bin #
"server.xml"を設定する
"<Engine>"の中に、"<Host>"を設定します。
<Server> : <Service> : <Engine> : <Host name="tomo.ac" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/www/tomcat4/webapps/testsite" debug="0" reloadable="false" crossContext="true"> </Context> </Host> </Engine> </Service> </Server>
これで、tomcat4とhttpdを再起動すれば動作するはずです。