本文主要讲述如何在windows平台上搭建一个用于java平台的web服务器过程。
整个过程中用到的软件包括:Apache的http服务器、JDK6、Tomcat 6、mod_jk。实现的目标是配置完成一个由Apache担当80端口的web服务器,Tomcat担任Java的Web应用容器,两者通过mod_jk的连接完成对外提供服务的工作。现在我们开始配置过程:
1、下载Apache的http服务器
下载地址:http://httpd.apache.org,在本文编写时,httpd的服务器当前最新发行版本是2.2.11(我们称2.2版本),我们选在windows平台的二进制版本下载,我们最好选择Win32 Binary including OpenSSL 0.9.8i (MSI Installer) ,因为这个版本只是SSL,也许你将来需要提供SSL的功能,所以这里有备无患。
2、安装Apache的http服务器
这个步骤的任务非常简单,对于windows平台,你只需要按照安装向导一步一步完成安装任务就可以了,在过程你可以会被要求填写一些信息,比如服务器的域名(你可以根据你的服务器实际的域名填写,如果你只是测试,并没有申请过域名的话,你可以随便填写一个),管理员的电子邮件等等。在这个过程中记住你的软件的安装目录,接下来的步骤中我们将会用到这个目录。我们将这个安装过程中的每一步截图记录如下:
3、下载安装JDK6
下载地址:http://java.sun.com/javase/downloads/?intcmp=1281,下载Java SE Development Kit (JDK) 6 Update 11。
安装JDK的过程非常简单,你只需要依次下一步就可以完成任务了,安装过程注意选择安装目录,我们这里假设安装目录为d:/java/jdk1.6。
4、下载Tomcat 6
下载地址:http://tomcat.apache.org/download-60.cgi,选择windows平台的tomcat软件,你可以选在Windows Service Installer 版本。
5、安装Tomcat 6
这个过程中也是近乎傻瓜型的,这里将Tomcat 6的安装过程截图如下:
6、下载和配置mod_jk
下载地址:http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.27/mod_jk-1.2.27-httpd-2.2.10.so,这里大家需要注意一点,你应该更具你的apache的版本来选择mod_jk的版本。当你现在so文件之后,接下来的任务就是要将so模块配置到apache服务器当中去。
首先将mod_jk-1.2.27-httpd-2.2.10.so复制到apache的安装目录中modules目录中,你会在这个目录(C:/Program Files/Apache Software Foundation/Apache2.2/modules)中看到很多的so文件。然后打开apache的配置文件(C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf),在其中找到包含LoadModule字样的内容,在这些内容的下方添加一个新的LoadModule,其目的是为了给Apache增加一个新的模块功能,这个模块就是mod_jk,它的目的是为了让apache能够和tomcat进行协作。在LoadModule下方添加如下一行内容:
LoadModule jk_module modules/mod_jk-1.2.27-httpd-2.2.10.so
mod_jk模块要正确工作,必须知道被它操控的tomcat服务器在哪里,而这个内容需要被配置在另外一个文件中,现在我们将这个文件命名为workers.properties,将这个文件放在httpd.conf相同的地方(当然你可以放在任何你希望的地方),文件中的内容如下:
ps=/
worker.list=ojava
worker.ojava.port=8009
worker.ojava.type=ajp13
worker.ojava.host=localhost
worker.ojava.lbfactor=1
有了这个配置文件之后,我们必须要告诉mod_jk这个文件的存在,所以需要再次打开httpd.conf文件,在我们刚刚添加的LoadModule这一行的下方添加如下一行内容:
JkworkersFile conf/workers.properties
好了,现在你已经完成了apache和tomcat的通讯方式和参数的配置,接下来需要做的就是配置哪个web应用需要由apache转交给tomcat进行处理,我们以虚拟主机为例:
我们为apache增加新的虚拟主机的配置,首先修改httpd.conf的配置,找到#Include conf/extra/httpd-vhosts.conf,将这一行前面的#去除掉,让这一行的配置生效。然后我们找到配置文件中如下的内容:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
将其修改为如下的内容:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
其目的是为了给apache配置虚拟主机,指定其他目录作为web网站的目录时产生无权访问的错误。
接着打开C:/Program Files/Apache Software Foundation/Apache2.2/conf/extra/httpd-vhosts.conf,去掉里面已经配置的虚拟主机部分的内容,如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.ojava.net
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host.ojava.net"
ServerName dummy-host.ojava.net
ServerAlias www.dummy-host.ojava.net
ErrorLog "logs/dummy-host.ojava.net-error.log"
CustomLog "logs/dummy-host.ojava.net-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.ojava.net
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host2.ojava.net"
ServerName dummy-host2.ojava.net
ErrorLog "logs/dummy-host2.ojava.net-error.log"
CustomLog "logs/dummy-host2.ojava.net-access.log" common
</VirtualHost>
添加我们自己配置的信息,配置内容如下:
<VirtualHost *:80>
ServerAdmin steven@ojava.net
DocumentRoot "e:/ojava/web_root"
ServerName www.ojava.net
JkMount /* ojava
ErrorLog "logs/www.ojava.net-error.log"
CustomLog "logs/www.ojava.net-access.log" common
</VirtualHost>
到这里我们已经将对www.ojava.net域名网站的访问请求转交给了tomcat进行处理了。此时如果你需要在tomcat中进行虚拟主机的配置,那么你可以继续修改tomcat的配置文件,如果你不需要,那么到这里,你已经完成了所以的配置过程。恭喜你,现在重新启动apache和tomcat,可以测试了,成功了吗?有问题欢迎交流。