如何无法导入org.apacheApache mod

apache怎么添加扩展模块_百度知道Windows下Apache+Tomcat做简单负载均衡--使用mod_proxy实现 - CN.programmer.Luxh - 博客园
太白枝头看,花开不计年,杯中浮日月,楼外是青天。
posts - 191, comments - 228, trackbacks - 0, articles - 0
  Apache作为前端的Web服务器,将客户端的请求分流到后端的多个Tomcat应用服务器。
  1、准备环境
    1)确保已安装好不低于1.5版本的JDK,并配置好相应的环境变量
    2)下载Apache HTTP Server
      2.1)windows版本下载地址:  我下载的是:httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
      2.2)安装Apache HTTP Server,选择典型安装就行了。在安装界面出现Server Information界面时,需要填写Network Domain、Server Name和Administrator's Email Address,我只是在自己的机器上配置,所以我就按如下填写了。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
        填写好之后,一路Next。
      2.3)检查Apache HTTP Server是否安装成功,在浏览器输入 &如果出现下面的页面即可。
&&&&&&&&&&&&&&&&&&&&&&
    3)准备两个Tomcat应用服务器
      我这里使用的是apache-tomcat-7.0.33.zip
      解压后分别取名tomcat-7-1和tomcat-7-2
                
  2、配置Apache HTTP Server负载均衡
    1)修改Apache HTTP Server安装路径conf目录下的httpd.conf文件,找到以下内容,去掉前面的#注释,启用mod_proxy模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
    mod_proxy  提供HTTP/1.1的代理/网关功能支持
    mod_proxy_ajp  mod_proxy的扩展,提供Apache JServ Protocol支持
    mod_proxy_balancer  mod_proxy的扩展,提供负载均衡支持
    mod_proxy_connect  mod_proxy的扩展,提供对处理HTTP CONNECT方法的支持
    mod_proxy_ftp  mod_proxy的FTP支持模块
    mod_proxy_http  mod_proxy的HTTP支持模块
    2)在httpd.conf文件的最后面添加以下内容
ProxyRequests Off
&proxy balancer://cluster&
BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1
BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2
    ProxyRequests Off  使用反向代理
    BalancerMember  把服务器添加到负载均衡组
    loadfactor  负载比例分配,上面的设置是按1:1的比例给两台服务器分配请求,loadfactor的值是1-100之间
    因为是在同一台机器上,所以我把其中一个应用服务器tomcat-7-2的AJP协议端口改为9009,怎么改在后面tomcat的配置中会说,在不同的机器上无需修改。route也要和各自的应用服务器配置的引擎一致
    3)找到httpd.conf文件中的Include conf/extra/httpd-vhosts.conf,去掉前面的#注释,导入虚拟主机配置文件。修改后如下
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
    4)修改conf目录下extra目录中的httpd-vhosts.conf文件,在文件最后添加以下内容,将80端口的请求转发给负载均衡代理处理器
&VirtualHost *:80&
ServerName localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
&/VirtualHost&
  3、配置Tomcat的server.xml文件
    1)因为是在同一台机器上,所以将其中一个应用服务器tomcat-7-2的端口做如下修改
    1.1)找到:
&Server port="8005" shutdown="SHUTDOWN"&
      修改成:
&Server port="9005" shutdown="SHUTDOWN"&
    1.2)找到:
&Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /&
      修改成:
&Connector port="9080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="9443" /&
    1.3)找到:
&Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /&
      修改成:
&Connector port="9009" protocol="AJP/1.3" redirectPort="9443" /&
    2)配置引擎Engine
    2.1)找到:
&Engine name="Catalina" defaultHost="localhost"&
      tomcat-7-1修改成如下内容,将tomcat-7-1配置成集群成员
&Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1"&
      tomcat-7-2修改成如下内容,将tomcat-7-2配置成集群成员
&Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2"&
    3)配置一个集群环境中的session复制
    3.1)找到:
&Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/&
    去掉注释,在tomcat-7-1中修改为:
&Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"&
&Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/&
&Channel className="org.apache.catalina.tribes.group.GroupChannel"&
&Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/&
&Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5001"
selectorTimeout="100"
maxThreads="6"/&
&!--因为tomcat都在同一台机器上,这里的端口设置成5001--&
&Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&
&Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/&
&Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&
&Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&
&Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/&
&/Channel&
&Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*/..*/..*/..*/..*/..*/..*/..*/."/&
&Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/&
&ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&
&/Cluster&
      在tomcat-7-2中修改为:
&Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"&
&Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/&
&Channel className="org.apache.catalina.tribes.group.GroupChannel"&
&Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/&
&Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5002"
selectorTimeout="100"
maxThreads="6"/&
&!--因为tomcat都在同一台机器上,这里的端口设置成5002--&
&Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&
&Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/&
&Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&
&Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&
&Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/&
&/Channel&
&Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*/..*/..*/..*/..*/..*/..*/..*/."/&
&Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/&
&ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&
&/Cluster&
  4、在应用程序的web.xml中加入&distributable/&元素使应用程序支持集群
  5、放入session中的对象需要实现序列化接口
  6、测试,建立一个web项目叫webapp。
    1)在index.jsp中,把一个值存到session中
&%@ page language="java"
pageEncoding="UTF-8"%&
request.getSession().setAttribute("myName", "Luxh");
System.out.println("set value success!");
&!DOCTYPE html&
&title&My JSP 'index.jsp' starting page&/title&
&meta http-equiv="content-type" content="text/ charset=UTF-8"&
hello,apache and tomcat!
this is index.jsp file.&br&
    2)写一个Servlet,把存在session中的值取出
