当前位置:首页 » 网页前端 » apache部署web项目
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

apache部署web项目

发布时间: 2022-09-05 07:43:27

A. 一个Web应用部署到Tomcat服务器上之后的目录结构是怎样的

就是把你的Web-Root目录下的所有文件编译之后发布到Tomcat的webapps这个文件夹下面来了,其他的目录什么都不变的。项目src下面的java类文件会编译成为.class文件

B. apache 能运行javaweb项目吗

不能单独运行javaweb项目,但可以和tomcat继承来支撑 javaweb项目--说白了就是apache将解析java交给tomcat来解析。

我举一个全站ajax的的建站例子吧。所有页面(包括主页,页眉页脚),静态资源(图片,JS文件,CSS文件等)都放到apache服务器上,当用户访问apache的静态页面时,页面通过ajax请求将请求发送到tomcat服务器,tomcat处理请求返回数据,通过页面里脚本(jquery或者freemark等)处理请求返回的数据将动态数据填充到静态页面里(或者会发起页面跳转请求等操作)。

最后总结下apache功能强大、高效,但并不能支持JSP及servlet,不太适合作为javaweb的处理服务器,但作为静态资源库和文件服务器,apache比起同类的产品强大的多。建议就像我举例的一样混用apache和tomcat来建站。

C. web项目部署到Tomcat出错,无法启动。

方法:

1.找到.project文件,找到里面的<natures>标签,查看是否有下面的代码,没有则复制进去。

Xml代码:

  • <nature>org.eclipse.wst.common.project.facet.core.nature</nature>

  • <nature>org.eclipse.wst.common.molecore.MoleCoreNature</nature>

  • <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>

  • <nature>org.eclipse.jdt.core.javanature</nature>

  • 2.刷新导入的项目

    3.在项目上点击右键,进入Properties配置,点击Project Facets,再点击Convert to faceted form进入属性设置:

D. apache下部置web项目, 改用https访问方式!这要怎么做

首选你需要去CA机构申请一张SSL证书,然后安装部署指南将SSL证书部署到服务器端,即可实现https加密访问了。你可以参考我上传的《 Apache SSL证书部署指南》,我的网站使用的是沃通免费SSL证书。

E. 如何搭建apache+tomcat集群

在实际应用中,如果网站的访问量很大,为了提高访问速度,可以与多个Tomcat服务器与Apache服务器集成,让他们共同运行servlet/jsp组件的任务,多个Tomcat服务器构成了一个集群(Cluster)系统,共同为客户提供服务。集群系统具有以下优点:

高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。
负载平衡:即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

原理:JK插件的负载均衡器根据在worker.properties中配置的lbfactor(负载平衡因数),负责为集群系统中的Tomcat服务器分配工作负荷,以实现负载平衡。每个Tomcat服务器间用集群管理器(SimpleTcpCluster)进行通信,以实现HTTP回话的复制,比如Session。

下面我们在一台机器上配置一个Apache和两个Tomcat服务器集群:

2.安装Apache,安装两个Tomcat,并把一个测试项目放到两个Tomcat的webapps目录下以便以后测试。

3.把mod_jk.so复制到<apache_home>/moles下。

4.在<apache_home>/conf目录下创建:workers.properties文件:



"pln">worker "pun">. "pln">list "pun">= "pln">worker1 "pun">, "pln">worker2 "pun">, "pln">loadbalancer "com">#apache把Tomcat看成是工人,loadbalancer是负载均衡器

worker.worker1.host=localhost#Tomcatworker1服务器
worker.worker1.port=8009#Tomcat端口
worker.worker1.type=ajp13#协议
worker.worker1.lbfactor=100#负载平衡因数

worker.worker2.host=localhost#Tomcatworker2服务器
worker.worker2.port=8009#因为在一台机器上所以端口不能一样
worker.worker2.type=ajp13#协议
worker.worker2.lbfactor=100#设为一样代表两台机器的负载相同

worker.loadbalancer.type=1b
worker.loadbalancer.balanced_workers=worker1,worker2
worker.loadbalancer.sticky_seesion=false
worker.loadbalancer.sticky_session_force=false

说明:1.worker.loadbalancer.sticky_seesion如果设为true则说明会话具有“粘性”,也就是如果一个用户在一个Tomcat中建立了会话后则此后这个用户的所有操做都由这个Tomcat服务器承担。集群系统不会进行会话复制。如果设为false则下面的 sticky_session_force无意义。

2.sticky_session_force:假设sticky_session设为true,用户会话具有了粘性,当当前Tomcat服务器停止服务后,如果sticky_session_force为true也就是强制会话与当前Tomcat关联,那么会报500错误,如果设为false则会转到另外的Tomcat服务器。

5.修改<apache_home>/conf/httpd.conf文件,在文件后面加上:



