2014-05-19 27 views
0

我正在嘗試將Grails 2.2.3項目部署到生產中,並且存在URL問題。 我在Apache中設置了反向代理,並且有http://example.com - 例如。以下Grails:如何從生產網址中刪除AppName

grails.serverURL = "http://example.com/" 

,並在application.properties設置:在Config.groovy

我設置以下屬性

app.context=/ 

但是我所有的資源和鏈接的總參考

http://example.com/AppName/... 

如何我是否從資源和li中刪除應用程序名稱(「AppName」)? nks參考?資源

例如:環境

<r:require modules="bootstrap"/> 
<g:javascript library="jquery"/> 

例Config.groovy中:

environments { 
    development { 
     grails.logging.jul.usebridge = true 
    } 
    production { 
     grails.logging.jul.usebridge = false 

     grails.serverURL = "http://example.com/" 
     grails.app.context = "/" 
    } 
} 

我覺得Grails應用程序必須具備某種屬性,可以設置!?否則,它似乎是一個痛苦的脖子。

請幫忙! P:如果我直接訪問任何資源(手動刪除URL中的AppName),我會得到正確的東西,如css,js和image。

更新: 我設置以下的application.properties:

app.context=/ 
serverURL=http://example.com/ 

開創了Grails的絕對URL:

<g:createLink controller="Sample" absolute="true"/> 

並創建正確的URL!然而,資源使用相對路徑,並以AppName /開頭......這似乎是一個詛咒,我無法擺脫該AppName。

更新: 如果我運行prod run-app然後所有URL出來正常,但我部署到Tomcat 7的那一刻,AppName的出現在網址一次。

+1

應該是'grails.app.context ='/''。請參閱http://stackoverflow.com/questions/22539389/change-the-context-for-your-application – dmahapatro

+0

你如何生成你的鏈接? – saw303

+0

您是否在'Config.groovy'中爲'prod環境設置了'grails.serverURL'屬性? – emilan

回答

0

還有其他選擇,但可能最短的方法是像ROOT.war一樣部署它。

只需更改BuildConfig.groovy默認的文件名戰爭:

grails.project.war.file = "target/ROOT.war" 

設置正確grails.serverURL屬性你就大功告成了。

希望它有幫助。

+1

對不起,但我不能使用ROOT.war,有沒有其他方法? – MeIr

+0

首先檢查是否沒有其他應用程序作爲tomcat中的ROOT(「/」)應用程序部署,否則它們會發生衝突。然後嘗試使用grails.app.context ='/',但不要在application.properties中(Config.groovy或使用locators的屬性文件)。 –

-2

這是您繼承的應用程序嗎?如果是這樣,我會建議與原始創作者協商,看看他如何爲您的架構進行配置。

+1

夥計,沒用!這種答案會讓你失望。 – MeIr

+0

事實上,如果有他可以諮詢的原創作者,這很有幫助。這聽起來像一個隱藏的屬性文件或配置問題,可能會在服務器上設置並覆蓋。我經常會使用devops來簡化在預先構建的機器或VM映像上的部署。所以如果他不熟悉以前的業主工作,這是一個非常好的答案。 – Orubel