1. 현재 php 버전 확인

php -v

 

2. php 다운로드

rpm -Uvh http://mirror.webtatic.com/yum/centos/5/latest.rpm

 

3. php 재설치

yum --enablerepo=webtatic install php

 

4. php 업데이트

yum --enablerepo=webtatic update php

 

5. 서비스 재시작

service httpd restart



* php mbstring 설치 (limesurvey 최소 요구 모듈)

 yum --enablerepo=webtatic install php-mbstring

 vi /usr/php.ini 

 extension = mbstring.so 추가

 service httpd restart

Trackbacks 0 | Comments 1

Tomcat Web application 만들기 

먼저, 웹 루트를 어디로 정할 것인가?
(아파치나 톰캣 자체가 static html을 바라보는 웹 웹루트)

 

톰켓이 기본적으로 보고 있는 루트 컨텍스트는 webapps/ROOT 이다.

server.xml 내용을 보면

<Host name="localhost"  appBase="webapps"
         unpackWARs="true" autoDeploy="true"
         xmlValidation="false" xmlNamespaceAware="false">

와 같이 appBase는 ${catalina-home} 밑의 상대경로를 인자로 받으며,기본적으로 보안과 context의 통일적인 적용을 이유로 컨텍스트의 루트는 ROOT 디렉토리 밑이 됩니다.

따라서, 톰켓이 설치가 되면 웹루트는 ${catalina-home}/webapps/ROOT 가 된다.

(위의 과정대로 설치했다면 시스템에서는 /usr/local/server/webapps/ROOT 가 된다)

 이를 3가지 형태로 변경해 사용할 수 있다.

1. webapp 자체를 웹루트 디렉토리로 만들고 싶을 때,

단지, <Host> 태그 내에 아래와 같은 컨텍스트를 추가하면 됩니다.

<Context path="" docBase="." reloadable="true"/>

   사실 컨텍스트는 더 많은 옵션이 있으나 여기는 최소한의 사항만 적었습니다. 실서버에 적용할 때는 log 부분도 신경을 써주셔야 합니다. 더 자세한 사항은 웹을 검색해 보시기 바랍니다.

2. webapp/user/ROOT를 웹루트 디렉토리로 만들고 싶을 때,

<Host name="localhost"  appBase="webapps/user"
         unpackWARs="true" autoDeploy="true"
         xmlValidation="false" xmlNamespaceAware="false"> 

3. /home/user/www을 웹루트 디렉토리로 만들고 싶을 때

<Host name="localhost"  appBase="/home/user/www" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

   <Context path="" docBase="." reloadable="true"/>
</Host>

     또는,

<Host name="localhost"  appBase="/home/user" unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

   <Context path="" docBase="www" reloadable="true"/>
</Host>

 

   Context 를 빼먹으면 ROOT를 자동으로 웹루트로 쓴다.

3번의 설명은 Host의  appBase 경로를 다른 곳으로 돌린 경우에 해당한다.

이러한 경우 다음 항목인 " 별도의 디렉토리를 appBase로 잡을 경우 설정" 내용을 참고하여 진행해야 한다. 

 

p.s) 톰켓 5.0부터 추가적인 context는 server.xml에 추가하지 않고,
각 웹어플리케이션 디렉토리 별로 META-INF 밑에 context.xml을 추가하게 됩니다.

웹루트를 appBase와 같이 하려면 이의 설정을 server.xml에서 설정해도 무방한 것 같습니다만,
webapps를 루트로 쓰는 것은 특별한 경우가 아니면 지양하는 게 좋으며,
꼭 필요하다면 apache의 redirect를 쓰는 방법 등으로 해결할 수도 있습니다.

 

별도의 디렉토리를 웹 컨텍스트 루트로 잡을 경우 설정과정

  • /home/user/www 디렉토리를 생성해 권한을 사용가능한 일반유저 권한으로 설정한다(mkdir, chown, chmod 등 사용)
  • 위 디렉토리에 컨텍스트가 될 "test" 디렉토리를 만들고 시험적으로 되는지 확인해 볼 만한index.html 혹은 jsp 파일 하나를 아래와 같이 대충 만들어 넣는다.

