2009-05-07 3 views
0

Flex 프론트 엔드의 백엔드로 grails 애플리케이션을 사용하고 있습니다. 응용 프로그램을 쉽게 개발하고 디버그하려면 crossdomain.xml 파일을 서버 루트에 배치해야합니다. 즉, http://localhost:8080/crossdomain.xml을 통해 액세스 할 수 있어야합니다. 유사한 사용 사례는 favicon.ico 또는 robots.txt의 배포 일 수도 있지만 기본 루트 웹 응용 프로그램이있는 tomcat 서버를 통해 프로덕션 환경에서 수행 할 수 있습니다.Grails 서버의 루트 디렉토리에 특정 파일을 배치하는 방법은 무엇입니까?

그러나 제 경우에는 grails run-app를 실행 한 후 crossdomain.xml을 사용할 수 있어야합니다. grails 애플리케이션이 여전히 기본 애플리케이션 컨텍스트 아래에 있어야하기 때문에 전체 애플리케이션을 루트 (http://ca.rroll.net/2009/03/27/configuring-the-grails-root-application-context/)로 옮길 수 있다는 것도 알고 있습니다.

누군가가 어떻게 알 수 있습니까? 어떻게하면 grails 설치의 jetty servlet 컨테이너를 다시 구성해야합니까?

답변

1

답변을 찾은 것 같습니다. 나는 아직 이것을 시도하지 않았다, 그래서 YMMV.

article에서는 Colin Harrington이 추가 Jetty 컨텍스트를 배포하여 서버 루트에서 crossdomain.xml 파일을 사용할 수 있도록 설명합니다. 그의 기술

먼저 저자는 또한 내가 아파치와 mod_proxy를 함께이 문제를 해결하는 방법을 알아 낸 또 다른

0

Static Resources Plugin을 사용하는 방법을 설명이 블로그 entry에 제안되었다. 이렇게하면 Grails 설치와 Grails 프로젝트가 원래 그대로 유지됩니다. Grails 내부에서 해킹을하지 않으며, 프로덕션 환경에서는 필요없는 플러그인을 추가 할 필요가 없습니다.

1. 설치 아파치는

이 있지만 운영 체제에 가장 적합한 수행 2.2 httpd가. Apache 2.2를 설치하는 것이 중요합니다. 우분투 시스템에서이 작업을 수행 했으므로 특정 명령과 파일 위치가 우분투에서 사용됩니다. 시스템에 필요한만큼 수정하십시오.

Apache를 설치 한 후 httpd를 시작하십시오.

sudo /sbin/service httpd start 

웹 브라우저를 사용하여 올바르게 설치되었는지 테스트하십시오.

2.

는 정적 파일을 보관합니다 디스크의 위치를 ​​선택 루트 디렉토리

을 만듭니다. 이것은 httpd의 문서 루트가됩니다. 나는/var/grails_root를 사용할 것이다.

mkdir /var/grails_root 
touch /var/grails_root/crossdomain.xml 

3.

는 httpd.conf 파일에 여러분이 좋아하는 텍스트 편집기에서

열기 httpd.conf 파일을 VirtualHost 항목을 만듭니다.

vim /etc/httpd/conf/httpd.conf 

원하는 포트를 선택하고 해당 포트에 가상 호스트를 만듭니다. 나는 9090을 사용할 것이지만, 어떤 포트라도 사용할 수 있습니다.

httpd에 다음 행을 추가하십시오.conf의

Listen 9090 
<VirtualHost *:9090> 
    DocumentRoot "/var/grails_root" 
    <Directory "/var/grails_root"> 
     Allow from all 
    </Directory> 
</VirtualHost> 

다시 시작 아파치 당신은 지금 당신의 문서 루트 디렉토리에 정적 파일에 액세스 할 수 있습니다

sudo /sbin/service httpd restart 

테스트합니다. 그렇지 않은 경우 다음 단계로 이동하기 전에이 문제를 해결해야합니다.

4. mod_proxy를 사용하고 당신은 이러한 모듈을 모두로드 할 필요

mod_proxy_http가. mod_proxy는 프록시를위한 기본 기능을 가지고 있고, mod_proxy_xxx 모듈은 프로토콜에 특정한 정보를 가지고 있습니다. 그것들은 httpd 2.2에 표준으로 제공되기 때문에 여분의 것을 설치할 필요가 없다.

지금

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 

을 httpd.conf 이전 단계에서 설정 한 가상 호스트를 수정하려면 다음 줄을 추가합니다. 9090

이 모든 당신이 포트를 통해 정적 파일과 Grails의 응용 프로그램 모두에 액세스 할 수 있어야합니다,

sudo /sbin/service httpd restart 

이제

<VirtualHost *:9090> 
    DocumentRoot "/var/grails_root" 
    <Directory "/var/grails_root"> 
     Allow from all 
    </Directory> 
# New lines start here 
    ProxyRequests Off 
    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 
    ProxyPass /grailsApp http://your.grails.server:8080/grailsApp 
# New lines end here 
</VirtualHost> 

다시 시작 아파치 (당신은 코멘트를 생략 할 수 있습니다) 여기에있는 정보를 기반으로 : http://docs.codehaus.org/display/JETTY/Configuring+mod_proxy

다른 버전의 Apache에서이 작업을 수행하는 방법에 대한 정보는 같은 사이트에서 볼 수 있습니다.

+0

롱은 문제가되지 않습니다. 당신의 블로그가 영원히 존재하지 않는다면 (매우있을 법하지 않음), 여기에 내용을 바꿔 쓰십시오. 답변은 "답변을보기 위해 여기로 가십시오"이상이어야합니다. – cHao

+0

좋습니다. 링크를 블로그 게시물의 관련 텍스트로 대체했습니다. – haydenmuhl

관련 문제