top bar

글 목록

레이블이 웹개발인 게시물을 표시합니다. 모든 게시물 표시
레이블이 웹개발인 게시물을 표시합니다. 모든 게시물 표시

2015년 8월 26일 수요일

[WebDev] $TOMCAT_HOME/work 디렉토리의 용도?

The work directory, as its name suggests, is where Tomcat writes any files that it needs during run time, such as the generated servlet code for JSPs, the class files for the same after they are compiled, the serialized sessions during restarts or shutdowns (SESSIONS.ser).

Also, if you have Tomcat configured not to unapack war files when deployed, your web app's directory structure will be created under the work directory instead of the "webapps" directory.

http://www.coderanch.com/t/87174/Tomcat/Purpose-work-directory-Tomcat

work 디렉토리는 그 이름에서 알 수 있듯이 runtime에 필요한 파일들, 예를들어 JSP로부터 변환된 서블릿코드(java파일), 또 그것을 compile하여 발생된 class파일 그리고 세션 파일들이 상주하는 공간이다.

따라서 실행시간에 다이나믹하게 class파일, 세션파일들이 저장된다.

또 한가지 흥미로운 사실은, server.xml 파일의 unpackWARs 속성과 autoDeploy 속성을 'false'로 해놓으면, 서버가 재시작할때 웹 어플리케이션은 'webapps' 디렉토리 대신에 'work' 디렉토리에 배포된다는 것이다.

아래는 unpackWARs 속성이 true 일때이다.
$ tree ./work/
./work/
└── Catalina
    └── localhost
        └── _
work 디렉토리 밑에 web resources는 생성되지 않고 jsp나 세션파일과 같은 캐시성 파일들이 실행시간에 저장될 공간만 생성되었다.

아래는 unpackWARs 속성이 false 일때이다. (autoDeploy속성도 false)

일단 webapps 디렉토리에 아래와 같이 war파일만 그대로 있고 배포되지 않았다
$ tree ./webapps/
./webapps/
└── ROOT.war
하지만 work 디렉토리에 아래와 같이 WEB-INF (web resources)가 배포된 것을 확인 할 수 있다.
$ tree ./work/
./work/
└── Catalina
    └── localhost
        └── _
            └── WEB-INF
                ├── classes
                │   ├── META-INF
                │   ├── applicationContext.xml
                │   ├── com
                │   │   └── ntscorp
                │   │       └── rnote
                │   │           ├── home
                │   │           │   └── controller
                │   │           │       └── HomeController.class
                │   │           ├── message
                │   │           │   ├── bo
                │   │           │   │   └── MessageBO.class
                │   │           │   ├── controller
                │   │           │   │   └── MessageController.class
                │   │           │   └── model
                │   │           │       └── MessageModel.class
                │   │           ├── mgr
                │   │           │   └── QueueManager.class
                │   │           ├── user
                │   │           │   └── controller
                │   │           │       └── UserController.class
                │   │           └── utils
                │   │               └── LoggedInUserManager.class
                │   └── log4j.xml
                └── lib
                    ├── amqp-client-3.3.5.jar
                    ├── aopalliance-1.0.jar
                    ├── aspectjrt-1.6.10.jar
                    ├── jackson-core-asl-1.9.13.jar
                    ├── jackson-mapper-asl-1.9.13.jar
                    ├── javax.inject-1.jar
                    .
                    .
                    .
                    .
클래스파일과 jar 라이브러리 파일등이 모두 배포되었다.

server.xml의 설정에 따라서 work디렉토리는 실행시간에 생성되는 파일들을 캐시해두는 용도, 또는 웹어플리케이션이 배포되는 용도로 쓰이는것이다



2015년 7월 29일 수요일

[WebDev] Apache 2 설치 기초

아파치는 두말 할 필요없는 웹서버다. 이런저런 설명을 생략하고 일단 설치해보자.

환경은 CentOS 6 이다.

설치



1) 다운로드
$ wget 'http://mirror.apache-kr.org//httpd/httpd-2.2.31.tar.gz'

2) 압축해제
$ tar -xvzf httpd-2.2.31.tar.gz

3) 컴파일
$ cd httpd-2.2.31
$ ./configure --prefix=APACHE_HOME --with-included-apr
$ make
'APACHE_HOME' 에는 설치할 경로를 입력하면 된다. 'make'로 소스를 컴파일 한다. 컴파일이 잘못된 설정으로 되었을 경우, 'make clean' 으로 초기화 할 수 있다.

4) 설치
$ make install

설정



설치가 되었으면, 'APACHE_HOME/conf/httpd.con' 파일을 열어본다. default 값으로 user와 group이 아래와 같이 설정되어있을 것이다.
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User deamon
Group deamon
사용자와 사용자그룹을 각 환경에 맞게 입력한다.

그리고 'APACHE_HOME/bin' 디렉토리로 이동하여 아래와 같이 httpd.conf 설정파일의 Syntax를 체크해본다
$ ./apachectl configtest
Syntax OK
설정 문법에 이상이없으면 실행한다. 이때 권한이 없다면 root계정으로 로그인하여 'sudo' 명령을 활용한다.
$ ./apachectl start
httpd 데몬이 제대로 올라갔는 지도 확인한다.
$ ps -ef | grep httpd
root      5121     1  0 14:03 ? 00:00:00 /home/asuraiv/apps/apache/bin/httpd -k start
asuraiv    5122  5121  0 14:03 ? 00:00:00 /home/asuraiv/apps/apache/bin/httpd -k start
asuraiv    5123  5121  0 14:03 ? 00:00:00 /home/asuraiv/apps/apache/bin/httpd -k start
asuraiv    5124  5121  0 14:03 ? 00:00:00 /home/asuraiv/apps/apache/bin/httpd -k start
asuraiv    5125  5121  0 14:03 ? 00:00:00 /home/asuraiv/apps/apache/bin/httpd -k start
asuraiv    5126  5121  0 14:03 ? 00:00:00 /home/asuraiv/apps/apache/bin/httpd -k start
asuraiv  5133  5077  0 14:04 pts/0    00:00:00 grep httpd
자, 이제 브라우저에서 해당 서버의 IP로 접근하게되면 아래와 같은 화면이 노출될 것이다.