Portable Adobe ColdFusion 9 for Windows.(Using Jetty)

ColdFusion을 공부하려면 당연한 이야기이겠지만 자신의 PC에 ColdFusion Server을 설치해야 합니다. 때에 따라서는 Apache와 같은 웹서버도 설치해야 하고, MySQL과 같은 DB Server도 설치해야 합니다. 더욱이 Railo, OpenBD를 같이 공부하려면 전부 설치해야 하는데, 그러면 PC가 상당히 무거워지고 각 서버간 충돌로 인하여 제대로 작동이 안될 때도 있습니다. 그래서 Railo와 OpenBD는 Jetty를 이용한 무설치버전을 제공합니다. 간단하게 다운받아 압축을 풀고 안의 실행파일만 실행하면 자동으로 Railo나 OpenBD가 실행되는 것이지요. Railo와 OpenBD의 무설치버전은 각각 해당 공식 웹사이트의 다운로드 메뉴에서 찾을 수 있습니다. Railo ExpressReady2Run Jetty+OpenBD이 바로 그것이죠. 자신의 운영체제와 32/64 아키텍쳐에 맞는 버전을 다운로드 하시면 됩니다.(또한 CFServerUSB와 같은 프로젝트도 있습니다.)

하지만, 불행하게도 Adobe ColdFusion은 이런 무설치 버전을 제공하지 않고 있습니다. 여러 이유가 있겠지만 Adobe ColdFusion은 많은 오픈소스 라이브러리들을 내장하고 있어서 분리가 어려울 수 있거나, 사용자의 시스템마다 환경이 달라 정상적으로 작동하지 않을 수 있기 때문에 따로 제공을 하지 않을 뿐 무설치버전을 만드는게 불가능한 것은 아닙니다.

오늘은 간단하게 Jetty에 Adobe ColdFusion 9(Windows 32Bit)를 적용하여 무설치버전을 만들어 보겠습니다. USB 등에 간단하게 넣어다니면서 Adobe ColdFusion을 경험하거나 개발/테스트할 수 있습니다. 물론 MySQL과 같은 DB Server는 적용하지 않을 것이지만 Adobe ColdFusion 내장 Apache Derby와 같은 DB를 이용할 수 있거나, Local 또는 Remote환경에서 제공하는 DB Server에 얼마든지 연결할 수 있기에 개발하는 데에는 큰 어려움은 없을 것 입니다. 자, 이제 필요한 준비물을 알아볼까요?  

Preparations :

jPortable (Portable JDK)
Adobe ColdFusion 9 Developer Edition (Windows 32bit)
Jetty

우선 위 파일들을 모두 PC에 다운로드 합니다. 기본적인 순서는 제일 먼저 Jetty의 압축을 풀고, jPortable을 이용해서 Jetty 디렉토리 내부에 JDK를 설치할 것 입니다. 그런 다음 Jetty의 구동 여부를 확인한 다음, ColdFusion을 Jetty에 적용하면 모든 과정이 끝납니다.

Windows에서는 내문서 디렉토리에서 작업을 하지 말고, C:\나 D:\에서 작업하시길 바랍니다. 작업의 편리성을 위해 C:\cfusion 이란 디렉토리를 만들고 작업을 시작합시다. 이  cfusion 디렉토리를 USB에 담아 다니면서 사용할 것 입니다.

Jetty의 설치

우선 Jetty의 압축을 cfusion에 모두 풀어 줍니다. 이때 cfusion에 바로 풀어서 C:\cfusion\jetty 이런식으로 풀지말고 C:\cfusion안에 바로 Jetty의 파일들이 보이도록 합니다. 이 상태에서 Jetty를 실행하면 시스템에 이미 JDK가 설치된 경우 해당 JDK를 이용해서 Jetty가 구동되겠지만 그렇지 않을 경우 오류가 날 것입니다. 그래서 우리는 어떤 시스템에 JDK가 미리 설치되어있던 안되어있던 구동할 수 있게 Jetty용 JDK를 따로 설치할 것 입니다.

jPortable의 설치

위에서 다운로드한 파일 중 jPortable을 실행하여 C:\cfusion\java 의 경로에 JDK를 설치하도록 합니다. 그럴려면 C:\cfusion안에 미리 java라는 디렉토리를 만들어 놔야 하겠죠? 설치과정은 어렵지 않습니다. 한글로 지원되며, 설치폴더를 지정하는 화면에서 찾아보기 버튼으로 C:\cfusion\java을 지정하면 끝 입니다. 설치가 종료된 후 C:\cfusion\java안에 보시면 JDK의 파일들이 들어있는 것을 확인할 수 있습니다.

