apache2 和 tomcat5.5 集成及虚拟主机配置
想起以前 tomcat 还没配过虚拟主机,便想试试,就随手集成了 apache2。把配置过程记录在这里。
安装 apache2、JDK、tomcat 就不写了,查看文档吧。
apache2 要整合 tomcat 需要用到 mod_jk。Ubuntu 下安装 mod_jk 很简单:
$ sudo apt-get install libapache2-mod-jk
可以查看一下这个包安装后产生的配置文件:
$ dpkg -L libapache2-mod-jk
1 2 3 4 5 6 7 8 | ...... /etc /etc/libapache2-mod-jk /etc/libapache2-mod-jk/workers.properties /etc/apache2 /etc/apache2/mods-available /etc/apache2/mods-available/jk.load ...... |
配置 workers.properties 文件,修改其中的 workers.tomcat_home 和 workers.java_home 字段,改成正确的路径。例如,我的:
1 2 | workers.tomcat_home = /home/belltoy/dev/apache-tomcat-5.5.25/ workers.java_home = /opt/jdk1.6.0_05/ |
workers.properties 文件默认已经配置了一个 worker,名字是 ajp13_worker,如下:
1 2 3 4 5 6 7 8 | worker.list=ajp13_worker worker.ajp13_worker.port=8009 #tomcat默认开了8009商品。根据实际情况适当修改。 worker.ajp13_worker.host=localhost #tomcat服务器所在的主机 worker.ajp13_worker.type=ajp13 #apache2 连接 tomcat 的协议,默认为 ajp13 worker.ajp13_worker.lbfactor=1 #负载均衡选项。 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=ajp13_worker |
在 /etc/apache2/mods-available 目录下增加一个文件 jk.conf,内容如下:
1 2 3 4 5 6 | JkWorkersFile /etc/libapache2-mod-jk/workers.properties #指定 mod_jk 的workers.properties 文件的位置 JkLogFile /var/log/apache2/mod_jk.log # 指定mod_jk的日志文件位置 JkLogLevel info # 指定od_jk的日志级别 JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" # 指定od_jk的日志格式 JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # 指定od_jk的选项 JkRequestLogFormat "%w %V %T" # 指定od_jk的请求日志格式,也是写在JkLogFile文件里 |
然后先禁用 mod_jk,再重新启用,这样 Ubuntu 自带的 apache2 工具会自动将 jk.conf 也放到启用目录 /etc/apache2/mods-enabled/ 下。命令:
$ sudo a2dismod jk $ sudo a2enmod jk
假设虚拟主机名取为 jspproj.belltoy。
在 /etc/hosts 文件中添加本地主机名:
127.0.0.1 jspproj.belltoy
添加 apache2 下的虚拟主机配置
在 /etc/apache2/sites-available 目录下添加一个虚拟主机配置。配置如下:
文件名可以随便取,如:jspproj
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <VirtualHost *> # 匹配的URL将转给 tomcat 处理 JkMount /servlet/* ajp13_worker JkMount /*.jsp ajp13_worker JkMount /*.do ajp13_worker JkMount /* ajp13_worker ServerAdmin admin@localhost ServerName jspproj.belltoy CustomLog /var/log/apache2/jspproj.belltoy-access.log combined DocumentRoot /home/belltoy/www/jspproj/ <Directory /home/belltoy/www/jspproj/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost> |
启用jspproj:
$ sudo a2ensite jspproj重新启动 apache2:
$ sudo /etc/init.d/apache2 restart
配置 tomcat5.5
在 tomcat 安装目录的 conf/server.xml 文件中 <Engine> 里增加一个虚拟主机的配置:
1 2 3 4 5 6 | <Host name="jspproj.belltoy" appBase="/home/belltoy/www/jspproj/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/home/belltoy/www/jspproj/" reloadable="true" crossContext="true" /> </Host> |
启动 tomcat,在浏览器访问 http://jspproj.belltoy/ 就可以访问 /home/belltoy/www/jspproj/ 目录下的 jsp 应用了。
在jsp的概念中,一个主机<Host>下可以有多个 webapp,默认的 webapp 就是 path 为空的 <Context> 指定的目录。如果这里不指定 path 为空的<Context>,tomcat默认会用 appBase 指定的目录下的 ROOT 目录作为默认的 webapp。
12月 13th, 2009 at 21:42
欣赏了,很好,也看下我的好不。
回复