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

时间:2010-01-21 08:22:35  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:数是 --enalbe-modules="so" 其他根据自己需要安装,windows下面直接安装编译好的二进制版本。具体安装方法很多地方已经有介绍了,这里不赘述,如有需要可以参考 http://httpd.apache.org 或者 chinaunix 的web服务器区精华,唯一一点需要提醒的是,要将 httpd.conf 里面的 [code:1:141851c2a4]#AddDefaultCharset ISO-8859-1[/code:1:141851c2a4] 前面加#注销掉,很多人提问为什么Apach...
  正文:

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" # enableLookuphotoshop/ target=_blank class=infotextkey>ps="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

Tomcat 5 + Apache 2 + mod_jk 2 实现虚拟主机》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/JSP/12100.html


关键字:

关于《Tomcat 5 + Apache 2 + mod_jk 2 实现虚拟主机》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td