mod_url.c : 박원규<wkpark@NOSPAM_kldp.org> README 작성: 권순선<kss@NOSPAM_kldp.org> 수정 박원규<wkpark@NOSPAM_kldp.org> COPYRIGHT: GPL 최종업데이트: 2001/09/05 - 2000/10/11: glibc-2.1.x 와 glibc-2.1.9x 에서 모두 돌아가도록 수정 - 2001/04/03: FreeBSD 및 Solaris에서 테스트 강길상 <pushnpop@NOSPAM_hanmir.com> (감사합니다 :-) - 2002/8/??:김정균님의 mod_url-apache2.c 모듈 업로드 한글로 된 URL을 정상적으로 처리할 수 있게 하는 mod_url.c의 설치 방법은 다음과 같습니다. 현재 실행되고 있는 httpd 프로세스를 확인하여 DSO(Dynamic Shared Object)가 사용 가능한지 확인합니다. 1. DSO 확인 =========== # httpd -l (in debian) Compiled-in modules: http_core.c mod_so.c mod_php3.c # /usr/sbin/httpd -l |grep mod_so (in redhat) mod_so.c 여기서 mod_so.c 가 보이면 DSO를 통해 간편하게 mod_url.c를 설치할 수 있습니다. 2.1. 컴파일(일반적인 경우 RedHat은 아래 참조) ============================================ 설치는 아파치 확장 툴인 apxs를 이용합니다. #apxs -i -a -c mod_url.c 이렇게 실행하면 됩니다. $ apxs -i -a -c mod_url.c gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_url.c ld -Bshareable -o mod_url.so mod_url.o cp mod_url.so /path_to/apache/libexec/mod_url.so chmod 755 /path_to/apache/libexec/mod_url.so [activating module `redurl' in /path_to/apache/etc/httpd.conf] 2.2. 컴파일(RedHat 경우) ======================== 레드헷의 경우는 apxs 가 인스톨되지 않습니다. apache-devel 이 설치되어 있는지 확인하시고, $ rpm -q apache-devel apache-devel-1.3.12-25 (버젼은 1.3.9 이상이면 될겁니다 ) $ gcc -fpic -DSHARED_MODULE -I/usr/include/apache -c mod_url.c 혹은 $ gcc -fpic -DSHARED_MODULE -I/usr/include/apache -DEAPI -c mod_url.c (EAPI 는 버젼 1.3.? 이상에서 지원되는 것인데, error_log 에서 이에 관련된 warning이 보이면 이를 정의하고 컴파일 하세요.) $ gcc -shared -o mod_url.so mod_url.o (혹은 ld -Bshareable -o mod_url.so mod_url.o) $ su # cp mod_url.so /usr/lib/apache/ # chmod 755 /usr/lib/apache/mod_url.so 그런 다음, /etc/httpd/conf/httpd.conf 를 열어서 다음 라인을 추가/확인 [...]는 생략했다는 뜻입니다. -----------8x----------- [...] LoadModule redurl_module modules/mod_url.so [...] AddModule mod_url.c [...] -----------8x----------- 2.3. mod_url 활성화 =================== 아파치 설정 파일인 httpd.conf를 끝부분에 다음과 같은 내용을 추가합니다. ---------8X--------- [...] <IfModule mod_url.c> CheckURL On </IfModule> -------------------- 2.4 재실행 ========== 이제 아파치를 재실행하면 한글 URL이 제대로 인식됩니다. # apachectl restart (or /etc/init.d/httpd restart or /etc/rc.d/init.d/httpd restart) 3. 기타 ======= 배포본에 패키지 형태로 들어 있는 아파치 웹서버의 대부분은 다양한 모듈들을 사용할 수 있게 하기 위해 DSO를 기본적으로 사용 가능하게 해 두었으나 소스로부터 컴파일하여 아파치를 설치한 경우에는 소스를 직접 패치하여야 합니다. *주의: 이 모듈은 현재 아파치 1.3.9와 1.3.11에서 테스트되었습니다. 다른 버전에 대해서는 제대로 테스트되지 못하였으니 혹시 다른 버전에 대해서 테스트해 보신 분은 결과를 알려 주시면 본 문서에 반영하도록 하겠습니다. *주의: 리눅스의 경우는 glibc-2.1.x 환경에서만 됩니다. mod_url.c는 glibc-2.1.x의 iconv()함수를 사용합니다. * iconv() 가 UTF8 <-> EUCKR 을 지원한다면 어떤 시스템에 대하여도 적용가능할 것입니다. 4. TODO ======= * iconv를 이용하므로, EUCKR -> UTF8, UTF8->EUCKR, 혹은 UTF8 -> EUCJP등등 어떠한 변환도 가능합니다. 이것을 옵션으로 지정할 수 있어야 합니다. <IfModule mod_redurl.c> CheckURL On ConvertFrom UTF-8 ConvertTo EUC-KR </IfModule> --[첨부내용]------------------------------------------------------------------ =============== FreeBSD 에 설치 =============== 포트 콜렉션의 iconv(/usr/ports/converts/iconv)를 먼저 설치합니다. /usr/local/share/iconv/charset.aliases 파일을 열어 euc-kr 부분을 찾아 euckr 별명을 추가합니다. # grep -i '^euc-kr' /usr/local/share/iconv/charset.aliases euc-kr cseuckr euckr 외부 라이브러리를 사용하므로 DSO 설치시 FreeBSD에서는 libiconv.a 파일을 포함시켜야합니다. 다음과 같은 방법으로 설치합니다. # apxs -i -a -c -I/usr/local/include -L/usr/local/lib -liconv mod_url.c 나머지 설치방법은 위에서 설명한바와 같습니다. =============== Solaris 에 설치 =============== 솔라리스의 iconv 로케일의 문자셋 이름은 EUCKR 이라는 이름을 사용하지 않으므로 mod_url.c 의 내용중 ``EUCKR''이란 문자열을 ``EUC-KR'' 이라고 수정한 후 위에서 설명한 것(Linux)과 동일한 방법으로 설치하시면 됩니다. 다만 문자셋 이름은 반드시 대문자 EUC-KR 이거나 혹은 man iconv_ko 혹은 iconv_ko.UTF-8 에서 설명하는 KSC5601에 대응하는 이름이어야 합니다. -추신: 솔라리스 7,8 에서 확인했습니다. ================ static 으로 설치 ================ mod_url의 아파치 모듈명이 redurl 이므로 mod_url.c 의 파일명을 mod_redurl.c 로 변경하고 먼저 변경한 후 아파치 configure 옵션에 --add-module=/path/to/mod_redurl.c 라고 추가한 후 컴파일 합니다. 이름을 바꾸었으므로 httpd.conf 파일의 내용에 다음처럼 추가합니다. <IfModule mod_redurl.c> CheckURL On </IfModule>