第四十六天:Apache整合toncat和resin

小Q:青海长云暗雪山,孤城遥望玉门关;黄金百战穿金甲,不破楼兰终不还。

关于编译安装Apache和JDK·tomcat·resin可以到我JSP和集群架构模块中看哈,不细说了;

两种整合都是需要让Apache调用模块mod_jk.so和mod_caucho.so来对其整合;

-------------------------------Apache整合tomcat----------------------------------

1.简介

apache支持静态页,tomcat支持动态的,比如servlet等。

apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,apache作为转发,将java请求给tomcat处理。

apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。

2.安装编译完Apache·JDK和tomcat后

同样官网下载jakarta-tomcat-connectors-1.2.15-src.tar.gz

3.编译生成mod_jk

# tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz

# 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/

4.配置Apache配置文件(虚拟主机配置文件)

在/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 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

再配置httpd.conf,作以下修改:

将Listen 80 修改为 Listen 127.0.0.1:80

将ServerName 修改为 ServerName LocalHost:80

5.测试

在DirectoryIndex中添加 index.jsp

我的网页放在/var/wwwroot下,所以要修改DocumentRoot

DocumentRoot "/var/wwwroot"
<Directory "/var/wwwroot">
    Options Includes FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
    XBitHack on
</Directory>
<Directory "/var/wwwroot/WEB-INF">    
    Order deny,allow
    Deny from all
</Directory>

增加关于加载mod_jk的语句:

LoadModule jk_module modules/mod_jk.so

Include /usr/local/apache2/conf/mod_jk.conf

6.最后编辑Tomcat的配置文件server.xml,在HOST段中加入:

<Context path="" docBase="/var/wwwroot" debug="0" reloadable="true" crossContext="true"/>

在/var/wwwroot下建立一个index.jsp:2 + 2 = <%= 2 + 2 %>

启动Apache和Tomcat,用浏览器访问http://localhost/,应该可以看到2+2=4了。

----------------------------------Apache整合resin-------------------------------

在安装编译Apache的时候要安装mod_so.c模块,指明支持DSO;

1.如果不支持,或者想重新安装一个新apache,可以用源码来重新编译一个

# ./configure --prefix=/usr/local/apache --enable-module=so

# make

# make install

2.编译mod_caucho.so模块

解压缩resin的源码,(编译RESIN前需要安装JDK,并设置好JDK)

# ./configure --with-apxs=/usr/local/apache/bin/apxs

# make

# make install

如果不知道apxs的路径可以用# ./configure --with-apache=/usr/local/apache

指定apache的路径也可以

3.设置resin.conf

编译resin的配置文件.修改粗体部分

#vi conf/resin.conf

<cluster>     
      <srun server-id="" host="127.0.0.1" port="6802"/>   
</cluster>
#server-id 可以自己定义,resin如果不和apache在同一台机器,host后改为resin的ip,port
#将resin的默认文档目录与apache的DocumentRoot设为一致的目录
<host id="">
      <web-app id=‘/‘ document-directory="/usr/local/apache/htdocs"/>
</host>

启动resin

4.测试

编写一个jsp文件来测试resin是否正常

创建一个文件

#vi /usr/local/apache/htdocs/test.jsp

2 + 2 = <%= 2 + 2 %>

在浏览器中浏览[url]http://localhost:8080/test.jsp[/url]如果能看到2 + 2 = 4

说明resin正常 修改apache设置编译resin成功后会自动修改apache的httpd.conf,加入如下内容,

如果没有自动添加,应该手动添加如下内容

LoadModule caucho_module libexec/mod_caucho.so

ResinConfigServer localhost 6802

<Location /caucho-status>

SetHandler caucho-status

</Location>

重启apache和后端resin再次测试jsp文件和html文件,http://localhost/test.jsp如果可以看到页面,说明配置成功了.

时间: 2024-11-07 12:22:47

第四十六天:Apache整合toncat和resin的相关文章

C#高级编程四十六天----正则表达式

