`
chimae
  • 浏览: 25575 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Tomcat 5 + Apache 2 + mod_jk 2 实现虚拟主机

阅读更多
Tomcat 5 实现了 servlet 2.4 和jsp2.0,在性能上有所提升,尤其是,对我们来说,实现了真正的中文支持,无需添加特别参数就可以直接显示中文内容,让java和jsp中文问题成为历史!

1.首先apache2 ,unix/linux下面就从源代码编译安装,最重要的configure 参数是 --enalbe-modules="so" 其他根据自己需要安装,windows下面直接安装编译好的二进制版本。具体安装方法很多地方已经有介绍了,这里不赘述,如有需要可以参考 http://httpd.apache.org 或者 chinaunix 的web服务器区精华,唯一一点需要提醒的是,要将 httpd.conf 里面的
[code:1:141851c2a4]#AddDefaultCharset ISO-8859-1[/code:1:141851c2a4]
前面加#注销掉,很多人提问为什么Apache2显示中文乱码,根源就在这里,最简单的方法就是加一个#就可以正常显示中文了,无需设置什么GB2312。

2.安装jdk,tomcat的运行需要j2sdk支持,可以去 http://java.sun.com 下载。windows 的可以下载 offline installation 版本,大概50M左右,下载以后安装,linux下建议下载 self-extract版本,下载完以后用 chmod +x j2sdk... 加上执行属性,然后运行下载的文件,会出来一个许可协议,按几次空格跳过几页后,输入 yes 表示接受协议,然后程序会自动释放,并建立一个子目录 j2sdk1.4.2_04。

3.设置环境变量,java的运行需要设置一下环境变量,通常只要设置一个 JAVA_HOME,另外,把java的可执行程序放到path里面去就可以了。在linux下运行
[code:1:141851c2a4]JAVA_HOME=/usr/local/j2sdk1.4.2-04;export $JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin[/code:1:141851c2a4]如果你需要所有的用户都可以使用java,可以把这段代码放到 /etc/profile 里面去,这样你每次登陆的时候就会自动把有关变量设置好了。
windows下面要在“系统属性”里面->“高级”->点“环境变量”按钮,如果你希望所有用户都能用,就建立在“系统变量”里面,点“新建”按钮,变量名是 “JAVA_HOME”,变量值是你安装java的路径,通常是 C:\j2sdk1.4.2-04 ,然后编辑path变量,在变量值最后加上;%JAVA_HOME%\bin

4.安装tomcat,最简单是下载binary版本,在linux下面,直接 tar -xzvf jakarta-tomcat-5.0.19 即可。windows下面,直接运行那个exe文件,就会自动安装了。windows的安装过程要求设置一个admin用户和密码,这个用户可以在web上管理tomcat服务器的运行和安装和解除web应用的,还可以创建其他管理用户,权限很大,所以密码要小心得取,如果是linux下面,没有创建这个用户,则需要到 jakarta-tomcat-5.0.19/conf 下面编辑 tomcat-users.xml 手工添加2个role和1个用户,最简单的例子文件如下:
[code:1:141851c2a4]<?xml version=1.0 encoding=utf-8?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="administratorpassword123" roles="admin,manager"/>
</tomcat-users>[/code:1:141851c2a4]
启动tomcat,tomcat/bin目录下有startup.sh 用于Linux 和start.bat 用于windows,shutdown.sh 和 shutdown.bat 则用于关闭tomcat,当然,windows下面还有专门的图形界面的启动程序,其实效果都是一样的。

当然,在linux下面也可以用jsvc启动,并做成启动脚本随机器一起启动。jsvc本来要从 http://jakarta.apache.org 下载 commons-daemon-1.0-Alpha ,不过tomcat 已经自己带了一个了,在tomcat/bin目录下有一个jsvc.tar.gz 解压,编译:
解压 tar -xzvf jsvc.tar.gz 然后 cd jsvc-src 然后,运行
[code:1:141851c2a4]sh support/buildconf.sh
./configure
make[/code:1:141851c2a4]
(注意:tomcat-5.0.18版本带的jsvc源代码有一个低级错误--少一个分号,会导致编译不成功,可以自己加上这个分号)

tomcat自己带的jsvc-src/native目录下还有两个脚本 Tomcat.sh 和 Tomcat5.sh ,可以用作启动和停止tomcat的脚本,我把Tomcat5.sh略作修改,文件如下:

[code:1:141851c2a4]#!/bin/sh
#
# Startup Script for Tomcat5
#
# chkconfig: 345 87 13
# description: Tomcat Daemon
# processname: jsvc
# pidfile: /var/run/jsvc.pid
# config:
#
# Source function library.
. /etc/rc.d/init.d/functions
#
prog=tomcat
#
# Small shell script to show how to start/stop Tomcat using jsvc
# If you want to have Tomcat running on port 80 please modify the server.xml
# file:
#
# <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
# <Connector className="org.apache.catalina.connector.http.HttpConnector"
# port="80" minProcessors="5" maxProcessors="75"
# enableLookups="true" redirectPort="8443"
# acceptCount="10" debug="0" connectionTimeout="60000"/>
#
# You need a developement version of Tomcat (Apache Tomcat/4.1-dev)
#
# Adapt the following lines to your configuration

#设定自己的参数
JAVA_HOME=/usr/local/j2sdk1.4.2-04
CATALINA_HOME=/usr/local/jakarta-tomcat-5.0.19
DAEMON_HOME=$CATALINA_HOME/bin
#需要在系统中设定一个没有权限的
#用户来运行,这样比较安全
TOMCAT_USER=tomcat5
TMP_DIR=/var/tmp
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

start(){
echo -n $"Starting $prog: "
#
# Start Tomcat
#
$DAEMON_HOME/jsvc-src/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Djava.io.tmpdir=$TMP_DIR \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile &1 \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
RETVAL=$?
[ $RETVAL = 0 ] && touch /var/lock/subsys/jsvc
[ $RETVAL = 0 ] && echo_success || echo_failure
echo
return $RETVAL
}
stop(){
echo -n $"Stopping $prog: "
#
# Stop Tomcat
#
PID=`cat /var/run/jsvc.pid`
kill $PID
RETVAL=$?
[ $RETVAL = 0 ] && rm /var/lock/subsys/jsvc
[ $RETVAL = 0 ] && echo_success || echo_failure
echo
return $RETVAL
}

case "$1" in
start)
start
;;

stop)
stop
;;

restart|reload)
stop
start
;;

*)
echo "Usage $0 start/stop"
exit 1;;
esac[/code:1:141851c2a4]
把这段代码保存为 /etc/rc.d/init.d/tomcat ,然后运行 [code:1:141851c2a4]chkconfig --add tomcat[/code:1:141851c2a4]即可把tomcat 添加为系统服务自动随系统启动了。这个脚本会在runlevel 3/4/5三种模式自动启动。注意这段脚本是为tomcat5创建的,如果你用tomcat4,则需要在另一个tomcat.sh的基础上修改。

5.编译和设置mod_jk
windows版本的mod_jk可以直接从 jakarta.apache.org 下载binary版本,linux下只好下载源代码编译了。从 http://jakarta.apache.org 下载 jakarta-tomcat-connectors-jk2-src-current.tar.gz 解压,然后 [code:1:141851c2a4]cd /jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
./buildconf.sh[/code:1:141851c2a4]然后运行
[code:1:141851c2a4]./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/j2sdk1.4.2-04[/code:1:141851c2a4]
(具体路径按照你实际的调整)
运行
[code:1:141851c2a4]make jk2-build-apxs
cd server/apache2
make -f Makefile.apxs install[/code:1:141851c2a4]
其实这个软件包本来有ant的配置文件,用ant编译可能会简单一些,但是要另外装ant,而且里面有些模块不是ant本身native的功能,还要为ant加装相应的功能模块,所以这里就略过,下次有时间再发一个ant的应用。

这样,你的mod_jk总算是装好了,现在开始进入配置阶段,其实,配置很简单了

6.设置虚拟主机
比如,我现在有虚拟主机 vhosts.vicp.net 希望把jsp和servlet都转到tomcat去,而其他的文件比如html页面,图片等等仍然用apache解析。
Tomcat设置:
修改 tomcat/conf/server.xml,在 <Engine></Engine>里面再增加一个<host/>,
[code:1:141851c2a4]<Host name="vhosts.vicp.net" debug="0"
appBase="/opt/jakarta-tomcat-4.1.12-LE-jdk14/webapps/struts-example"
unpackWARs="true" autoDeploy="true">
<Alias>localhost</Alias>
<Alias>www</Alias>
<Alias>10.0.0.10</Alias>
<Context path="" docBase="" debug="1"/>
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="vhost.vicp.net_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="home_log_" suffix="_app_log.txt"
timestamp="true"/>
</Host>[/code:1:141851c2a4]
调整里面的参数和设置使之适合你的环境,当然,如果你还有其他的<host/>添加在后面。

在 /usr/local/apache/conf 下面创建一个workers2.properties,内容如下:

[code:1:141851c2a4]#---- worker2.properties

[logger.apache2]
level=DEBUG

# Shared memory handling. Needs to be set.
[shm]
file=/usr/local/apache2/logs/shm.file
size=1048576

# Example socket channel, explicitly set port and host.
[channel.socket:localhost:8009]
tomcatId=localhost:8009
port=8009
host=127.0.0.1

# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009

#[status:status]

# Uri mapping

#[uri:/jkstatus/*]
#group=status:status

#[uri:/jsp-examples/*]
#group=ajp13:localhost:8009

#[uri:/servlets-examples/*]
#group=ajp13:localhost:8009

#[uri:/javaapp/*]
#group=ajp13:localhost:8009

#[uri:www.home.net/*.jsp]
#worker=ajp13:localhost:8009

#[uri:10.0.0.10/*]
#worker=ajp13:localhost:8009

#---- end of workers2.properties[/code:1:141851c2a4]

当然,你可以删除其中的注释符使其中的uri和worker的配置生效,我现在不用这种方式配置是因为找到一个更好的方法:在httpd.conf里面配置:

把下面这段放到VirtualHost之前,可以从全局避免用户用apache访问WEB-INF目录。
[code:1:141851c2a4]<Directory ~ "/WEB-INF/">
Order allow,deny
Deny from all
</Directory>[/code:1:141851c2a4]

典型的VirtualHost配置样本

[code:1:141851c2a4]<VirtualHost _default_:80>
ServerName vhost.vicp.net
DocumentRoot /home/webapp/public_html/
DirectoryIndex index.htm index.html default.htm index.php index.jsp
<Location ~ "/*.jsp|/*/servlet/*">
JkUriSet worker ajp13:localhost:8009
</Location>
ErrorLog logs/vhosts.vicp.net-err_log
CustomLog logs/vhosts.vicp.net-acc_log common
</VirtualHost>[/code:1:141851c2a4]
这样就可以为每个不同的虚拟主机分别指定使用或者不使用jsp功能。

好了,可以开始开发和使用你的web应用了!

参考文献:
1. http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/vhosthowto.html
2. http://bbs.chinaunix.net/forum/6/20040214/259794.html
3. http://chinaunix.net/jh/6/263220.html


分享到:
评论

相关推荐

    Apache+Tomcat+mod_jk+mod_ssl配置笔记

    在配置Apache与Tomcat的连接时,我们需要在httpd.conf中添加mod_jk的配置,例如启用mod_jk模块,设置worker定义(这将在workers.properties文件中详细描述)以及虚拟主机或路径的重定向规则。 接下来,workers....

    RedHat_linux+apache+tomcat+mod_jk_负载均衡安装说明

    ### RedHat Linux + Apache + Tomcat + Mod_jk 负载均衡安装步骤详解 #### 系统环境准备与配置 在开始安装之前,我们首先需要确保系统环境满足以下要求: 1. **操作系统:** Red Hat Linux 9.0 2. **软件版本:**...

    apache+tomcat+mod_jk

    apache+tomcat+mod_jk整合文档,内有安装包。apache+tomcat+mod_jk整合文档,内有安装包。

    apache + tomcat + mod_jk集群

    5. **配置mod_jk模块**:在httpd.conf中,配置一个虚拟主机,并使用JkMount指令来指定哪些URL应该由mod_jk处理。这通常包括所有以"/"开头的URL,表示所有请求都将被转发到Tomcat。 6. **配置Tomcat**:在Tomcat的...

    apache2.4+tomcat7+mod_jk.so_整合配置

    `mod_jk.so` 是该模块的动态链接库文件,用于在 Apache 和 Tomcat 之间建立连接。以下是关于这个整合配置的详细步骤和知识点: 1. **Apache 2.4**:Apache HTTP Server 2.4 版本是一个流行的开源 Web 服务器,提供...

    apache2.4 +tomcat7+mod_jk.so 完美整合实例

    Apache 2.4、Tomcat 7 和 mod_jk.so 的整合是将 Apache 作为前端服务器,用于处理静态内容和反向代理,而 Tomcat 作为后端应用服务器,主要负责处理 Java Servlet 和 JSP。这种架构组合可以充分利用 Apache 的高性能...

    Tomcat+Apache+JK集群

    2. **下载并安装JK模块:** 从Apache官方或Apache Tomcat官方网站获取mod_jk.so,并将其放在Apache的modules目录下。 3. **配置Apache:** 在Apache的httpd.conf中,加载mod_jk模块,并配置JK模块的相关指令,如`...

    Apache2.4服务器+mod_jk.so

    5. **配置虚拟主机**:在`httpd-vhosts.conf`或`httpd.conf`中设置虚拟主机,并使用`JkMount`指令将动态请求转发给mod_jk,例如: ``` *:80&gt; ServerName yourdomain.com DocumentRoot /var/www/html JkMount /*...

    Apache2.2.25 + Tomcat6.0.45 + mod_jk + 测试页面 + 集群

    本资源包含了文章Apache2.2.x + Tomcat6.x + JK 集群配置,http://blog.csdn.net/qq396229783/article/details/74295797里面所用到的软件配置

    Apache 2.2 + Tomcat 6.0 + MySQL 5.0 + mod_jk 整合

    ### Apache 2.2 + Tomcat 6.0 + MySQL 5.0 + mod_jk 整合 本文旨在深入探讨如何将Apache 2.2、Tomcat 6.0、MySQL 5.0以及mod_jk进行有效的整合,以构建一个高性能、可扩展的应用服务器环境。这种整合方式不仅能够...

    两台服务器上做Apache2.2+Tomcat6.0+mod_jk的负载均衡

    最后,更新Apache的httpd.conf文件,设置虚拟主机和mod_jk的负载均衡规则。 6. **监控与故障切换**:为了确保高可用性,需要监控服务器状态,并实现故障切换。如果一台服务器出现故障,mod_jk可以自动将请求重定向...

    mod_jk各个版本 apache与tomcat 整合

    通过使用 mod_jk 这一模块,我们可以实现 Apache 和 Tomcat 之间的高效通信。mod_jk 是一个负载均衡器和反向代理,它能够帮助我们在多个应用服务器之间分发 HTTP 请求。本文将详细介绍 mod_jk 的不同版本及其与 ...

    整合apache与tomcat所需要的模块,各版本mod_jk

    5. **配置虚拟主机**:在Apache的虚拟主机配置中,使用`JkMount`指令将动态请求转发到相应的Tomcat实例。 **功能特性:** 1. **负载均衡**:`mod_jk`可以配置为将请求分散到多个Tomcat实例,实现负载均衡,提高系统...

    Tomcat+apache+mod_jk实现负载均衡和集群配置

    在本文中,我们将深入探讨如何使用Apache Web服务器结合Tomcat应用服务器,以及mod_jk模块来实现负载均衡和集群配置。 首先,我们来安装Apache。可以从官方网站下载Apache HTTP Server的安装包,例如Apache 2.2.x-...

    apache2 通过mod_jk与tomcat配置

    总之,通过Apache2的mod_jk模块,我们可以实现Web服务器和应用服务器的无缝集成,优化资源分配,提升网站性能。配置过程虽然涉及多个步骤,但只要按照上述指导操作,就能顺利完成。在实际部署中,还需要根据具体环境...

    tomcat集群-Apache2.2.4+And+mod_jk.so+tomcat配置文件

    【描述】中的"apache的安装包和链接tomcat的插件,以及tomcat和apache的配置文件"表明,你需要配置Apache服务器(版本2.2.4)和mod_jk模块来与多个Tomcat实例(如tomcat3、tomcat2、tomcat1)进行通信。此外,还需要...

    Apache2.2.19 + Tomcat-6026+ mod_jk-apache-2.2.xx.so 配置集群

    本配置指南将详细讲解如何在Apache 2.2.19版本上集成Tomcat 6.0.26,并使用mod_jk模块实现Apache与Tomcat之间的通信。 首先,了解Apache和Tomcat集群的基础概念。集群是一种将多台服务器连接在一起,以提供更高可用...

    Apache2.0.43 + Tomcat4.1.18 + mod_jk-2.0.43.dll整合

    - **配置连接**:通过修改Apache的httpd.conf文件加载mod_jk模块并配置虚拟主机,指向Tomcat服务 ### 二、环境变量配置 #### 1. Java_HOME 设置Java环境变量为C:\j2sdk1.4.1,确保系统能识别Java环境。 #### 2. ...

    apache+tomcat集群03 mod_JK

    4. **配置Apache的虚拟主机**:在Apache的虚拟主机配置中,设置JKMount指令,指定哪些URL路径由mod_JK处理并转发到相应的Tomcat实例。 5. **测试和优化**:启动所有服务,进行测试,确保请求能正确地被分发。根据...

Global site tag (gtag.js) - Google Analytics