Apache + Tomcat with Tomcat Connector

Posted at 2009. 11. 11. 09:01 | Posted in Server/Ubuntu
반응형

http://www.jopenbusiness.com/tc/oss/162



jdk 1.6

# apt-get install sun-java6-jdk

테스트

# javac -version
javac 1.6.0_15

# java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) Client VM (build 14.1-b02, mixed mode, sharing)




apache2 - http://antop.tistory.com/37


tomcat6

# apt-get install tomcat6

환경 설정

# vi /etc/tomcat6/server.xml

<!-- URIEncoding="UTF-8" 추가 -->
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
           connectionTimeout="20000"
           redirectPort="8443" />

<!-- 주석을 제가하고 URIEncoding="UTF-8" enableLookups="false" 추가 -->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" enableLookups="false" />

# vi /etc/init.d/tomcat6

# 추가
JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$JVM_TMP -Dfile.encoding=8859_1 -Dfile.client.encoding=8859_1 -Dclient.encoding.override=8859_1"

tomcat6 재시작

# /etc/init.d/tomcat6 restart

테스트





tomcat connecter

# apt-get install libapache2-mod-jk

# vi /etc/apache2/mods-enabled/jk.conf

# 생성
# ServerName nerv-team.co.kr
JkWorkersFile   /etc/apache2/mods-enabled/workers.properties
JkShmFile       /var/log/apache2/mod_jk.shm
JkLogFile       /var/log/apache2/mod_jk.log
JkLogLevel      debug
JkLogStampFormat   "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"

# vi /etc/apache2/mods-enabled/jk_mount.conf

# 생성
# Apache Tomcat에서 처리할 URL 패턴을 등록
JkMount /*.jsp          worker1
JkMount /servlet/*      worker1
JkMount /*.do           worker1
JkMount /*.action       worker1

# vi /etc/apache2/mods-enabled/workers.properties

# 생성
workers.tomcat_home=/usr/share/tomcat6
workers.java_home=/usr/lib/jvm/java-6-sun
ps=/

worker.list=worker1
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.type=ajp13
worker.worker1.lbfactor=50
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=60

# vi /etc/apache2/sites-enabled/000-default

# 원하는 호스트 부분에 추가
# www.nerv-team.co.kr
<VirtualHost *:80>
        ServerAdmin antop@nerv-team.co.kr
        ServerName www.nerv-team.co.kr
        ServerAlias nerv-team.co.kr
        DocumentRoot /var/www
        # tomcat connecter
        Include /etc/apache2/mods-enabled/jk_mount.conf
...
</VirtualHost>

# vi /etc/tomcat6/server.xml

<Host name="www.nerv-team.co.kr" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
  <Context path="/" docBase="/var/www" reloadable="true" />
</Host>

tomcat6 재시작

# /etc/init.d/tomcat6 restart

apache2 재시작 (tomcat6 부터 재시작 한다)

# /etc/init.d/apache2 restart

테스트

# echo '<%="Hello World"%>' > /var/www/jspinfo.jsp







java.security.AccessControlException: access denied

예) test.jsp

<%=System.getProperty("java.class.path") %>

에서 에러가 났다면 "/etc/java-6-sun/security/java.policy" 파일에서 접근 권한이 있는지 확인한다.

// 추가
permission java.util.PropertyPermission "java.class.path", "read";



WEB-INF/lib 참조 못하는 에러 해결(권한 문제)

# vi /etc/tomcat6/policy.d/04webapps.policy

// 추가
grant codeBase "file:/home/-" {
        permission java.security.AllPermission;
};


그래도 안되면 수동으로 하는 수밖에...

※ 웹어플 하나 추가할때마다 서버 재시작해줘야 할지도... -0- 비추..

# vi /etc/init.d/tomcat6

# tomcat 라이브러리 등록
JSVC_CLASSPATH=$JSVC_CLASSPATH:.:`echo $CATALINA_HOME/lib/*.jar | tr ' ' ':'`
# 가상 호스팅 classes, lib 등록
home_root="/home"
public_html="public_html"
for home_name in $(ls "$home_root")
  do
    if [ -d "$home_root/$home_name/$public_html" ]; then
      for context_name in $(ls "$home_root/$home_name/$public_html")
        do
          if [ -d "$home_root/$home_name/$public_html/$context_name/WEB-INF" ]; then
            # classes 폴더 등록
            if [ -d "$home_root/$home_name/$public_html/$context_name/WEB-INF/classes" ]; then
              JSVC_CLASSPATH="$JSVC_CLASSPATH:$home_root/$home_name/$public_html/$context_name/WEB-INF/classes"
            fi
            # lib 폴더안의 jar 파일 전부 등록
            if [ -d "$home_root/$home_name/$public_html/$context_name/WEB-INF/lib" ]; then
              for jar_file in $(ls "$home_root/$home_name/$public_html/$context_name/WEB-INF/lib")
                do
                  JSVC_CLASSPATH="$JSVC_CLASSPATH:$home_root/$home_name/$public_html/$context_name/WEB-INF/lib/$jar_file"
                # end for
              done
            fi
          fi
        # end for
      done
    fi
  # end for
done


반응형

'Server > Ubuntu' 카테고리의 다른 글

Openfire  (0) 2010.05.25
Webmin  (0) 2009.11.18
Squirrelmail  (0) 2009.11.12
SparkWeb  (0) 2009.11.12
Cacti  (0) 2009.11.12
Apache + SSL  (0) 2009.11.12
Oracle Express Edition 10g  (0) 2009.11.11
Apache + PHP + MySQL  (0) 2009.11.11
bind9 - domain name service  (0) 2009.11.11
Ubuntu 9.10 Desktop  (0) 2009.11.11
//