cafe24.com 웹호스팅 서버에 웹프로젝트 배포하기
cafe24.com에 문의를 통해서 확인한 JSP 호스팅 서비스 구성
cafe24 jsp 호스팅은 아파치서버와 톰켓 컨테이너의 연동으로 서비스를 지원해드리고 있습니다.
서블릿 매핑을 하실려면 톰켓의 서블릿 매핑과 아파치의 톰켓매핑이 필요합니다.
서블릿 매핑은 고객님의 계정 www/WEB-INF/web.xml 파일에 아래와 같이 셋팅을 합니다.
......
<servlet>
// 서블릿 이름입니다.
<servlet-name>servletname</servlet-name>
// 서블릿의 경로와 클래스 이름입니다. www/WEB-INF/classes/com/servletname.class
<servlet-class>com.servletname</servlet-class>
</servlet>
<servlet-mapping>
// 서블릿 이름입니다.
<servlet-name>servletname</servlet-name>
// url pattern입니다. 아파치 매핑때 들어가는 이름입니다.
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
......
위와 같이 셋팅을 하신후에 hosting.cafe24.com 에 로그인 - <나의서비스관리> - <톰캣매핑>
메뉴에서 아파치 매핑을 해주시면 됩니다.
매핑 규칙은 web.xml에서 설정한 url-pattern을 규칙에 적어주시면 됩니다.
규칙 : servlet
정상적으로 매핑을 완료한후 15분 후에 해당 페이지에서 확인을 하시면 됩니다.
(아파치 톰캣매핑은 15분 마다 갱신)
예제 내용
JKMount /*.jsp 가 필요할 때 .jsp
JKMount /servlet/* 이 필요할 때 servlet
JKMount /servlet 이 필요할 때 servlet
servlet 을 입력하시면 /servlet/* 와 /servlet 이 동시에 추가 됩니다.
기본 등록된 매핑 내용 정의
JKMount /*.jsp
JKMount /*.do
JKMount /servlet/*
은 기본적으로 매핑되어 있으므로 별도로 지정하실 필요가 없습니다.
로컬 개발환경에서 작성한 war 파일을 호스팅 서버에 올렸을 때 바로 실행되지 않는다면 JDK 버전의 차이가 문제의 원인이 될 수 있다
이런 경우에는 서버상에서 자바 소스파일을 다시 컴파일해 주어야 한다
컴파일하기 위해서는 다양한 라이브러리(*.jar) 파일들의 경로를 컴파일러에게 알려 주어야 하는데, 설정파일에 CLASSPATH를 등록하는 방법과 컴파일 명령시에 옵션으로 라이브러리의 경로를 지정하는 방법이 있다.
톰캣/lib 폴더나 WEB-INF/lib 안에 있는 *.jar 파일, 그 외의 *.jar 파일을 포함한 디렉토리를 CLASSPATH 로 설정하는 방법
TOMCAT_HOME/bin/catalina.sh(bat) 파일에 CLASSPATH를 추가해주거나 TOMCAT_HOME/conf/catalina.properties 에 common.loader를 추가해 주면 된다.
common.loader에 추가할 경우, 아래처럼 특정 파일이나 디렉토리를 지정하면 된다. *.jar 는 안되고 반드시 'abc.jar' 와 같이 완전한 파일명을 입력해야 제대로 작동하는 것을 확인할 수 있었다
common.loader=${catalina.base}/lib, ${catalina.base}/lib/sample.jar, ${catalina.home}/lib, ${catalina.home}/lib/mylib.jar, /home/mydir/app/lib
서버상에서 컴파일할 때 커맨드라인 명령해에서 -classpath,혹은 -cp 옵션을 이용하여 CLASSPATH 를 임시로 설정하는 방법
javac -d /home/hosting_users/myid/www/WEB-INF/classes -classpath /home/hosting_users/[사용자-아이디]/tomcat/lib/servlet-api.jar:/home/hosting_users/[사용자-아이디]/www/WEB-INF/lib/slf4j-api-1.6.6.jar:/home/hosting_users/[사용자-아이디]/www/WEB-INF/lib/spring-context-3.1.1.RELEASE.jar:/home/hosting_users/[사용자-아이디]/www/WEB-INF/lib/spring-web-3.1.1.RELEASE.jar HomeController.java
WEB-INF/classes 안에서 컴파일할 때, 그곳에 HomeController.java 가 있다면 다음과 같이 컴파일을 수행하면 된다
javac -d . -classpath /home/hosting_users/wanglaoshi/tomcat/lib/servlet-api.jar:/home/hosting_users/[사용자-아이디]/www/WEB-INF/lib/slf4j-api-1.6.6.jar:/home/hosting_users/[사용자-아이디]/www/WEB-INF/lib/spring-context-3.1.1.RELEASE.jar:/home/hosting_users/[사용자-아이디]/www/WEB-INF/lib/spring-web-3.1.1.RELEASE.jar HomeController.java MyHelper.java
bash Shell Script를 작성하여 사용 컴파일 등을 수행하는 경우
아래의 파일을 윈도우 등에서 작성하여 FTP를 이용하여 웹호스팅 루트에 업로드한 후에 Putty 등 원격접속 프로그램을 이용하여 dos2unix 명령을 수행하면 윈도우에서 작성된 파일도 유닉스, 리눅스에 실행할 수 있도록 개행문자가 변환된다.
예)
$ dos2unix ./deploy.sh<enter> --> 윈도우 개행문자(\r\n)를 유닉스 개행문자(\n)으로 변환하는 명령
$ ./deploy.sh<enter> --> 쉘 스크립트 실행 명령
#!/bin/sh
# Start Tomcat
tomcat/bin/startup.sh
echo "Tomcat Started......................................................"
echo "[www.war] Deploying................................................."
# Stop Tomcat
tomcat/bin/shutdown.sh
echo "Tomcat Stopped......................................................"
#Move *.java file to 'classes' Directory
mv www/WEB-INF/classes/com/wanglaoshi/web/*.java ./www/WEB-INF/classes/
echo "*.java files moved to [WEB-INF/classes] directory..................."
# Compile
cd www/WEB-INF/classes
javac -d . Service.java SampleService.java ControllerServlet.java
cd ../../..
echo "Compile Finished...................................................."
# Move 'www.war' file to /war directory
mv www.war ./war/
echo "Moved www.war file to /war directory................................"
# Start Tomcat
tomcat/bin/startup.sh
echo "Tomcat Restarted...................................................."
echo "Deploy Completed...................................................."
환경변수의 내용을 화면에 출력하여 확인하기
Windows
echo %CLASSPATH%
Unix, Linux
echo $CLASSPATH
----------------------------------------------------
PATH 환경변수 편집
윈도우
%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
유닉스, 리눅스
환경변수 PATH에 자바경로를 등록하지 않아도 아래처럼 컴파일을 수행할 수 있다
% /usr/local/jdk1.7.0/bin/javac MyClass.java
아래와 같은 명령은 PATH환경변수에 java 의 경로가 등록되어 있지 않다면 오류를 발생한다
% java -version
환경변수를 파일에 저장하여 영구적으로 설정하려면, startup 파일을 편집하여 그 내용에 경로를 아래처럼 등록하면 된다
C Shell의 경우
(~/ .cshrc):
set path=(/usr/local/jdk1.7.0/bin $path):
bash 의 경우
(~/ .bashrc):
PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH
ksh의 경우, ENV 라는 이름의 파일을 아래처럼 편집한다
PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH
sh의 경우 profile 파일(~/ .profile)을 아래처럼 편집한다
PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH
--------------------
위에서 변경한 환경설정 파일을 다시 로드하여 경로가 제대로 인식되는지 확인한다
C Shell(csh)의 경우
% source ~/.cshrc
% java -version
ksh, bash, sh의 경우
% ./.profile
% java -version
------------------------
CLASSPATH 환경변수의 내용 출력해보기
윈도우
echo %CLASSPATH%
유닉스
% echo $CLASSPATH
-------------------------------------
CLASSPATH 환경변수의 디폴트 값은 '.' 이며 현재 디렉토리를 의미한다
JDK 명령행에서 사용할 때 -classpath, -cp
--------------------------------------
CLASSPATH 환경변수 설정법
set CLASSPATH=path1;path2;
환경변수 해제
set CLASSPATH=
환경변수가 시작부터 설정되도록 하려면 각 쉘별로 다음과 같은 파일을 찾아본다
csh, tcsh 쉘의 경우 : .cshrc 파일, setenv 명령
sh, ksh 쉘의 경우 : .profile, export 명령
-------------------------------------------------
CLASSPATH와 와일드 카드
/mydir/* : mydir 디렉토리에 있는 모든 JAR 파일을 지정한다. 클래스는 포함안됨
하위 디렉토리는 포함안됨
CLASSPATH와 패키지 이름
java -classpath C:\java\MyClasses utility.myapp.Cool
CLASSPATH와 폴더, 압축파일 이름
java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool
다수개의 CLASSPATH
java -classpath C:\java\MyClasses;C:\java\OtherClasses ...