1. 程式人生 > >關於在WebLogic伺服器上部署應用時錯誤的累積

關於在WebLogic伺服器上部署應用時錯誤的累積

先貼專案中所引入的jar包:

antlr-2.7.6.jar   aopalliance-1.0.jar  asm-3.1.jar aspectjrt-1.7.0.jar aspectjweaver-1.7.0.jar  axis-1.4.jar  backport-util-concurrent-3.1.jar  cglib-2.2.jar
com.aic.ruleapp-bom-1.0.0.jar  common-2.8.0-v20120911-0500.jar  commons-beanutils-1.8.0.jar  commons-codec-1.4.jar commons-collections-3.2.jar commons-dbcp-1.2.2.jar   commons-discovery-0.5.jar  commons-fileupload-1.2.1.jar  commons-httpclient-3.1.jar  commons-io-1.4.jar  commons-lang-2.4.jar   commons-logging-1.1.1.jar  commons-pool-1.3.jar  core-2.8.0-v20120911-0500.jar  cxf-api-2.4.4.jar  cxf-bundle-2.4.4.jar  cxf-bundle-jaxrs-2.4.4.jar  cxf-rt-bindings-soap-2.4.4.jar   cxf-rt-bindings-xml-2.4.4.jar    cxf-rt-core-2.4.4.jar   cxf-rt-databinding-jaxb-2.4.4.jar   cxf-rt-frontend-jaxrs-2.4.4.jar  cxf-rt-frontend-jaxws-2.4.4.jar    cxf-rt-frontend-simple-2.4.4.jar
cxf-rt-transports-http-2.4.4.jar   cxf-rt-transports-http-jetty-2.4.4.jar   cxf-rt-ws-addr-2.4.4.jar      cxf-rt-ws-policy-2.4.4.jar   dom4j-1.6.1.jar   ehcache-1.5.0.jar   ezmorph-1.0.6.jar   fluent-hc-4.2.1.jar  hibernate-commons-annotations-3.2.0.Final.jar   hibernate-core-3.6.9.Final.jar   hibernate-ehcache-3.6.1.Final.jar    hibernate-jpa-2.0-api-1.0.1.Final.jar     httpclient-4.5.2.jar    httpcore-4.4.4.jar   jackson-core-asl-1.9.9.jar   jackson-mapper-asl-1.9.9.jar   javamelody-core-1.31.0.jar    javassist-3.16.1-GA.jar
javax.ws.rs-api-2.0-m10.jar    javax.xml.rpc-10.0-b28.jar   javax.xml.soap-10.0-b28.jar    jcl-over-slf4j-1.6.4.jar     joda-time-1.5.1-RELEASE69.jar   joda-time-1.6.2.jar
jrobin-1.5.9.jar    jrules-engine-8.0.1.jar    jrules-language-8.0.1.jar    jrules-ruleartifacts-8.0.1.jar   jrules-teamserver-8.0.1.jar   json-4.10.jar   json-lib-2.2.2-jdk15.jar
json-lib-ext-spring-1.0.2.jar    jsr107cache-1.0.jar   jstl-1.2.jar    jta-1.1.jar   log4j-1.2.15.jar   logback-access-1.0.13.jar   logback-classic-1.0.13.jar   logback-core-1.0.13.jar
model-1.0.0.jar   myfaces-api-1.1.5.jar  neethi-3.0.2.jar  ojdbc6-11.2.0.1.0.jar      poi-3.9.jar    poi-ooxml-3.9.jar    poi-ooxml-schemas-3.9.jar     ruleapp-ins-ext-1.5.0.jar
slf4j-api-1.6.4.jar   spring-aop-3.1.3.RELEASE.jar   spring-asm-3.1.3.RELEASE.jar  spring-aspects-3.1.3.RELEASE.jar   spring-beans-3.1.3.RELEASE.jar
spring-context-3.1.3.RELEASE.jar    spring-context-support-3.1.3.RELEASE.jar    spring-core-3.1.3.RELEASE.jar    spring-expression-3.1.3.RELEASE.jar   spring-instrument-3.1.3.RELEASE.jar   spring-jdbc-3.1.3.RELEASE.jar    spring-orm-3.1.3.RELEASE.jar     spring-security-acl-3.1.0.RELEASE.jar   spring-security-config-3.1.0.RELEASE.jar   spring-security-core-3.1.0.RELEASE.jar   spring-security-crypto-3.1.0.RELEASE.jar   spring-security-taglibs-3.1.0.RELEASE.jar   spring-security-web-3.1.0.RELEASE.jar    spring-test-3.1.3.RELEASE.jar    spring-tx-3.1.3.RELEASE.jar     spring-web-3.1.3.RELEASE.jar     spring-webmvc-3.1.3.RELEASE.jar
wsdl4j-1.6.3.jar      wstx-asl-3.2.6.jar    xmi-2.8.0-v20120911-0500.jar   xmlschema-core-2.0.3.jar     xpp3-1.1.2a.jar     xpp3_min-1.1.4c.jar    xstream-1.3.1.jar     jsp-api.jar     servlet-api.jar    stax-api-1.0-2.jar    xmlbeans-2.3.0.jar