자 Jetty와 jPortable의 설치는 끝났습니다. 설명만 길다 뿐이지 사실 별 내용아닙니다. 이제, 약간은 어려운 과정이 남았습니다. Jetty로 하여금 자기 디렉토리내에 있는 JDK(방금전의 java디렉토리)만을 이용하게 구동파일을 하나 만들어 보겠습니다. 기본적인 Jetty 디렉토리내의 start.jar는 시스템에 설치된 JDK를 이용하므로 시스템에 JDK가 설치되지 않은 경우 실행이 안되니까요.

Jetty용 배치파일 만들기

간단하게 아래의 코드처럼 start.bat(구동용)과 stop.bat(중지용)을 만들어 봅시다. 이 두파일은 start.jar과 동일한 곳에 위치해야겠죠?

start.bat

@echo off
set LANG=ko_KR.UTF-8
set JAVA_HOME=./java
set PATH=./java/bin;%PATH%
set JAVA_OPTS=-Xmx512m

set JETTY_HOME=.
set JETTY_PORT=8080

java %JAVA_OPTS% -Djetty.port=%JETTY_PORT% -Djetty.home=%JETTY_HOME% -Dfile.encoding=UTF-8 -Duser.language=ko -Duser.country=KR -DSTOP.PORT=8079 -DSTOP.KEY=secret -jar %JETTY_HOME%/start.jar 
rem pause

stop.bat

@echo off
rem set JAVA_HOME=./java
set JAVA_HOME=./java
set PATH=./java/bin;%PATH%
set JETTY_HOME=.

java -DSTOP.PORT=8079 -DSTOP.KEY=secret -Djetty.home=%JETTY_HOME% -jar %JETTY_HOME%/start.jar --stop
rem pause

위처럼 Windows bat파일을 만들고 난뒤, start.bat을 실행하여 http://127.0.0.1:8080 으로 접속이 되어 Jetty가 실행되는지 확인해 봅니다. 물론 stop.bat도 실행하여 중지되는지 확인해 봅니다. 어렵지 않게 만들 수 있겠죠?

Adobe ColdFusion 9 설치(WAR파일생성)

자, 이제 마지막 Adobe ColdFusion을 설치할 차례입니다. 아니, 아까 무설치한다고 하지 않았습니까? 라고 반문하시는 분 분명 있을것 같습니다. Adobe ColdFusion은 Server의 비밀번호 등을 설치과정중에 지정하므로 미리 WAR타입의 아카이브 파일을 배포할 수 없습니다. 그래서 일반 설치와 동일하게 설치를 진행하는 과정으로 WAR파일을 생성하여야 합니다. 물론 WAR파일 생성한 후엔 제어판의 프로그램 추가/삭제 메뉴에서 Adobe ColdFusion은 지워버리셔도 상관 없습니다. 우리가 필요한 건 cfusion.war 파일이니까요. 

Adobe ColdFusion Installation

설치과정 중에 위와 같은 화면에서 설치 옵션을 맨 마지막의 J2EE Configuration을 선택하고, WAR File을 지정하면 됩니다. 간단하게 위 화면을 설명하자면 맨위 Server configuration옵션은 가장 일반적인 설치방법으로 ColdFusion서버를 시스템에 설치하는 옵션이고, 두번째 Enterprise Multiserver configuration의 경우는 웹호스팅 환경처럼 여러 가상호스트별로 독립인스턴스를 가지는 독자적인 ColdFusion 설치옵션으로 실제 개발단계나 일반 PC에서 설치하는 옵션은 아닙니다. 마지막 J2EE configuration의 경우는 ColdFusion을 이미 시스템에 설치된 J2EE서버들 예를 들어 Tomcat, Jetty, JBOSS, Resin, GlassFish, WebLogic 등에 적용(deploy)하여 서비스하려는 옵션인데 여기서는 Jetty를 이용한 것이 되겠죠.  즉 Jetty에서 이용할 WAR파일을 만들어 낸다는 의미입니다. 

Adobe ColdFusion Installation

자, 다음버튼을 누르면 위 그림처럼 ColdFusion자체의 부가설치항목이 나오는데 아래의 그림 처럼 모두 해제하고 설치합니다. 검색엔진들인 Apache Solr과 Verity, ODBC커넥터, 영문문서 등이 설치되는 옵션인데 검색엔진들의 경우 실제 활용도는 검색엔진을 만들지 않는 한 필요가 없고, DB의 경우 JDBC를 이용하므로 ODBC는 필요가 없습니다. 영문 문서 역시 Adobe웹사이트에서 동일한 내용을 얼마든지 조회할 수 있으므로 따로 설치할 필요는 없겠죠?

설치 마지막으로 위 그림의 다음 화면에서 관리자용 비밀번호 지정하는 화면이 나오는데요 본인이 지정한 임의의 비밀번호를 반드시 기억하시길 바랍니다. 나중에 관리자모드에 접속할 때 필요합니다. 또한 RDS와 같은 옵션은 해제하여 설치하시길 바랍니다.