<html>
< head><title>TEST-INDEX</title>
< body>
< h1>INDEX</h1>
< /body>
< /html>

 

톰캣 관리자 화면에서 새로운 어플리케이션이 보여지게 하려면  TOMCAT_HOME /work/Catalina/호스트명(localhost)/{컨텍스트명}test.xml 파일을 아래와 같이 만들어 넣으면

<?xml version='1.0' encoding='utf-8'?>
< Context path="/test"
         docBase="/home/user/www/test"
         debug="0"
         reloadable="true"
         crossContext="true"
/>

톰캣 관리자 화면에서 확인이 될 수 있다.

즉, 호스트 밑에 컨텍스트명과 동일한 컨텍스트 xml 파일을 넣으면 된다는 것이지만, 런타임에만 적용되므로 환경설정에 완전히 적용하기 위해선 컨텍스트 설정에 관한 자세한 설정은 Tomcat 6 컨텍스트 설정방법 을 참고한다.

TOMCAT_HOME : 톰캣 설치 디렉터리

 

1. 도메인으로 분류하는 방법

 

TOMCAT_HOME\conf\server.xml 을 열면 기본적으로 하나의 Service 엘리먼트가 있고
그 하위에 Engine 엘리먼트가, 또 그 하위에 아래와 같은 하나의 Host 엘리먼트가 있다.

 

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>

 

아래와 같이 추가하려는 도메인으로 Host 엘리먼트를 하나 더 추가한다.

 

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
      <Host name="testdomain.com
appBase="/home/user/www"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>

 

appBase는 이 컨텍스트의 물리적 영역이 되겠다.
물론 실제의 물리적인 디렉터리도 아래와 같이 필요하다.

 

/home/user/www/ROOT
/home/user/www/ROOT/WEB-INF

 

WEB-INF의 web.xml등은 TOMCAT_HOME/webapps/ROOT/WEB-INF에서 복사한다.

/home/user/www/ROOT 디렉터리는 이 컨텍스트의 루트 디렉터리로 작동한다.

 

여기서 testdomain.com은 추가하려는 도메인이 되겠으며,
실제로 도메인을 보유하지 않고 개발 PC에서 작업하는 경우,
C:\Windows\system32\drivers\etc\hosts 파일을 열고
마지막 줄에 다음을 추가한다.

 

192.168.10.105      testdomain.com

 

이제 웹브라우저를 열고 [testdomain.com:포트번호]에 접속하면 된다.

 

만일 /home/user/www/ROOT 가 아닌 /home/user/www 를 루트 디렉터리로 사용하고자 하는 경우에는
server.xml을 다음과 같이 작성한다.

      <Hostname="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
      <Host name="testdomain.com
"  appBase="/home/user/www"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
    <context path="" docBase="/home/user/www"></context>
      </Host>

 

2. 포트 번호로 분류하는 방법

 

톰캣에서도 MS의 IIS와 같이 포트 번호에 따라 호스팅하는 것이 가능하다.
TOMCAT_HOME\conf\server.xml 을 열고 아래와 같이 Service 엘리먼트를 추가한다.

 

  <Service name="testdomain">
    <Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="testdomain" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="/home/user/www"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
            <context path="" docBase="/home/user/www"></context>
      </Host>
    </Engine>
  </Service>

 

Service 엘리먼트의 name 속성은 추가하려는 컨텍스트의 이름이 되겠다.
첫 Connector 엘리먼트의 port 속성은 사용하려는 포트 번호를 넣으면 된다.
Host 엘리먼트와 context 엘리먼트, appBase에 대한 물리적 경로 생성은 1항의 설명과 같다.

 

이제 웹브라우저를 열고 [localhost:포트번호]에 접속하면 된다.

 

 

 =========================================================================================
아파치와 연동없이 톰캣만으로도 하나의 IP로 다수의 웹사이트를 운영하는 것이 가능하다.
(아파치와 톰캣을 연동하는 방법에 대해서는 차후에 자세히 올리도록 하겠다)

특히 개발자의 경우 여러개의 프로젝트를 개발하거나 테스트하고자 할 때 웹사이트를 여러개 운영해야한다. 다수의 웹 사이트를 세팅하는 방법은 크게 2가지가 있다.

