|
썬 자바 시스템 웹 서버 7.0(앞으로 웹 서버 7.0이라 명함)은 현재 테크놀로지 프리뷰 1 버젼으로, 자바 서블릿 2.4와 자바서버 페이지 2.0을 지원하고 자바 표준 태그 라이브러리(JSTL) 1.1 스펙을 지원 합니다. 이 글은 아파치 톰캣 5.5.16(앞으로 톰캣이라 칭함)상의 웹 어플리케이션들(서블릿 혹은 JSP 같은) 을 웹 써버 7.0으로 마이그레이션 하는 방법에 대해 설명합니다. 또한 파일-기반의 수정으로 유저 계정을 만드는 방법에 대해서도 설명합니다. 마지막으로 이 글은 자바 네이밍 디렉토리 인터페이스(JNDI) 어플리케이션과 자바 데이타베이스 연결(JDBC) 등을 설정하는 단계에 대해 설명하고 보안 소켓 레이어(SSL)을 생성 하는 방법이 대해서도 설명합니다.
이 글은 간단한 시작 가이드의 용도로 쓰여졌 습니다. 자세한 사항은 웹 써버 7.0 의 문서를 참고 바랍니다.
웹 써버 7.0 의 관리는 관리 콘솔 혹은 커맨드 라인 인터페이스(CLI)를 이용해서 수행됩니다. 이 글은 CLI 툴인 WS7_INSTALL_ROOT/bin 에 존재 하는 wadm 을 사용하였습니다. 여기서 WS7_INSTALL_ROOT 는 웹 써버 7.0 의 설치 루트 디렉토리를 의미 합니다.
주의: 비록 이 글에서의 커맨드 라인 명령들이 여러 라인으로 겹쳐지더라도 모두 한 라인에 입력해야 합니다.
wadm 커맨드를 실행 시키려면 wadm 가 패스워드를 입력하도록 합니다 대신 사용자는 패스워드 파일을 설정할 수 있고 아래에서 설명 된 대로 --password-file 옵션의 인자로 넘겨 줄 수 있습니다. 사용자는 wadm 커맨드를 커맨드 쉘에서 바로 실행 시키기 위해서 패스워드 파일이 필요하거나 이것을 스크립트를 이용해 자동으로 처리 할 수 있습니다. 이 글은 패스워드 파일 접근법을 사용 합니다.
패스워드 파일을 설정하기 위해 임의의 파일 이름을 결정하고 (admin.passwd 라고 가정) 다음의 라인을 파일에 추가 시킵니다:
wadm_password=admin_password
wadm 커맨드를 실행 시키기 전에 (--help를 제외한) 사용자는 반드시 관리 서버를 실행 시켜야 합니다. 다음과 같이 입력합니다:
% cd WS7_INSTALL_ROOT/admin-server/bin
% ./startserv
이 글은 사용자가 웹 서버 7.0과 톰캣을 설치 했다고 가정 합니다. 이 두 프로그램은 다음의 링크에서 받으 실 수 있습니다: 웹 서버 그리고 톰캣. 다음은 앞으로 이 글을 위한 팁과 힌트를 제공합니다:
- WS7_INSTALL_ROOT 은 웹 서버 7.0의 설치 루트 디렉토리를 나타 냅니다.
- CATALINA_HOME 는 톰캣의 설치 루트 디렉토리를 나타 냅니다.
- 슬래시 (
/) 는 유닉스의 파일 구분자 입니다. 만약 윈도우를 사용하고 있다면 백 슬래시 (\) 가 사용 됩니다.
- 이 글에서는 This article assumes a configuration named config1 and a virtual server, also named config1, on the config1 configuration. Therefore, for
wadmcommands, config1 is the argument for both the--configand--vs(virtual server) options. You must replace config1 with the appropriate values.
현존하는 설정들을 보기 위해서 다음과 같이 입력합니다:% ./wadm list-configs --user=admin_user--password-file=admin_passwd_file--host=admin_host--port=admin_ssl_port--config=config1
config1 에 존재하는 가상 서버들을 보기 위해서 다음과 같이 입력합니다:% ./wadm list-virtual-servers --user=admin_user--password-file=admin_passwd_file--host=admin_host--port=admin_ssl_port--config=config1
주의:--config옵션의 값인 config1 가 현재 존재하는 설정인지 확인 후에 입력하시기 바랍니다.
위의 커맨드에서 admin_host 는 관리 서버가 수행되고 있는 호스트 입니다. admin_ssl_port 는 관리 서버의 SSL 포트 번호 입니다. 앞으로의 글에서wadm커맨드에서 필자는 admin_host 는localhost이고 admin_ssl_port 는8989(기본값) 이라고 가정할 것입니다. 사용자는 이러한 값이 다를때에는 반드시 적절하게 옵션을 주어야 합니다.
- 이 글에서
https-config1 는 인스턴스 이름을 가르킵니다. 커맨드를 입력할때 config1 을 적절한 값으로 변경 하시기 바랍니다. 로컬 설치 시에 즉 관리 서버와 인스턴스가 같은 서버에 있을때https-config1 디렉토리는 WS7_INSTALL_ROOT 아래에 있습니다.
- 이 글의
wadm커맨드 라인은 오직 예제를 위한 것입니다. 독자의 요구사항에 맞게 이러한 것들을 커스터마이즈 하시기 바랍니다. 커맨드의 모든 옵션을 확인 하길 원한다면wadm--help커맨드를 입력하시기 바랍니다. 특정한 커맨드에 대한 도움말은 다음과 같이 얻으시기 바랍니다:% ./wadm command_name --help
예를 들어:% ./wadm list-configs --help
만약 스크롤이 너무 빨리 올라간다면 more로 파이핑 시키시기 바랍니다:% wadmcommand_name--help | more
servlets-examples 웹 어플리케이션은 CATALINA_HOME/webapps 에 위치하고 있습니다. 이 섹션은 톰켓의 웹 어플리케이션 설정을 설명하고 이 어플리케이션에 웹 써버 7.0 에서도 똑같이 동작함을 확인 해주는 절차에 대해 설명 합니다.
먼저 보안 제약 조건과 관련된 web.xml 파일의 부분을 봅시다. 특히 어플리케이션에 의해 사용 되는 롤 이름을 봅시다.
<security-constraint>
<display-name>Example Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!-- Define the context-relative URL(s) to be protected -->
<url-pattern>/jsp/security/protected/*</url-pattern>
<!-- If you list http methods, only those methods are protected -->
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>tomcat</role-name>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<!-- Security roles referenced by this web application -->
<security-role>
<role-name>role1</role-name>
</security-role>
<security-role>
<role-name>tomcat</role-name>
</security-role>
|
위의 부분에서 독자는 이 어플리케이션이 <auth-constraint> 라는 권한 하에 실행 되고 이 롤을 위한 유저 혹은 그룹이들이 요구 됨을 알 수 있습니다.
주의: 웹 서버 7.0 을 마이그레이션 하는 동안 web.xml 은 변경 되면 안됩니다. 이것은 어떠한 웹 어플리케이션도 마찬 가지 입니다.
CATALINA_HOME/conf에 위치하고 있는 tomcat-users.xml 파일을 살펴 봅시다.
<tomcat-users>
<user name="tomcat" password="tomcat" roles="tomcat" />
<user name="role1" password="tomcat" roles="role1" />
<user name="both" password="tomcat" roles="tomcat,role1" />
</tomcat-users>
|
이 파일은 인증 정보를 유지하고 있습니다. 위에서 볼 수 있듯이 유저는 각 롤마다 지정되어 있습니다. 웹 서버 7.0 조금 다른 접근 방식을 취합니다. 다음 섹션을 참고 바랍니다.
웹 서버 7.0에서 사용자는 반드시 웹 어플리케이션의sun-web.xml 파일에 있는 보안 롤에 대한 매핑을 지정 한 다음 아래와 같이 웹 서버 7.0 을 설정 해야 합니다.
sun-web.xml 파일은 웹 어플리케이션과 관련된 런타임 디스크립터 입니다. 아래에는 어떻게 파일이 servlets-examples 을 읽는지에 대한 설명입니다. 여기서 보듯이 principle 이름은 롤과 연관 되어 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server
8.1 Servlet 2.4//EN"
"http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-1.dtd">
<sun-web-app>
<security-role-mapping>
<role-name>tomcat</role-name>
<principal-name>tomcat</principal-name>
</security-role-mapping>
<security-role-mapping>
<role-name>role1</role-name>
<principal-name>role1</principal-name>
</security-role-mapping>
</sun-web-app>
|
위와 같은 파일을 만든 후에 이것을 웹 어플리케이션의 WEB-INF 디렉토리에 위치 시킵니다 (CATALINA_HOME/webapps/servlets-examples/WEB-INF).
웹 서버 7.0에서 사용자는sun-web.xml 에 있는 <principal-name> 에서 언급된 사용자들을 생성해야 하고 그 다음 웹 어플리케이션을 배치 해야 합니다. 다음의 세 단계를 따라야 합니다:
wadm을 설정합니다(Setup for Administration Server CLI 섹션을 참고).
- 웹 어플리케이션을 추가 시킵니다 다음과 같이 실행:
% cdWS7_INSTALL_ROOT/bin% ./wadm add-webapp --user=admin_user--password-file=admin_passwd_file--config=config1--vs=config1--uri=/servlets-examples --file-on-serverCATALINA_HOME/webapps/servlets-examples
- 웹 어플리케이션을 위한 사용자를 생성합니다. 먼저 admin_passwd_file 파일을 생성하고 진이 ㅂ부분에 다음과 같은 라인을 추가 합니다:
wadm_user_password=tomcattomcat-users.xml파일에서 모든 사용자의 패스워드는tomcat입니다. admin_passwd_file 의 이 새로운 항목에 의해 사용자는 패스워드를 모두 동일한tomcat으로 지정했습니다. 사용자를 만드는 동안wadm은 이 패스워드를 읽고 인증 데이타베이스에 저정하기 전에 패스워드를 암호화 합니다.
주의: 사용자를 생성하기 전에 전부 지워 줍니다. 만약wadm이delete커맨드를 수행하는데 실패 한다면, 그냥 에러 메세지를 무시 하시기 바랍니다. 다음과 같이 입력합니다:% ./wadm delete-user --user=admin_user--password-file=admin_passwd--config=config1--authdb=default tomcat% ./wadm create-user --user=admin_user--password-file=admin_passwd_file--config=config1--authdb=default tomcat% ./wadm delete-user --user=admin_user--password-file=admin_passwd_file--config=config1--authdb=default role1% ./wadm create-user --user=admin_user--password-file=admin_passwd_file--config=config1--authdb=default role1
- config1 에 수정사항을 배치 시킵니다. 다음과 같이 입력 합니다:
% ./wadm deploy-config --user=admin_user--password-file=admin_passwd_file config1
- Start the
https-config1 인스턴스를 시작 시킵니다. 다음과 같이 입력합니다:% cdWS7_INSTALL_ROOT/https-config1/bin% ./startserv
successful server startup 이전의 출력은 요청을 수락할 수 있는 호스트 이름과 포트 번호가 준비 되었음을 나타 냅니다. 이러한 값들을 이용해 http://hostname:portnumber/servlets-examples/ 에 접속하여 웹 어플리케이션이 동작하는지 확인 할 수 있습니다.
Another Web application, called jsp-examples, resides in CATALINA_HOME/webapps/jsp-examples. This section explains the Tomcat configuration for that Web application and describes the procedures for ensuring that the application also works on Web Server 7.0.
먼저 보안 제약 사항과 관련된 web.xml 파일의 부분을 살펴 봅시다. <security-constraint> 태그는 web.xml 파일의 servlets-examples 을 위한 태그와 동일 합니다. 알아둘 점은 롤 이름은 이 어플리케이션에 의해 사용 됩니다. 어플리케이션을 위한 롤 이름과 servlets-examples 의 롤 이름이 같기 때문에 servlets-examples 을 위한 톰켓 설정 이 똑같이 적용 될 수 있습니다.
<security-constraint>
<display-name>Example Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!-- Define the context-relative URL(s) to be protected -->
<url-pattern>/security/protected/*</url-pattern>
<!-- If you list http methods, only those methods are protected -->
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>tomcat</role-name>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<!-- Security roles referenced by this web application -->
<security-role>
<role-name>role1</role-name>
</security-role>
<security-role>
<role-name>tomcat</role-name>
</security-role>
|
servlets-examples 에서와 같이 웹 어플리케이션의 sun-web.xml 파일과 웹 서버 7.0의 설정이 적용됩니다.
sun-web.xml여기 sun-web.xml 파일의 부분을 봅시다. 다시한번 말해서 principle 이름은 롤과 연관 되어 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server
8.1 Servlet 2.4//EN"
"http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-1.dtd">
<sun-web-app>
<security-role-mapping>
<role-name>tomcat</role-name>
<principal-name>tomcat</principal-name>
</security-role-mapping>
<security-role-mapping>
<role-name>role1</role-name>
<principal-name>role1</principal-name>
</security-role-mapping>
</sun-web-app>
|
servlets-examples 과 마찬가지로, 사용자는 위와 같은 파일을 생성한 후에 이것을 웹 어플리케이션의 WEB-INF 디렉토리에 위치 시킵니다. (CATALINA_HOME/webapps/jsp-examples/WEB-INF).
만약 servlets-examples 을 웹 서버 7.0에 이미 설정 하였 다면 사용자가 할일은 단지 웹 어플리케이션을 추가 하고 config1 으로 돌아가는 인스턴스에 변경된 설정을 배치 해주는 것 밖에 없습니다 다음을 확인 바랍니다:
% ./wadm add-webapp --user=admin_user --password-file=admin_passwd_file --config=config1 --vs=config1 --uri=/jsp-examples --file-on-server CATALINA_HOME/webapps/jsp-examples
% ./wadm deploy-config --user=admin_user --password-file=admin_passwd_file config1
그렇지 않다면 이전 섹션의 웹 서버 7.0 설정, 에서의 단계를 다시 한번 읽어 보시고 스텝 2번의 웹 어플리케이션을 추가 시켜주는 방법을 아래와 같은 방법으로 해 보시기 바랍니다:
% ./wadm add-webapp --user=admin_user --password-file=admin_passwd_file --config=config1 --vs=config1 --uri=/jsp-examples --file-on-server CATALINA_HOME/webapps/jsp-examples
http://hostname:portnumber/jsp-examples/ 에 접속해서 웹 어플리케이션이 동작 하는지 확인 바랍니다.
웹 서버 7.0에서 jdbc-simple.war 어플리케이션은 WS7_INSTALL_ROOT/samples/java/webapps/jdbc/simple/jdbc-simple.war 에 위치 합니다. 이 섹션은 웹 어플리케이션을 위한 톰켓의 설정을 설명하고 어플리케이션이 웹 서버 7.0에서도 동일하게 잘 돌아 가는지 확인 하는 것이 대한 절차를 설명 합니다
web.xmlweb.xml 파일의 부분을 읽어 봅시다.
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<description>JDBC Simple App</description>
<resource-ref>
<description>Datasource example</description>
<res-ref-name>jdbc/jdbc-simple</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
|
자원 정의를 포함하고 있는 server.xml 파일의 일부분 입니다.
<Context attribute_list ...> <Resource name="jdbc/jdbc-simple" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:mysid" username="scott" password="tiger" maxActive="20" maxIdle="10" maxWait="-1"/> </Context> |
이전 섹션에서 web.xml 파일에 있는 <resource-ref> 태그를 위해 server.xml 파일의 Resource 항목에는 실제 Oracle의 사용자 이름과 패스워드, URL, jdbc/jdbc-simple 이란 이름을 가진 자원을 위한 driverClassName 속성을 정의해주고 있습니다. maxActive 같은 다른 속성은 이 글에서 설명하지 않습니다.
사용자는 반드시 다음 단계에서 설명하는 대로 웹 서버 7.0 을 위한 비슷한 설정 작업을 해주어야 합니다. 이 글은 server.xml 의 각 요소를 일대일로 매핑하여 설명해 주지 않습니다. 좀 더 자세한 설명은 아파치 톰캣 5.5 문서 를 참고 바랍니다.
웹 어플리케이션의 sun-web.xml 파일과 웹 서버 7.0 설정을 적용 합니다.
sun-web.xmlsun-web.xml 파일은 다음과 같이 되어 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server
8.1 Servlet 2.4//EN"
"http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-1.dtd">
<sun-web-app>
<resource-ref>
<res-ref-name>jdbc/jdbc-simple</res-ref-name>
<jndi-name>jdbc/jdbc-simple</jndi-name>
</resource-ref>
</sun-web-app>
|
일반적으로 사용자는 sun-web.xml 을 웹 어플리케이션의 WEB-INF 디렉토리 아래에 집어 넣습니다. 예를 들어 sun-web.xml 은 jdbc-simple.war 에 추가 되었습니다.
JDBC 데이타소스를 이용한 JNDI를 설정하기 위해서는 다음과 같은 작업을 합니다:
wadm을 설정 합니다(Setup for Administration Server CLI 참고 바람).
- JDBC 자원을 생성 합니다:
% cdWS7_INSTALL_ROOT/bin% ./wadm create-jdbc-resource --user=admin_user--password-file=admin_passwd_file--min-connections=2 --config=config1--datasource-class=oracle.jdbc.pool.OracleDataSource jdbc/jdbc-simple
- JDBC 자원 유저 속성을 생성 합니다: 유저 이름, 패스워드, URL:
% ./wadm create-jdbc-resource-userprop --user=admin_user--password-file=admin_passwd_file--config=config1--jndi-name=jdbc/jdbc-simple url=jdbc:oracle:thin:@127.0.0.1:1521:mysid user=scott password=tiger
class-path-suffix를 데이타소스 클래스를 포함하고 있는 JAR 혹은 ZIP 파일로 지정합니다:% ./wadm set-jvm-prop --user=admin_user--password-file=admin_passwd_file--config=config1class-path-suffix=path_to_Oracle_classes/classes12.zip
다음에는class-path-suffix를 수정 합니다:% ./wadm get-jvm-prop --user=admin_user--password-file=admin_passwd_file--config=config1class-path-suffix
출력은 존재하는class-path-suffix를 보여 줄 것입니다. 사용자는 반드시class-path-suffix를 설정하기 전에 새로운 값을 현존 하는 값에 suffix 해줘야 합니다.
jdbc-simple웹 어플리케이션을 추가 시킵니다.:% ./wadm add-webapp --user=admin_user--password-file=admin_passwd_file--config=config1--vs=config1--uri=/jdbc-simple --file-on-serverWS7_INSTALL_ROOT/samples/java/webapps/jdbc/simple/jdbc-simple.war
- config1 의 변경사항을 배치합니다:
% ./wadm deploy-config --user=admin_user--password-file=admin_passwd_file config1
https-config1 인스턴스를 정지하고 시작합니다:% cdWS7_INSTALL_ROOT/https-config1/bin% ./stopserv% ./startserv
http://hostname:portnumber/jdbc-simple/ 에 접속해서 정상적으로 동작하는지 확인 바랍니다
톰켓과는 다르게 웹 서버 7.0은 SSL을 네트워크 보안 서비스(NSS) 라이브러리와 함께 제공합니다. 두개의 wadm 커맨드, create-cert-request 와 install-cert 는 사용자가 Cerificate Aurhority에 인증서를 요청하고 그것을 웹 서버 7.0에 설치 할 수 있도록 합니다.
개발 목적을 위해 사용자는 자기 자신이 사인한 인증서를 웹 서버 7.0 인증서 데이타 베이스 상에 생성 할 수 있습니다. wadm 커맨드 create-selfsigned-cert 를 이용합니다 예를 들어:
% ./wadm create-selfsigned-cert --user=admin_user --password-file=admin_passwd_file --token=internal --locality="Santa Clara" --state=CA --validity=12 --org="Sun Microsystems Inc." --country=US --key-type=rsa --key-size=1024 --config=config1 --server-name=Server --nickname=cert-Server
매개 값인 --locality, --state, --org, 그리고 --country 를 반드시 적절하게 수정해주시기 바랍니다. 또한 다른 옵션 값의 정보를 참조해서 이것들도 올바르게 고쳐 주시기 바랍니다
사용자는 현재 존재하는 HTTP 리스너 중에 한게에 SSL을 활성화 시킬 수 있습니다. 대신 사용자는 SSL을 위한 새로운 HTTP 리스너를 생성 할 수도 있습니다. 다음을 참고 바랍니다:
- HTTP 리스너를 생성합니다. 예를 들어:
% ./wadm create-http-listener --user=admin_user--password-file=admin_passwd_file--listener-port=8095 --config=config1--server-name=krishna2 --default-virtual-server-name=config1http-listener-3
리스너 포트에 지정되기 전에 8095 가 사용 가능한지를 반드시 확인 바랍니다
http-listener-3을 위한 SSL을 활성화 시키고 서버 인증서를 설정해서cert-Server에 의해 인식되도록 합니다:% ./wadm set-ssl-prop --user=admin_user--password-file=admin_passwd_file--config=config1--http-listener=http-listener-3 server-cert-nickname=cert-Server enabled=true
- config1에 변경 사항을 배치 시킵니다.:
% ./wadm deploy-config --user=admin_user--password-file=admin_passwd_file config1
이제 SSL이 동작하고 있는지 테스트 해 봅니다. 만약 기본설정이 localhost 라면 https://localhost:8095 에 접속해 보시기 바랍니다.
- Sun Java System Web Server
- Apache Tomcat
"관리자코너" 카테고리의 다른 글
- 맥북 13인치 코어 2 듀오에 솔라리스10 설치하기 (댓글 2개 / 트랙백 0개) 2008/06/16
- 썬 버추얼 데스크탑 커넥터 1.0(베타)을 사용한 VDI 데모 구축 (댓글 0개 / 트랙백 0개) 2008/01/23
- 솔라리스 Tip Of The Week:SMF (댓글 0개 / 트랙백 0개) 2009/01/23
- GlassFish 를 프로덕션 환경으로 설치하기 (댓글 0개 / 트랙백 0개) 2009/11/23
- 솔라리스 레디 애플리케이션 및 솔루션 (댓글 0개 / 트랙백 0개) 2008/03/13
- 솔라리스 10 에서 TCP Wrapper 사용하기 (댓글 1개 / 트랙백 0개) 2006/01/23
- 시만텍 베리타스 넷백업과 ZFS 스냅샷 통합하기 (댓글 0개 / 트랙백 0개) 2009/07/17
- ZFS, 썬의 최신 파일 시스템(Part 1: 스토리지 무결성, 보안성 및 확장성) (댓글 3개 / 트랙백 1개) 2006/11/23
- USB로 부팅하기 - 설치 (댓글 31개 / 트랙백 1개) 2007/08/20
- 파일과 디렉토리를 안전하게 옮기거나 카피 할 수 있는 방법 (댓글 6개 / 트랙백 0개) 2007/04/23
댓글을 달아 주세요
좋은 정보 감사해요~
2007/09/19 04:13좋은 정보 많이 보고 갑니다.
2007/09/19 22:54