ColdFusion 10 설치 후 <cfimage> captcha 등이 제대로 나타나지 않을 때. (CFFileServlet 경로문제)

Adobe ColdFusion 10에서는 이전 버전과  다르게 Apache Tomcat을 서블릿 엔진으로 쓰고 있어서 Apache web서버와의 연동이 mod_jk로 이루어집니다. (이전에 일반적인 Tomcat과 Apache의 연동과 동일)

다만, ColdFusion 10 설치 시 Installer가 자동으로 연동을 해주므로 사용자가 딱히 할 일은 없습니다. 이전 버전에서는 ColdFusion관리자 접속경로인 /CFIDE 디렉토리를 반드시 웹루트에 설치해 줘야 했지만 ColdFusion 10부터는 mod_jk에서 자동으로 Alias  연결을 해줍니다.

즉, 이전버전에서는 설치 시 서버에 여러 웹 호스트가 존재할 때 특정 호스트에 /CFIDE 이하의 디렉토리를 설치할 웹호스트를 지정하라고 나타나지만 ColdFusion 10에서는 기본 ColdFusion 10의 설치경로 내부의 /CFIDE 디렉토리를 웹서버에 매핑을 해줘서 아무 호스트에서나 접속이 가능해 졌습니다.

다만, 보안을 위해 신규로 추가된 기능이 있는데 ColdFusion관리자를 접속할 수 있는 IP주소를 지정할 수 있는 기능이 추가되었습니다. 접속자체를 막는 것은 아니고 로그인 시 튕겨버립니다. 아예 로그인화면 자체를 보이지 않았으면 더 좋았을 거 같습니다. 기본적으로 설치할 때 1개의 IP를 지정하지만 이후 /CFIDE/administrator 경로로 접속하여 관리자모드에서 추가할 수 있습니다.

설치 이후 <cfimage>태그에서 동적으로 image를 생성하여 화면에 뿌릴 때 동적 경로가  CFFileServlet 경로를 사용하는데 이 경로는 실제로 웹 루트에 존재하는게 아니고 ColdFusion 10 설치 경로내부에 존재합니다. 이전 버전에서는 Jrun의 매핑에 자동으로 추가되어 실제로 이런 작업을 할 일이 없었습니다만..

잔손이 많이 가는 Tomcat이므로 이 부분이 빠져버렸습니다. 즉, 수동으로 변경해줘야 합니다. 가령 사용자의 스팸을 막기 위해 CAPTCHA라고 하는 동적 이미지 비밀번호 입력기능을 쓸 때 이 이미지가 브라우저가 로드 될 때마다 바뀌게 됩니다. 이 이미지의 실제 경로는 Linux의 경우라면 /opt/coldfusion10/cfusion/tmpCache/CFFileServlet/_cf_captcha 하위에 png로 존재하는데 이 경로는 웹에서는 직접 연결할 수 없으므로 Tomcat에 매핑을 해야 합니다.

Ubuntu 시스템에서 ColdFusion 10을 설치하게 되면 다음과 같은 기본 경로에 설치됩니다.

ColdFusion 10 기본설치 경로 : /opt/coldfusion10/
ColdFusion 10 실행파일의 경로 : /opt/coldfusion10/cfusion/bin/coldfusion
mod_jk의 경로 : /etc/apache2/mod_jk.conf

먼저 mod_jk.conf를 수정합니다. 이 파일을 vi에서 열어서 다음의 매핑 코드를 추가합니다.

# Load mod_jk module
LoadModule    jk_module  "/opt/coldfusion10/config/wsconfig/1/mod_jk.so"

# Where to find workers.properties
JkWorkersFile "/opt/coldfusion10/config/wsconfig/1/workers.properties"
JkMountFile "/opt/coldfusion10/config/wsconfig/1/uriworkermap.properties"

# Where to put jk logs
JkLogFile "/opt/coldfusion10/config/wsconfig/1/mod_jk.log"

# Where to put jk shared memory
JkShmFile "/opt/coldfusion10/config/wsconfig/1/jk_shm"

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
AddHandler jakarta-servlet .cfm .cfml .cfc .cfr .cfswf

Alias /CFIDE "/opt/coldfusion10/cfusion/wwwroot/CFIDE"
<Directory "/opt/coldfusion10/cfusion/wwwroot/CFIDE">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

############################### 이하 추가 ################################
Alias /CFFileServlet "/opt/coldfusion10/cfusion/tmpCache/CFFileServlet"
<Directory "/opt/coldfusion10/cfusion/tmpCache/CFFileServlet">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
##########################################################################

<Files ~ ".hbmxml$">
Order allow,deny
Deny from all
</Files>

기본적으로 Alias에 /CFIDE가 매핑되어 있는 것을 알 수 있을 겁니다. 그 아래 부분에 추가한 후 ColdFusion 10과 Apache를 재시작 해 줍니다.

There are no comments yet. - 아직 댓글이 없습니다.

Leave a Comment

Leave this field empty:




Powered by

© 2010-2018 NOOREE.COM