가상호스트를 이용하는 방법은 도메인을 이용하여 실제로 서비스를 운영하는 경우가 아니면 개발자에겐 별 의미가 없다. 여기서는 두번째 방법인 IP 어드레스의 포트를 이용하는 방법에 대해서 설명하겠다. (바로가기 : 톰캣에서 가상 호스트를 이용하는 방법)

우선 설치 환경은 다음과 같다.

  • O/S : CentOS 6.2 
  • Tomcat 6.0 (정확히는 6.0.10) : 다운로드

설명의 편의를 위해 톰캣의 설치 디렉토리는 'TOMCAT_HOME' 으로 표기할 것이다. 참고로 내 경우는 

'/usr/local/server/tomcat' 이다.

설정하는 방법은 간단하다. /TOMCAT_HOME/conf/에 있는 server.xml 파일만 수정하면 끝이다. server.xml의 쓸데없는 주석부분을 다 없애고 핵심부분만 남겨놓으면 아래와 같다.


 

<Service name="Catalina">
  <Connector port="8080" protocol="HTTP/1.1"
   maxThreads="150" connectionTimeout="20000"
   redirectPort="8443" />
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  <Engine name="Catalina" defaultHost="localhost">
   <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="UserDatabase"/>

 

   <Host name="localhost"  appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
   </Host>

 

  </Engine>
 </Service>

 

우선 빨간색으로 표시한 부분만 이해하고 넘어가도 상관없다.
Connector port="8080"은 HTTP로 넘어오는 포트를 지정하는 것이다. 톰캣의 기본 포트가 8080인 이유가 여기에 있다. 따라서 8080 대신 기본 80포트를 사용하고 싶다면? 바로 이 부분을 port="80"으로 바꾸어주면 된다.

다음, Host 지시어의 appBase="webapps" 는 웹어플리케이션(웹사이트)의 위치를 나타낸다. appBase="./webapps"와 같은 의미다. 실제 위치는 TOMCAT_HOME/webapps이다. 물론 "/home/user2/www" 과 같이 절대경로로 지정하는 것도 가능하다.

그럼 웹사이트를 하다 더 추가하고 싶다면? 위의 <Service>...</Service>를 하나 더 만들어 버리면 된다. 위의 코드를 복사한 다음 server.xml 에 추가한다. 그리고 빨간색으로 표시한 부분만 수정하자.

 

 <Service name="Catalina2">
  <Connector port="9090" protocol="HTTP/1.1"
     maxThreads="150" connectionTimeout="20000"
     redirectPort="8443" />
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
 
  <Engine name="Catalina" defaultHost="localhost">
   <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
     resourceName="UserDatabase"/>
 
   <Host name="localhost"  appBase="/home/user2/www"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
   </Host>


  </Engine>
 </Service>

 

 

다른 웹어플리케이션을 돌리기 위해 서비스를 하나 더 추가한 것이다.
port="9090" 은 새로 추가하고 싶은 포트이다.
appBase="/home/user/www"는 9090 포트에서 돌아갈 웹사이트 위치이다.

이제 server.xml 설정은 끝난 것이다.
마지막으로 웹사이트의 ROOT 디렉토리를 지정해주자. 아래의 폴더를 생성한다.

/home/user/www/ROOT/   (
/home/user/www/ROOT/WEB-INF/
(WEB-INF 폴더를 만들고 web.xml 파일을 추가한다. 그냥 /TOMCAT_HOME/webapps/ROOT/WEB-INF/에 있는 web.xml 을 복사하면 된다.

무지 간단하다. 하지만 난 이 간단한 것을 위해서 하루종일 삽질해야만 했다. 검색해 보아도 문서는 많은데 실제 도움이 될만한 것이 별로 없었다.

테스트하기 위해 ROOT/index.html 또는 index.jsp를 만든다.
이제 톰캣을 재시작하고 웹브라우저로 접속해 보자.
http://localhost:8080
http://localhost:9090

 

Trackbacks 0 | Comments 1

microdesk's Blog is powered by Daum & tistory