레이블이 Java인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Java인 게시물을 표시합니다. 모든 게시물 표시

2010년 8월 11일 수요일

톰켓에서 일부 폴더(common, bin, webapps 등) 접근 (404 에러) 이슈

톰켓에서 일부 폴더 (common, bin, webapps, server)가

접근이 안되고 404에러가 나는 경우가 있다.

 

이유는 간단한다.

 

보통 서버 설정시에 가상호스트를 많이 사용하는데

 

<Host name="dev.domain.com">
   <Context path=""
    docBase="/data/homepage/domain"      
          reloadable="true"
          debug="true">
         </Context>
   <Alias>dev.domain.com</Alias>
  </Host>

 

이렇게들 많이 설정할 것이다.

 

이렇게 되면 Host의 appBase 속성이 빈 문자열이 되면서

자동적으로 $TOMCAT_HOME 를 바라보게 된다.

 

이로인해 $TOMCAT_HOME 하단 폴더를 먼저 바라보는 기이한 현상이 일어나게 된다.

ex) common, bin, webapps, server, conf, logs, shared, temp, work 등

 

고로 Host의 appBase 속성을 꼭 지정하도록 한다

본인은 그냥 webApps로 지정하였다.

 

<Host name="dev.domain.com" appBase="webapps">
   <Context path=""
    docBase="/data/homepage/domain"      
          reloadable="true"
          debug="true">
         </Context>
   <Alias>dev.domain.com</Alias>
  </Host>

 

* 되도록이면 지정하는 폴더는 내부에 아무런 내용이 없는 것으로 하는 것이 좋다.

그래야 또 겹치는 폴더가 없으므로 ㅇㅇ

 

 

* 참고로 본인이 개발한 환경은 apache2 + tomcat5.5 + mod_jk 연동에서 난 오류 이므로 버전이 다르거나 연동하지 않는 경우에는 어떻게 될련지 모릅니다.

 

 

이것 때문에 4시간 삽질한게 자랑 ㅠ

apache usage경로(폴더) 접근제한(403 forbidden) 이슈

 

아파치 설치 경로가 /etc/httpd 라고 할 경우

 

/etc/httpd/conf.d/webalizer.conf 파일 내용에

 

Alias /usage /var/www/usage

<Location /usage>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
    # Allow from .example.com
</Location>

 

이런 내용이 가상 디렉토리로 잡아서 생기는 문제이다

이 부분을 주석처리 하면 된다.

 

 

2010년 7월 21일 수요일

fedora 12 svn 설치

-SVN 설치

# yum install subversion

 

-mod_dav_svn.so 설치

# yum install mod_dav_svn

 

-sqlite 설치

# yum install sqlite

 

-저장소 만들기

# mkdir /svnroot

# cd /svnroot

# svnadmin create --fs-type fsfs svn

# svnserve -d -r /svnroot/svn

 

-svn repository 설정
# cd /svnroot/svn/conf
# vi svnserve.conf --파일을
열어서 #표시가 있는 부분은 모두 제거(authz-db= 제외)


-권한설정

# chmod -R g+w /svnroot/svn
# chown -R apache.apache /svnroot/svn

 

-사용자 아이디와 패스워드 파일 /svnroot/svn/svn-auth-file 생성
# htpasswd -cm /svnroot/svn/svn-auth-file 사용자아이디 -- 최초 생성시.
# htpasswd -m /svnroot/svn/svn-auth-file 사용자아이디 --사용자 추가시.
명령어를 입력하면 패스워드 입력 프롬프트가 발생한다.

 

Apache를 /etc/httpd에 설치했으므로 설정파일은 /etc/httpd/conf/httpd.conf 입니다. dav, dav_svn 모듈이 설정되어 있는지 확인 합니다. 주석처리 되어 있으면 주석을 없애고 없다면 아래 두줄을 추가합니다.

LoadModule dav_module         modules/mod_dav.so
LoadModule dav_svn_module     modules/mod_dav_svn.so
 
- 아파치 연동을 위한 설정
# vi /etc/httpd/conf/httpd.conf

--VirtualHost 부분에 svn 설정내용을 추가한다.
<VirtualHost *:80>
<Location "/svnroot/svn"> --svn 접속경로
  DAV svn
  SVNPath /svnroot/svn
  AuthType Basic AuthName "SVN repository"
  AuthUserFile /svnroot/svn/svn-auth-file
  Require valid-user
</Location>
</VirtualHost>

-서버 재시작

# service httpd restart

-방화벽에서 80포트, 3690포트를 연다.

vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

 

# service iptables restart

 

 

 

 

* 방화벽 관련

방화벽 상태 알아보기
/sbin/service iptables status

방화벽 올리고 내리기
/sbin/service iptables stop
/sbin/service iptables start

방화벽 설정 수정하기
vi /etc/sysconfig/iptables

 
※ 주의 사항 ※
selinux 가 실행중이라면 정상작동을 하지 못하는 경우가 있다.
이럴때는 #vi /etc/selinux/config
SELINUX=disabled -> 로 변경해 주거나
[GUI]
프로그램메뉴의 시스템 설정 -> 보안수준 -> SELinux -> 사용안함으로 설정하면 된다.


2009년 11월 25일 수요일

The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 22 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

Stacktrace:
        org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
        org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
        org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        netville.servlet.filter.EncodingFilter.doFilter(EncodingFilter.java:53)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.

 

 

톰켓6.0 내부($JAKARTA_HOME$/lib)에 자체적으로 servlet-api.jar과 jsp-api.jar를 포함하고 있다.

 

 

그런데 이클립스 프로젝트의 확장 jar 중에 위에 해당하는 jar가 있거나

WEB-INF/lib 폴더에 위 jar가 포함된경우 기존 jar와 충돌이 나면서 나는 에러이다

 

해결법은 간단하게 해당 jar(servlet-api.jar과 jsp-api.jar)를 lib폴더에서 삭제하고

이클립스에서는 해당 jar를 포함을 하되 배포시에 외부로 해당 jar를 배포 못하게 하면 된다.