package cn.luxh.
import java.io.IOE
import java.io.PrintW
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("Hello,Apache and Tomcat!!!!!!!!====="+request.getSession().getAttribute("myName"));
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("&!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"&");
out.println("&HTML&");
out.println("
&HEAD&&TITLE&A Servlet&/TITLE&&/HEAD&");
out.println("
out.print("
This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println("
&/BODY&");
out.println("&/HTML&");
out.flush();
out.close();
    3)配置web.xml
&?xml version="1.0" encoding="UTF-8"?&
&web-app version="2.5"
xmlns="/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd"&
&display-name&&/display-name&
&servlet-name&MyServlet&/servlet-name&
&servlet-class&cn.luxh.servlet.MyServlet&/servlet-class&
&/servlet&
&servlet-mapping&
&servlet-name&MyServlet&/servlet-name&
&url-pattern&/servlet/MyServlet&/url-pattern&
&/servlet-mapping&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
&distributable/&
&/web-app&
    4)将项目打成war包,分别放到tomcat的webapps目录下
    5)启动Apache HTTP Server,启动tomcat-7-1,启动tomcat-7-2
    访问: ,可以看到请求被分发到tomcat-7-1中,并且把值存到session中
      接下来,我们不断访问servlet,可以看到,请求被平均分发到两个应用服务器,并且能从session中取到值。
      接下来,停掉tomcat-7-1,继续不断访问servlet,在剩下的那个tomcat中依然可以取到session中的值mod_headers - Apache 2.2 中文版参考手册
Apache模块 mod_headers
允许通过配置文件控制任意的HTTP请求和应答头信息
headers_module
mod_headers.c
仅在 Apache 2.0 中有效
这个模块提供了一些指令用于控制和修改HTTP请求头和应答头。这些头可以被合并、替换、删除。
由提供的指令几乎可以出现在配置文件的任何部分。并可以封装在中以限制其作用范围。
指令的处理顺序很重要,它取决于指令本身在配置文件中的位置和所属在配置文件中的位置。下面的指令如果颠倒一下顺序将会导致完全不同的结果:
RequestHeader append MirrorID "mirror 12"
RequestHeader unset MirrorID
当前顺序下,MirrorID头不会被设置。若颠倒一下顺序,MirrorID头将被设为"mirror 12"。
可以应用在请求被处理之前或之后。通常的模式是"后处理",也就是在请求处理完毕之后、发送应答之前设置应答头。[原文:when Request Headers are set immediately before running the content generator and Response Headers just as the response is sent down the wire.]在实际工作的服务器上应当始终使用"后处理"模式。
"前处理"模式应当仅仅作为开发者使用的一种测试/调试辅助工具。可以在指令中使用early关键字启用"前处理"模式,此时将在处理请求之前设置请求头。这样就可以模拟各种不同的请求以协助调试。
由于"前处理"模式的指令在将URL映射到文件系统之前就生效了,不能依赖于所请求的路径。所以"前处理"模式的指令只能用在主服务器和虚拟主机部分的配置中,而不能用于&Directory&或&Location&配置段中。
将所有以"TS"开头的请求头复制到应答头中:
Header echo ^TS
在应答中添加一个MyHeader头来包含服务端接受到请求的时间戳和经过多少时间以后才完成对该请求的处理并作出应答。这个头可以让客户端知道瓶颈位于服务端还是位于服务端和客户端之间的线路。
Header add MyHeader "%D %t"
上面的设置将会添加如下应答头内容:
MyHeader: D=3775428 t=256
向Joe问好(Hello):
Header add MyHeader "Hello Joe. It took %D microseconds \
for Apache to serve this request."
上面的设置将会添加如下应答头内容:
MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
当且仅当"MyRequestHeader"出现在请求头中的时候才在应答中发送"MyHeader"头。这个对根据特定的客户端构造特定的应答头很有用。注意,下面的例子需要模块的支持。
SetEnvIf MyRequestHeader value HAVE_MyRequestHeader
Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
如果请求中出现"MyRequestHeader: value"头,应答中将会包含下面的头:
MyHeader: D=3775428 t=256 mytext
配置HTTP应答头
Header [condition] set|append|add|unset|echo header [value] [early|env=[!]variable]
server config, virtual host, directory, .htaccess
mod_headers
这个指令可以替换、合并、删除HTTP应答头。应答头紧跟在内容处理器和输出过滤器完工之后生成,这时候才能对头进行修改。
condition选项可以是onsuccess或always 。它决定了将对哪个内部头(internal header)表进行操作。onsuccess表示"2xx"状态码,always表示所有状态码(包含"2xx")。特别地,如果你想撤销由某个模块设置的头,你应当做做试验,以找到是那个表产生的影响。
该指令执行的动作是由第二个参数决定的。这个参数取值范围如下:
设置新的或修改已经存在的同名应答头。value可以是一个格式字符串。
向同名应答头添加新内容而不修改原来已经存在的旧内容。当向一个已经存在的头添加新值时,将用逗号与原来已经存在的旧值分开。这是向HTTP头赋以多个值的标准方法。
向应答中添加新的头而不修改原来已经存在的头(即使同名)。这将可能导致有两个或更多的应答头具有相同的名字,从而导致意想不到的后果,所以通常不使用这种方法而用append来代替它。
去除应答中同名的头(若存在的话)。如果有多个头同名,则会被全部去除。value必须被省略。
将请求中同名的头复制到应答中。header可以是一个。value必须被省略。
这个参数后面必须要跟一个header名字(结尾的冒号可要可不要)。set, append, add, unset是大小写无关的。用于echo的header是大小写敏感的,并且可以是一个。
对于add, append, set来说,value是第三个参数。如果value包含空格则必须用双引号(")括起来。value可以是一个普通字符串或包含格式说明符的字符串,value支持下列格式字符串:
%%百分号(%)
%t接收到请求的微秒时间戳(相对于 00:00:00 UCT),外加一个"t="前缀。
%D从接收到请求到完成对该请求的处理并作出应答共花费了多少微秒,外加一个"D="前缀。
%{FOOBAR}eFOOBAR的内容
%{FOOBAR}sFOOBAR的内容(如果启用了)
"%s"格式符仅在Apache 2.1及以后的版本中可用。它可以代替"%e"以避免"SSLOptions +StdEnvVars"带来的额外开销。如果因为别的原因必须开启"SSLOptions +StdEnvVars",那么"%e"将比"%s"更加合适。
Header后面可以跟一个用于指定生效条件的额外参数(或者用early表示"")。如果在"env=..."参数中指定的存在(或用"env=!..."表示不存在),那么Header指令指定的动作将会生效,否则将不会生效。
除非使用模式,否则Header指令将在应答最后被发送到网络前处理。这意味着可以设置和改写绝大多数应答头,除了自己添加的应答头。
配置HTTP请求头
RequestHeader set|append|add|unset header [value] [early|env=[!]variable]
server config, virtual host, directory, .htaccess
mod_headers
仅在 Apache 2.0 中有效
这个指令可以替换、合并、删除HTTP应答头。请求头将会在内容处理器运行之前被修改。修改的动作由第一个参数决定,其取值范围如下:
设置新的或修改已经存在的同名请求头。
向同名请求头添加新内容而不修改原来已经存在的旧内容。当向一个已经存在的头添加新值时,将用逗号与原来已经存在的旧值分开。这是向HTTP头赋以多个值的标准方法。
向请求中添加新的头而不修改原来已经存在的头(即使同名)。这将可能导致有两个或更多的请求头具有相同的名字,从而导致意想不到的后果,所以通常不使用这种方法而用append来代替它。
去除请求中同名的头(若存在的话)。如果有多个头同名,则会被全部去除。value必须被省略。
这些参数后面必须要跟一个header名(结尾的冒号可要可不要,且大小写无关)。对于add, append, set来说,value是第三个参数。如果value包含空格则必须用双引号(")括起来。对于unset来说则不需要value参数。value可以是一个普通字符串或包含格式说明符的字符串,格式字符串的用法与Header指令一样。
RequestHeader后面可以跟一个用于指定生效条件的额外参数(或者用early表示"")。如果在"env=..."参数中指定的存在(或用"env=!..."表示不存在),那么RequestHeader指令指定的动作将会生效,否则将不会生效。
除非使用模式,否则RequestHeader将在请求被处理之前生效。这样,由浏览器和Apache输入过滤器产生的请求头都可以被该指令处理。apache+mod配置文件_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
apache+mod配置文件
上传于||文档简介
&&当​你​配​置​a​p​a​c​h​e​有​问​题​时​,​可​以​参​考​一​下​~​~​~
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢Linux下Apache安装/增加mod_rewrite模块的方法
字体:[ ] 类型:转载 时间:
如果你的服务器apache还没有安装,那很简单,在编译apache时将mod_rewrite模块编译进去就可以。如果你的apache已经安装好了,现在只想编译出mod_rewrite.so模块,在apache中进行加载,下面介绍这个方法。
以Fedora操作系统进行举例: 1)首次安装apache,在编译时增加——enable-rewrite选项。 如。/configure ——prefix=/usr/local/apachel ——enable-so ——enable-mods-shared=all ——enable-rewrite ——enable-cache 2)增加mod_rewrite模块 # find . -name mod_rewrite.c //在apache的源码安装目录中寻找mod_rewrite.c文件 # cd PATH/to/mod_rewrite.c //进入包含mod_rewrite.c文件的目录 # /usr/local/apache/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你当前正在使用apache的bin目录里 # /usr/local/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.la 如果没有什么错误的话,应该在你的apache的modules目录中编译出一个mod_rewrite.so文件。 编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下: LoadModule rewrite_module modules/mod_rewrite.so 这时,你的apache应该已经支持rewrite了。 vicos注:完成之后,记得重启服务器apache.
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 libapache2 mod php5 的文章

 

随机推荐