2012-10-31 3 views
0

나는 아주 간단한 grails 앱을 작성하여 내 바람둥이에 넣으려고했다.톰캣에서 grails 앱 호스팅

grails war 

을 내 바람둥이/webapps 디렉토리에 생성 된 war 파일을 배치하고 다시 시작 :

나는했다. 전쟁의 이름은 ec2.war입니다. 나는 localhost:8080 명중 할 수있다. 하지만 맞을 수 없습니다 : localhost:8080\ec2 - 404 오류 코드가 표시됩니다.

나는 catalina.out에 다음과 같은 스택 추적을 받고 있어요 :

NFO: Deploying web application archive /var/lib/tomcat7/webapps/ec2.war 
log4j:ERROR setFile(null,true) call failed. 
java.io.FileNotFoundException: stacktrace.log (Permission denied) 
     at java.io.FileOutputStream.openAppend(Native Method) 
     at java.io.FileOutputStream.<init>(FileOutputStream.java:207) 
     at java.io.FileOutputStream.<init>(FileOutputStream.java:131) 
     at org.apache.log4j.FileAppender.setFile(FileAppender.java:294) 
     at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165) 
     at org.apache.log4j.spi.OptionHandler$activateOptions.call(Unknown Source) 
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112) 
     at org.codehaus.groovy.grails.plugins.log4j.Log4jConfig.createFullstackTraceAppender(Log4jConfig.groovy:237) 
     at org.codehaus.groovy.grails.plugins.log4j.Log4jConfig.configure(Log4jConfig.groovy:201) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:616) 
     at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:226) 
     at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:64) 
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 
     at org.codehaus.groovy.grails.plugins.log4j.Log4jConfig.initialize(Log4jConfig.groovy:70) 
     at org.codehaus.groovy.grails.plugins.log4j.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:48) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958) 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
     at java.lang.Thread.run(Thread.java:679) 

은 무엇이 오류의 원인이 될 수 있으며, 어떻게 해결할 수 있습니까?

tomcat은 ec2에서 실행되며 여기에서 localhost은 내 공개 IP를 의미합니다 (5.x.x.x.x).

+0

로컬 호스트 : 8080/ec2 및 오류 메시지는 logs/catalina.out을 확인하십시오. – Chris

+0

@crudolf : stacktrace 부분을 추가했습니다. – sriram

+0

주제가 해제 된 이유를 잘 모릅니다. Grails는 프로그래밍 프레임 워크이며, Tomcat에 배포하는 것과 관련하여 많은 질문이 있습니다. – cdeszaq

답변

1

tomcat 폴더의 소유권을 확인해야합니다. 해야 할 일 :

ls -lisa /var/lib/tomcat7/webapps/ 

소유권을 확인하십시오. 당신은 그냥 실행 얻고 싶은 경우에, 가장 쉬운 방법은 어떻게 아마도 :

sudo chown -R root:root /var/lib/tomcat 
sudo chmod -R 777 /var/lib/tomcat 

을하고

sudo /var/lib/tomcat/bin/startup.sh 

을 그러나 이것은 가장 안전한 방법 : 기본적으로

+0

오, 문제는 권한과 관련이 있습니다. 고마워 지금은 작동합니다. – sriram

1

아니다 Grails 응용 프로그램은 tomcat이 시작될 때 현재 디렉토리가 무엇이던간에 stacktrace.log이라는 로그 파일을 만들려고합니다. 그래서 당신은 두 가지 옵션

가 시작 스크립트에 적절한 cd을 넣어에서 시작, 해당 디렉토리가 바람둥이 사용자 ID 쓰기 권한을 보장 디렉토리
  1. 제어
  2. 에서 또는
  3. 하는 변경 실행이 당신의 stacktrace.log를 어딘가에두기위한 grails 설정 (또는 전혀 만들지 않기). log4j 클로저의 Config.groovy에서 수행하고 자세한 내용은 user guide chapter on logging config의 "전체 스택 트레이스"섹션을 참조하십시오.
관련 문제