모든 설치 과정이 완료되면 C:\ColdFusion9 란 디렉토리가 생성되고, 안에 cfusion.war 파일이 보일 것 입니다. 이 파일이 Jetty에 적용할 파일입니다. 위에서도 언급했지만 이 파일을 따로 보관하고 있다가 나중에 Tomcat이나, 실제 서비스용으로 구동중인 WebLogic 등에 적용할 수 있습니다. (즉, J2EE용 cfsuion.war 파일을 매번 만들기 위해 매번 설치과정을 거칠 필요는 없겠죠?)

Jetty에 cfusion.war 적용하기

Jetty를 기본적으로 실행하면 test.war가 실행되어 브라우저 화면에 나타납니다. 따라서 기본 인스턴스를 삭제하고 ColdFusion만 나타나게 하려면 우선 Jetty의 구동을 중지한 다음, Jetty 디렉토리내의 webapps내의 test.war 파일과 contexts 디렉토리내의 모든 내용을 삭제해야 합니다.

그런다음 이제 webapps 디렉토리안에 cfusion.war 파일을 복사하고, Zip압축해제기(Winzip, Winrar 등등)으로 강제로 cfusion.war 파일을 webapps안에 풀어줍니다. 즉, webapps안의 구조는 아래 그림과 같이 하나의 cfusion.war 파일과 그것의 압축해제된 cfusion 디렉토리가 존재하겠죠?

Jetty cfusion.war

C:\cfusion\webapps\cfusion 의 경로에는 CFIDE, META-INF, WEB-INF, crossdomain.xml 가 존재하게 됩니다. 이제 모든 과정의 마지막 작업인 Jetty에게 cfusion.war의 context를 지정해 줄 차례입니다. 즉 Jetty에게 기본 컨텍스트는 cfusion이고 이때 webapps의 cfusion.war를 참조할것과 기본 홈디렉토리는 webapps안의 cfusion이라는 것을 지정해 주는 것 입니다. (중요한 것은 war파일명과 webapps안의 디플로이된 디렉토리명이 같아야 한다는 것 입니다.)

위 그림에서 보듯 C:\cfusion안의 contexts 디렉토리안에 webapps에 디플로이된 war파일과 동일한 cfusion.xml을 만들고 아래와 같이 내용을 정의합니다.

cfusion.xml

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/cfusion.war</Set>
    <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/webapps/cfusion</Set>
</Configure>

모든 과정이 끝났습니다. 자, 이제 start.bat 파일을 실행한 후 http://127.0.0.1/CFIDE/administrator/ 를 입력하면 Adobe ColdFusion 관리자가 나오시나요? Adobe ColdFusion을 설치하여 WAR파일을 생성하는 과정에서 임의 지정한 관리자 비밀번호를 넣고 로그인하면 Adobe ColdFusion관리자 화면을 보실 수 있을 것 입니다.

마무리

Portable Adobe ColdFusion Server를 만드는 것은 설명만 장황하지 실제 Tomcat 등에 WAR패키지를 적용해 본 경험이 있다면 쉽게 이해할 수 있으실 겁니다. 간단히 다시 정리하면 Adobe ColdFusion Server에서 WAR파일을 생성하여 cfusion.war 파일을 얻고(이후 이 파일만 잘 보관하고 있다가 적용하면 됩니다.) 이를 J2EE 서버에 적용하는데, Jetty에 적용해서 Jetty를 포터블용으로 만들어서 USB 등에 넣어두고 언제 어디서나 ColdFusion 실행환경을 만드는 과정을 설명 드렸습니다. 

참고로, 여기에 적용된 Adobe ColdFusion은 Developer Edition이므로 최대 10개의 IP 커넥션만 허용됩니다. 하지만 개발하는데 이 제한 말고 어떠한 제한도 없이 상용서버와 동일하게 기능을 제공하므로 쉽고 빠르게 웹어플리케이션을 개발할 수 있겠죠?

1 response so far

장창학

장창학 - 2월 19, 2012 at 오전 12:51

Jetty에 cfusion.war를 적용한 후 ColdFusion Administrator에서 Sand Box Security 옵션을 활성화 적용해 버리면 이후 권한문제로 Jetty는 구동되지만 ColdFusion 인스턴스가 실행되지 않습니다. 샌드박스 보안 옵션은 CFIDE와 WEB-INF 등의 디렉토리에 대한 보안설정으로서 실제 서비스되는 서버에서 유용한 기능이지만 개발환경에서는 중요한 기능이 아니오니 설정하지 마시길 바라며 혹 설정했을 경우에는 webapps 안의 cfusion디렉토리를 삭제한 후 cfusion.war를 다시 적용하시면 됩니다.

Leave a Comment

Leave this field empty:




Powered by

© 2010-2018 NOOREE.COM