"com">#Tomcat集群配置
"com">LoadMolejk_molemoles/mod_jk.so
JkWorkersFileconf/workers.properties
#我的工人们
JkLogFilelogs/mod_jk.log
#日志文件
JkLogLeveldebug
#tomcat运行模式
JkMount/*.jsploadbalancer
#收到.jsp结尾的文件交给负载均衡器处理
JkMount/helloapp/*loadbalancer
#收到helloapp/路径交给负载均衡器处理

6.修改两个Tomcat的conf/service.xml文件。

6.1首先要修改AJP端口,确保他们与workers.properties中配置的一样

例如按我们上面的配置,只需要把Tomcat2中的AJP端口该为8109即可。

6.2此外在使用了loadbalancer后,要求worker的名字与Tomcat的service.xml中的Engine元素的jvmRoute属性一致,

例如worker1修改为: <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">

6.3另外,如果两台Tomcat服务器装在一台机器上,必须确保他们的端口没有冲突,Tomcat中一共配置了三个端口:

<Server port="8005" shutdown="SHUTDOWN">

<Connector port="8080" .../>

<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />

把其中一个该了让它们不一样就行了。

完成了以上步骤我们的集群算是基本完成了,打开Apache和两个Tomcat 浏览器进入:localhost/demo/ 能够正确访问。

为了测试,我们写一个jsp文件:test.jsp



"tag"><html>
<head>
<title>test</title>
</head>
<body>
<%
System.out.printfln("calltest.jsp");
%>
session:<%=session.getId()%>
</body></html>

把它放到两个Tomcat中的demo项目中,浏览器访问这个页面,每次访问只在一个Tomcat控制台打印语句。

然而页面中的Session Id是会变的。这种情况下如果一个用户正在访问时,如果跳到另一个Tomcat服务器,那么他的session就没有了,可能导致错误。

7.配置集群管理器

如果读者对HttpSession有了解应该知道,用户的会话状态保存在session中,一个浏览器访问多个网页它们的请求始终处于一个会话范围中,因此SessionID应该是不变的。

以上我们看到的浏览器中的SessionID不同,因为转到另一个Tomcat后当前会话就结束了,又在另一个服务器上开启了一个新的会话。那么怎么让多个Tomcat服务器共享一个会话呢?

为了解决上述问题,我们启用Tomcat的集群管理器(SimpleTcpCluster):

7.1修改Tomcat1和Tomcat2的servlet.xml文件,在Engine元素中加入以下Cluster元素



"tag"><Cluster "pln"> "atn">className "pun">= "atv">"org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">

<ManagerclassName="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>

<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">
<MembershipclassName="org.apache.catalina.tribes.membership.McastService"
bind="127.0.0.1"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>

<ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/>
<ValveclassName="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListenerclassName="org.apache.catalina.ha.session."/>
<ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

关于Cluster的相关介绍参照:<tomcat-home>webappsdocscluster-howto.html <tomcat-home>webappsdocsconfigcluster.html

7.2分别修改Tomcat1和Tomcat2 demo项目的web.xml文件,在后面加入<distributable>元素



"tag"><web-app>
"pln">...
"tag"><distributable/>
</web-app>

如果一个web项目的web.xml文件中指定了<distributable/>元素那么Tomcat服务器启动这个Web应用时,会为它创建由<Cluster>元素指定的会话管理器,这里我们用的是DeltaManager,他们把会话从一个Tomcat服务器复制到集群中另一个Tomcat服务器。

7.3重新启动两个Tomcat,发现Tomcat控制台还是依次打印出Call test.jsp 页面中的SessionID却不变了。测试完成。

重要说明:(1).如果项目要发布到集群上,那么与会话有关的类需要实现java.io.Serializable序列化接口。

(2).集群中Tomcat间用组播方式进行通信,如果机器上有多个网卡则可能导致组播失败,解决的办法是<Cluster>元素的<Membership>元素配置bind属性,它用于明确知道组播地址:

<Membership className="org.apache.catalina.tribes.membership.McastService"bind="127.0.0.1".../>

(3).如果集群较小,可以采用DeltaManager会话管理器,如果多的话建议使用BackupManager

(4).<Membership>的address设为"228.0.0.4",运行时须确保机器联网能访问到该地址,否则可能运行失败。

F. Java web 中如何实现动静态分离部署。

这个容器本身就有这个功能的,只要部署项目后,会在容器的响应文字保存下所有的静态页面,在另外一个位置保存所有文件,之后会优先加载静态的。

如:tomcat下work路径下的都是静态的。

tomcat实际编译路径”webapps“中保存的是所有的。

G. apache如何发布两个web项目

用虚拟主机模式,开设两个站点。
如果不会配置,你用护卫神·apache大师就可以了,一键安装apache+php+mysql+ftp,支持开设无限个站点。