Total Pageviews

Wednesday 11 January 2012

linux下整合apache和tomcat以及虚拟主机的配置

apache是个性能很强的web服务器,而tomcat是开源的jsp容器。在实际的j2ee项目部署中,可以和好的利用两者的特性,将apache和tomcat整合起来,主要的好处有:
1,将apache作为服务器,将静态页面的处理交给它,很好的利用了apache,提高系统的整体性能。
2,可以通过一些连接技术手段,将jsp请求转发到多个tomcat容器,可以做到负载均衡。
下面讲述具体的配置过程
需要的软件:
apache 服务器 httpd-2.2.11
apache
tomcat  6.0.10
apache tomcat连接器 tomcat-connectors-1.2.27
在www.apache.org 开源网站上可以下到相关的包
步骤:
一,安装apache
在linux默认安装中,一般都装了apache,可以先删除apache,尽量使用最新版本。如果机器自带的版本不算太老,也可以不删,只是注意:apache默认安装在/etc/httpd中,相应的配置路径也应该改为此路径。
安装apache:
在apache所在文件夹下打开终端
# tar xzvf httpd-2.2.0.tar.gz
# cd httpd-2.2.0
# ./configure --prefix=/usr/local/apache2 --enable-so  
# make
# make install
安装结束后,在/usr/local目录中,会有apache2的目录
二,安装tomcat
在tomcat所在文件夹下打开终端
# cp apache-tomcat-5.5.12.tar.gz /usr/local/
# cd /usr/local
# tar xzvf apache-tomcat-5.5.12.tar.gz
# ln -s apache-tomcat-5.5.12 tomcat
三,编译连接器
这里面用jk方式链接apache和tomcat,具体关于apache和tomcat的连接方式,请查看相关文档
在下载的连接器所在的目录打开终端
# cd jakarta-tomcat-connectors-1.2.15-src/jk/native
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make
# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/
这样,生成的用于连接的文件mod_jk.so拷贝到了/usr/local/apache2/modules/下面,记得这个目录是你apache安装所在的目录
四,配置conf文件,加入连接器
在/usr/local/apache2/conf/下面建立两个配置文件mod_jk.conf和workers.properties。
# vi mod_jk.conf
添加以下内容:
# 指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /usr/local/apache2/conf/workers.properties
# Where to put jk logs
JkLogFile /usr/local/apache2/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions+ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/*worker1
JkMount /*.jsp worker1JkMount *.action Worker1JkMount *.do Worker1
# vi workers.properties
添加以下内容:
# Defining a worker named worker1 and of type ajp13
worker.list=worker1
# Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
具体参数依据实际需要而定
到这一步,apache和tomcat的连接就做好了
接下来就是关于项目的配置了
五,关于conf文件
apache的核心就是conf文件,对于初学者来说,还是比较头痛的一个东西,总之,在摸索中不断的学习,理解它的结构。
conf文件中几个主要的部分
Listen 80 这个是指监听的端口 省略了ip 实际配置过程中,一定要加上
比如你的服务器的ip为192.168.1.2则 修改这一行为 listen 192.168.1.2:80记得要加上80端口号
DocumentRoot 文档根目录 就是你的应用程序的根目录 比如我有一个项目叫test在usr目录下
则把这一行后面的目录改为"/usr/test"
ServerName指的是主机名,或是你的域名,现在大多数的浏览器支持虚拟主机的方式,稍后会讲如何配置虚拟主机。在这里设置你的域名 如 ServerName www.mydomain.com
Directory 目录设置,一般采用默认即可,如果访问拒绝,则看是否是项目目录做了设置,最简单的办法把目录里属性项deny改为allow 其中有一个带参数的directory项,把其目录要改为和DocumentRoot一致,否则可能出现访问拒绝。
上面是关于项目的设置,直接在conf文件中修改即可,但是实际中,一个apache服务器可能会带多个project,也就是上面说的虚拟机方式,一般采用基于名字的虚拟机设置。
apache和tomcat虚拟机设置:
1,在apache中 注销DocumentRoot,ServerName Directory 等行(Directory包括的也是)。
2,把conf文件中的Include conf/extra/httpd-vhosts.conf的注销去掉,这个文件专门用于配置虚拟主机。
3,设置conf文件的listen 为你的ip
4,假设apache的项目在usr/webapps下,项目的域名为www.mydomain.com,并在isp做好了域名解析指向当前服务器的IP
5,打开conf/extra/httpd-vhosts.conf ,添加如下内容
NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin admin@yazhouly.cn
ServerName www.mydomain.com
DocumentRoot "/usr/webapps/test"
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
<Directory "/usr/webapps/test">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
JkMount /servlet/* worker1
JkMount /*.jsp worker1
JkMount /*.action Worker1
JkMount /*.do Worker1
</VirtualHost>
其中最后四行表示关于jsp的内容都转交给tomcat处理,虽然我们在配置连接器的时候,已经配置了,但是在虚拟机设置后,还是要单独加上这几句,其中work就是mod_jk.conf中配置的代理名。
打开tomcat目录conf下面的server.xml
添加主机信息
 <Host name="localhost"  appBase="/usr/webapps/test"
            unpackWARs="true"
            xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/usr/webapps/test" debug="0" reloadable="true" crossContext="true"/>
      </Host>
保存 重新启动apache
在地址栏中输入
www.mydomain.com
就会出现你的网站的首页.(一个基于java的网站)

No comments:

Post a Comment