正则表达式 1.定义一个Regex类的实例 Regex regex=new Regex(""); 这里初始化参数就是一个正则表达式,"\d"表示配置数字 2.判断是否匹配 判断一个字符串,是否匹配一个正则表达式,在Regex对象中,可以使用Regex.IsMatch(string )方法. Regex regex = new Regex(@"\d"); bool b1=regex.IsMatch("abc"); //返回值为f

走入计算机的第四十六天(css语法二)

一 属性选择器 E[att]          匹配所有具有att属性的E元素,不考虑它的值.(注意:E在此处可以省略.                 比如"[cheacked]".以下同.)   p[title] { color:#f00; } E[att=val]      匹配所有att属性等于"val"的E元素   div[class="error"] { color:#f00; } E[att~=val]     匹配所有att属性具

武汉第四十六天

实践的快乐,以及说到能够做够做到的快乐 今天,请了假,专门用来陪陪琼琼,本来计划武汉一日游的,但是,天气太热,琼,不能晒太阳,我们,就在宿舍里呆了一天,现在回头来看,这一天,从早上起来,比平常稍微晚一些,早上,在宿舍里看了电影,中午,干脆都没有出宿舍,这样的生活方式是非常不利于健康的,大部分时间都是在躺着,并且,睡得很难受,果然,在最能吃苦的日子里睡太多,且先不说精神上,我尽量不去想工作和学习上的事情,而是,想到对于目前状态能够改进的地方,就立马去做,那么我的状态立刻就发生了微妙的变化,所以,但

创业的第四十六天

最近洗澡的时候,总发现头发总是一小撮一小撮地掉,估计我快要变秃头了,唉. 然而变秃头也是要继续搞下去的了,都到这个时候了,不想走回头路了. 这两天我试了那个<我的世界>,说实话,真的很合我的胃口,好好玩!很有<刀剑神域>的感觉,我之前想做的游戏就是想要有这种感觉!第一版上线之后,我一定要玩个爽,彻彻底底地放松一把才行. 好哒,睡个觉觉先.

第四十六天上课 MySQL高级查询

连接查询:     select * from 表名,表名        #得出的结果成为笛卡尔积                select * from 表名,表名 where 表名.列名=表名.列名 join on连接:  select * from 表名 join 表名        #join连接,结果也是笛卡尔积                 select * from 表名 join 表名 on 表名.列名=表名.列名 联合查询:     select 列名,列名 from 表名

shell学习四十六天----文件系统的空间信息df和du命令

文件系统的空间信息 df命令 df命令提供单行摘要,一行显示一个加载的问价系统的已使用的和可用的空间.其单位视系统而定,有些使用块,有些则是KB.大部分现代实现都支持-k选项,也就是强制使用KB单位,以及-l(小写字母L)选项,仅显示本地文件系统,排除网络加载的文件系统. df命令详解 语法: df [选项] [文件或目录] 用途: 显示一个或多个文件系统内部的inode或空间使用情况 主要选项: -i 显示inode技术,而非空间 -k 显示空间时,以KB为单位,而非块 -l 小写L,仅显示本

爱创课堂每日一题第四十六天- 浮动元素引起的问题和解决办法?

浮动元素引起的问题:(1)父元素的高度无法被撑开,影响与父元素同级的元素(2)与浮动元素同级的非浮动元素(内联元素)会跟随其后(3)若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构解决方法:使用CSS中的clear:both;属性来清除元素的浮动可解决2.3问题,对于问题1,添加如下样式,给父元素添加clearfix样式:    .clearfix:after{content: ".";display: block;height: 0;clear: both;

python学习第四十六天dir( )函数用法

dir( )函数有点像目录的意思,但是他是包含由模块定义的名称的字符串的排序列表.这个列表包含模块中定义的所有模块,变量和函数的名称. 列举其用法 import time content = dir(time) print (content) 输出结果 ['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime'

python第四十六天 数据库总结

1. SQL语句 1.1 数据库 # 增 create database review; # 查 show databases; show create database review; # 查看数据库的创建,默认为 CHARACTER SET latin1 编码 # 改 # 没有专门的改操作,删了重建 alter database review charset utf8; # 将数据库的字符编码改为utf8编码 # 删 drop database review; 1.2 数据表 use rev