今天尝试了下用apache+tomcat映射多个项目。终于成功了,记录一下!
Apache和tomcat整合步骤:
1.下载Apache2.0.53,并安装在c:\apache目录下,端口为80
2.下载Tomcat5.5.9,并安装在c:\tomcat目录下,端口为8080
3.从apache网站下载jk模块."mod_jk-1.2.10-apache-2.0.53.so"(下载地址 ),安装在c:\apache\modules下.
4.在c:\apache\modules下新建一个配置文件workers.properties,其内容为
worker.list= worker1[,work2...]
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=3
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.recycle_timeout=300
注明:“worker.worker1.host=localhost”为tomcat所在机器名或ip
“worker.worker1.port=8009”tomcat的jk工作端口
5.修改c:\apache\conf\httpd.conf配置文件
在文件的末尾加上以下指令
LoadModule jk_module modules/mod_jk-1.2.10-apache-2.0.53.so
JkWorkersFile modules/workers.properties
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /*/servlet/* worker1
JkMount /*.jsp worker1
#要设置虚拟路径,否则图片无法正常显示
Alias /voteadmin "E:/ontopvoteadmin/WebModule"
<Directory "E:/ontopvoteadmin/WebModule">
Options Indexes MultiViews
AddOutputFilter Includes html
AllowOverride None
Order allow,deny
Allow from all
</Directory>
配置多个项目:
如果是一台主机配置多个项目,并且采用一个ip映射多个域名的形式,如ip为:192.168.1.132,项目有两个分别为:web1,web2 都在E盘下的workspace目录下,也就是E://workspace/web1和E://workspace/web2 。比如我们要达到能在ie地址栏里输入:和能访问项目的效果。那么,要进行下面的设置。
首先是tomcat,在tomcat的安装目录下的conf文件夹里有个配置文件server.xml,打开这个文件,找到<Engine>标签,里面有个<Host>标签,也就是虚拟机的意思。我们要设置几个项目,就需要几个<host>,<host>标签里的<context>就对应一个项目。
<Host debug="0" appBase=""
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E://workspace/web1 " debug="5" reloadable="true" crossContext="false">
……
</Context>
</Host>
<Host debug="0" appBase=""
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E://workspace/web2 " debug="5" reloadable="true" crossContext="false">
……
</Context>
</Host>
这样tomcat就配置完成了。
下面配置Apache,在Apache安装目录下的conf文件中httpd.conf配置文件,我们也要配置虚拟机:
找到VirtualHost,这里的这个标签要对应server.xml中的<host>标签。
<VirtualHost web1:80>
ServerAdmin 454545@qq.com
DocumentRoot "E://workspace/web1"
ServerName 127.0.0.1
ErrorLog logs/error.log
CustomLog logs/access.log common
</VirtualHost>
</VirtualHost>
<VirtualHost web2:80>
ServerAdmin 454545@qq.com
DocumentRoot "E://workspace/web2"
ServerName 127.0.0.1
ErrorLog logs/error.log
CustomLog logs/access.log common
</VirtualHost>
再找到Listen ,即监听,改为:
Listen 127.0.0.1:80
Listen 192.168.1.134:80
还有一点要注意,因为现在是将web1和web2两个域名映射到ip 192.168.1.132上,而现在还没有做相关的映射工作,所以还要设置一个重要的文件Hosts文件,这个文件是计算机自带文件,负责ip地址的映射,如果是win XP系统,host文件所在的目录为:C:\WINDOWS\system32\drivers\etc\Hosts,用记事本打来,发现里面有一行代码:127.0.0.1 localhost,这就是为什么localhost能代表本机的意思。127.0.0.1是个特殊的ip只能代表本机,而且不能做域名映射。所以我们用的内网ip进行映射,我的机子是192.168.1.132。所以加上两行代码:
192.168.1.132 web1
192.168.1.132 web2
保存。重启apache和tomcat执行和就可以了。