當前位置:首頁 » 網頁前端 » 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,支持開設無限個站點。