先貼一段報錯資訊:

####<Apr 7, 2017 4:08:30 PM CST> <Notice> <StdErr> <kf-ilog> <RuleServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1491552510747> <BEA-000000> <Apr 7, 2017 4:08:30 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
WARNING: Interceptor for {service.ruleapp.meyacom.com}RuleServiceService#{service.ruleapp.meyacom.com}execute has thrown exception, unwinding now
Throwable occurred: org.apache.cxf.interceptor.Fault: Unmarshalling Error: javax/xml/bind/Unmarshaller.unmarshal(Ljavax/xml/stream/XMLStreamReader;Ljava/lang/Class;)Ljavax/xml/bind/JAXBElement;
        at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:808)
        at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:642)
        at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:156)
        at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:109)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
        at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:797)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1626)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1493)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1401)
        at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:648)
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
        at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88)
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
        at $Proxy144.execute(Unknown Source)
        at com.meyacom.rule.web.controller.outinterface.rate.RateRuleOutInterfaceController.executionRateRule(RateRuleOutInterfaceController.java:184)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
        at java.lang.reflect.Method.invoke(Method.java:611)
        at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
        at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
        at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.meyacom.rule.web.filter.SessionFilter.doFilter(SessionFilter.java:80)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at com.meyacom.rule.web.filter.SecurityFilter.doFilter(SecurityFilter.java:51)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at com.meyacom.rule.web.filter.UmAuthenticateFilter.doFilter(UmAuthenticateFilter.java:67)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: java.lang.VerifyError: javax/xml/bind/Unmarshaller.unmarshal(Ljavax/xml/stream/XMLStreamReader;Ljava/lang/Class;)Ljavax/xml/bind/JAXBElement;
        at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:778)
        ... 84 more>

以上報錯資訊關鍵點在於:

   java.lang.VerifyError: javax/xml/bind/Unmarshaller.unmarshal(Ljavax/xml/stream/XMLStreamReader;Ljava/lang/Class;)Ljavax/xml/bind/JAXBElement;
        at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:778)
        ... 84 more>

問題分析: java.lang.VerifyError的錯誤一般都是由於應用中jar吧衝突導致的,即兩個不同的jar中存在一個同名(包括包名)的類,由於weblogic的類載入機制(可參考:http://docs.oracle.com/cd/E11035_01/wls100/programming/classloading.html)導致兩個同名類的載入順序不一致,在使用時可能使用了錯誤的類,所以會丟擲校驗錯誤。解決此類錯誤就需要找到是那些jar包裡面有這個同名類。從報錯中可以看出是org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall()方法往上丟擲來的錯誤,該類位於cxf-rt-databinding-jaxb-2.4.4.jar中,檢視原始碼不難發現是該方法的第一個引數Unmarshaller (javax.xml.bind.Unmarshaller(位於jdk的jar包中))在呼叫unmarshal()方法時報錯,該方法需要的兩個引數是(javax.xml.stream.XMLStreamReader,javax.xml.bind.JAXBElement ) 分別檢視這兩個類都是屬於jdk的jar包中的類,但是由於javax.xml.stream.XMLStreamReader這個類在stax-api-1.0-2.jar也存在。由於該應用配置了優先載入war包中的jar包,導致stax-api-1.0-2.jar中的javax.xml.stream.XMLStreamReader被優先載入,所以此處就出了這個錯。

解決方法: 由於本人環境的原因,直接暴露的剔除調了war包裡面的stax-api-1.0-2.jar這個包。

相關推薦

關於在WebLogic伺服器部署應用錯誤累積

先貼專案中所引入的jar包: antlr-2.7.6.jar   aopalliance-1.0.jar  asm-3.1.jar aspectjrt-1.7.0.jar aspectjweaver-1.7.0.jar  axis-1.4.jar  backport-uti

weblogic在linux伺服器部署應用

  SSH軟體連線伺服器: 伺服器地址:xxx.xxx.xxx.40 使用者名稱:xxxx 密碼:xxxx     新建資料夾,用來放新程式碼版本,後面為程式碼版本號 路徑:/home/weblogic 命令:mkdir wzgcyth_xx

當“伺服器部署多個Web應用”,使用Nginx反向代理配置

當同一伺服器上部署了多個不同的web應用時,可以使用Nginx進行管理配置。 舉個例子:假如 www.aabbccdd.com 站點有好幾個web  App(web應用): finance(金融)、product(產品)、admin(使用者中心)。 訪問這些應用的方式通過

使用Nginx+Uwsgi在CentOS伺服器部署Python Flask應用

寫在開頭        第一次用Flask做Web(也是第一次用Python做Web),在部署的時候遇到了不少問題,現在將過程就下來,供在這方面也有疑惑的人蔘考.(PS:使用Apache+mod_wsgi部署模式的可以參考另一個博主的這篇文章:http://blog.elnm

伺服器處理請求出現未知錯誤伺服器返回的狀態碼為500。的處理方法。

首先,狀態碼500是非已知型別伺服器錯誤,今天發現的是動態載入頁面時的頁面驗證錯誤,因為是動態往頁面中寫html元素,html元素的不規範導致頁面驗證失敗,所以中斷處理請求。 接下來是解決方案,前輩們已經給出了不少了,下面就這些方法談談自己的看法: 一、在頁面檔案的Pa

ant 部署war包到tomcat,weblogic伺服器

最近專案中嘗試了一下ant打包部署。本文前提是你安裝好JDK,設定好環境變數,和安裝好ant。 Java程式碼   <?xml version="1.0"?>   <project  name="test"   basedir="."default=

使用Nginx和Gunicorn在伺服器部署Flask專案

Flask作為一個Web框架雖然自帶Web伺服器,但其Web伺服器主要用於開發階段的測試,在生產環境中應該選擇更專業的Web伺服器。當然在Web框架和Web伺服器之間還需要一個實現了WSGI協議的容器協助Web框架和Web伺服器之間通訊。 常用的WSGI協議容器有Gunicorn和uWSGI,當

在Windows雲伺服器部署javaweb專案

javaWeb專案部署到Windows雲伺服器上 工具 / 材料 方法 / 步驟 建立web專案 & 匯出war包 設定遠端桌面連線資訊 在雲伺服器上安裝JDK(版本必須在1.7以上) Tomcat 的安裝與使用

阿里雲伺服器部署tomcat,並進行訪問測試

    要求將一個專案部署到新買的阿里雲伺服器上。使用xshell遠端連線(連線使用的ip是例項的公網ip)。     在部署配置tomcat之前首先進行JDK的部署,先說明一下,我使用的CentOS7.4.     選擇JDK1.

在ubuntu18.04部署專案遇到的問題總結

因為在實驗室中,有幾臺空閒的機子,我便選了一臺準備做一個本地的伺服器,因為買的阿里雲學生機和之前用於翻牆的機子感覺都不太順手,阿里的學生機配置稍低,翻牆用的伺服器延遲太高。開始在centos和ubuntu中選,因為個人偏好ubuntu,所以裝了ubuntu的機子。 1.安裝JD

如何在 Linux 伺服器部署多個 Tomcat

開發管理專案時多多少少會遇到伺服器不夠用、一個專案分成多個子專案的情況,故研究了一下如何在一臺伺服器部署多個 Tomcat。 具體操作: 1、在 /tomcat/ 下部署多個 tomcat。   2、修改 /etc/profile 檔案末尾,加入如下內容: ##########f

總想自己動動手系列·1·本地和外網(Liunx伺服器部署的web專案)按照自定義的報文格式進行互動(一)

一、準備工作 (1)有一臺屬於自己的雲伺服器,併成功部署和釋出一個web專案(當然,本質上來說Java-Project也沒問題),通過外網IP可以正常訪問該web專案。   需要說明的是:任何web專案,只要成功部署後在外網上能訪問到即可。本案例注重修改web對請求的監聽和過濾的處

關於在Tomcat伺服器釋出專案測試資料的特殊情況解決辦法

今天我寫了個簡單的使用者名稱密碼登入驗證專案給組員,中間用JavaBean測試時起的類名叫User,然後在傳引數的時候一直報錯(我用的DbUtils工具包測的),後來琢磨半天才發現問題出在這兒: 如圖,在我每次寫User的時候開發工具會自動提示剩餘程式碼,然而在這裡它提供的User有三

如何在雲伺服器部署你的web專案和一些遇到的問題

第一次寫部落格,寫的不好的地方請見諒。 1、首先你的雲伺服器一定要開啟 2、然後遠端桌面連線你的雲伺服器(它就像是一臺電腦一樣)通過給你的外網ip地址連線,密碼如果給你了的話你就用給你的密碼登入,如果沒有給密碼就重置密碼(這個可以在你的雲伺服器的管理中心裡面弄),我的是百度雲的,找不到重

在雲伺服器部署你的JAVA WEB專案

第一次在阿里雲伺服器上部署自己的java web專案,從一無所知的小小白到現在略微有一點專案部署經驗的小白(hahahaha),這個過程中真的是一路艱辛,各種頭疼,各種痛苦。但是,不積小流無以成江海,不積跬步無以至千里,現在每一步看似很難的操作和痛苦的學習過程,都是在為自己通往大神之路打基礎做積累。

Express、Nodejs伺服器傳檔案出現Unexpected field

我出現這個問題是因為用了 multer模組   死活讀不到上傳的檔案, 後來查了說是這個模組沒法讀取檔案  於是採用了 connect-multipary 要上傳檔案  不要用multer ! 要上傳檔案  不要用multer !

在雲伺服器部署專案(

1、 購買騰訊雲主機 首先我們先了解一下雲伺服器的概念: 雲伺服器:        高效能高穩定的雲虛擬機器,可在雲中提供彈性可調節的計算容量,不讓計算能束縛您的想象;您可以輕鬆購買自定義配置的機型,在幾分鐘內獲取到新伺服器,並根據您的需要使用映象進行快速的擴容。

在雲伺服器部署Django專案後無法正常顯示網頁的原因

nginx+Django+uwsgi部署專案成功,並且開啟伺服器埠之後可以正常訪問網頁,但是載入不出圖片只有文字,起初以為是因為某些原因網頁尾本被禁用了,後來發現這種問題應該不可能出現,查詢一下相關問題,在https://blog.csdn.net/baidu_35085676/article/de

伺服器部署多個tomcat

1.首先從Apache的官網上下載Tomcat的安裝包。這個就不做介紹了。 2.然後從將下載裝包解析到相應的目錄下,並將其複製為兩個。這裡將其區分為Tomcat1,Tomcat2。 3.接著配置環境變數。計算機>屬性>高階系統設定>環境變數。 然後在系統變數中配置

利用 apache2 在多個伺服器部署多個專案實踐

一、背景 應專案需求,要在兩個遠端伺服器上利用 apache2 部署多個專案(前後端分離): Server (Nodejs/Koa2) Android APP、Apple APP (ionic3) 現將部署過程及遇到的問題記錄下來。 二、伺服器配置說明