시스템/Linux2012. 3. 22. 17:02


















오늘은 리눅스에서 인코딩 변경 작업에 대해 포스팅 하고자 합니다.

인코딩 변경 작업시 보통 iconv 명령어를 이용하여 작업을 많이 합니다.

하지만 다수의 파일을 인코딩 변경을 하려면 쉘 스크립트를 작성해야 합니다.

자 인코딩 변경 작업 예제 입니다. 한번에 해당 폴더에 있는 인코딩을 전부 변경 할 수 있습니다.

예) 현재 폴더에서 확장자가 php 인 파일의 인코딩을 utf-8 에서 euc-kr 로 수정
for PHP in `find ./ -name "*.php"` ; do iconv -c -f utf-8 -t euc-kr $PHP > $PHP.bak && mv $PHP.bak $PHP ;  done

위 내용에 대해 간단히 설명을 드리자면!

for 명령어로 find ./ -name "*.php" 의 값을 PHP 라는 변수로 선언 한뒤 iconv 명령어로 인코딩을 변경한 파일명.bak 파일로 생성합니다.
그다음 mv 명령어 파일명.bak 의 이름의 파일들을 기존 파일명으로 덮어씌어버리는 겁니다.

주의할점은 기본 리눅스 쉘에서는 alias mv='mv -i' 가 지정되어있습니다. 같은 이름의 파일을 덮어씌우기전에 물어보는거지요. 이 항목이 기록되어 있는  ~/.bashrc 파일 열어 alias mv='mv -f' 로 수정 후 source ~/.bashrc 후 작업하면 됩니다.

약간의 오류가 생겨 mv 가 몇몇 파일들에 적용이 안될수도 있습니다. 그럴땐 확인 후 다시 수작업으로 변경해줘야합니다.
이 경우 스크립트는 작성 후 다시 게시 하겟습니다. ㅜㅜ

iconv 인코딩용으로는 상당히 쓸만합니다. recode 라는 명령어도 있지만 iconv 도 스크립트를 적절히 써주면 만족스럽습니다. 

iconv 의 자세한 설명은  http://mindpower.kr/10 여기를 클릭

이상입니다.

'시스템 > Linux' 카테고리의 다른 글

리눅스 명령어 - ac  (0) 2012.07.11
리눅스 명령어 - ab  (0) 2012.07.05
리눅스 명령어 - a2p  (0) 2012.07.04
find 명령어  (1) 2012.05.22
make: *** [ext/mysqli/mysqli_api.lo] Error 1  (0) 2012.03.15
vsftpd 설치와 옵션(Cent OS)  (0) 2012.01.16
Apache conf 파일 분석 ( 2.2.x 이하 apache )  (0) 2012.01.16
Linux 환경에서 IP alias 기능 사용  (0) 2011.12.12
Posted by 소울하트
시스템/Windows2012. 3. 20. 23:14

IIS FTP 패시브모드 포트 범위 설정

FTP 패시브모드 설정에 대해 정리해놓은 내용입니다. FTP 설정 시 기본으로 해주면 편합니다.

</STYLE>IIS기반 FTP 서비스는 패시브모드(Passive-mode)와 액티브모드(Active-mode) 2가지를 지원합니다.

Active-mode 는 클라이언트 기반 접속이여서 웹서버쪽에 20,21 번이 열린 FTP를 접속시 클라이언트에서는 포트가 랜덤포트를 이용하나 서버 포트(예:21)는 변함이 없습니다. 클라이언트는 서버쪽에 port 명령어를 보내게 됩니다.

Passive-mode 는 서버쪽 21번 포트로 접속시, 클라이언트의 랜덤포트가 아니라 서버쪽 랜덤포트를 이용하게 됩니다. 서버는 클라언트에게 pasv 명령어를 보내며, 클라이언트는 승인하게 되고 연결이 이루어 집니다.

문제는, 패시브모드의 경우 서버쪽에 1024 에서 65535 포트 사이를 랜덤하게 할당하며, 네트워크 세션이 있을때마다 신규포트를 이용하게 됩니다.
이때, 서버쪽에 방화벽을 운영하거나 대량접속서비스가 운영중일때는 네트워크 자원이 부족하게 되어 접속장애가 있을수 있습니다. 예를들면 패시브모드시 어떤 랜덤포트를 사용하게 되는지 알수가 없으므로 방화벽에서 차단이 되는 경우가 종종 발생합니다.

패시브모드 에서의 서버쪽 랜덤 포트범위를 조정하므로써, 이를 해결할 수 있습니다.

Windows 2000 Server 및 Windows Server 2003 모두  PassivePortRange 값을 이용하여 조정이 가능합니다.


Windows Server 2003 의 경우

1. 메타베이스를 수정하는 방법입니다.
  (메타베이스를 수정할려면, IIS MMC에서 메타베이스 직접수정 허용 설정이 되어 있어야 합니다.)
   C:\WINDOWS\system32\inetsrv\metabase.xml
  <IISFtpService> 아래에
  PassivePortRange="##### - #####"
  추가 - 저장 후 - IIS 재시작


2. ADSUTIL을 이용하는 방법입니다.
   Adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5700"


Windows 2000 Server 의 경우는 레지스트리 값을 추가해야 합니다.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\
에서 REG_SZ 타입의 PassivePortRange 값이름을 추가합니다.

값으로는, 임의의 포트로 범위를 설정한다.
(예 : 30000-31000)


위 2경우 모두 설정후 FTP 서비스를 재시작 해야 적용되며, 위와 같이 범위 또는 특정포트값을 설정해도 된다.

서버에 방화벽을 운영하는 서버인데, 클라이언트가 액티브모드를 지원하지 않는경우에 적용하는 것이 좋은 해결책이 될 수 있다.

 

Web Browser 인 Internet Explore 는 기본의 Paasive Mode이고,

다른 FTP Program은 선택 또는 Active Mode 입니다
 
문의사항이 있으면 언제든지 댓글 환영합니다.!

'시스템 > Windows' 카테고리의 다른 글

WebKnight MONITORED: IP address (previous alert)  (0) 2013.02.25
IIS MIME Type  (0) 2012.11.05
Posted by 소울하트
Web/Apache2012. 3. 19. 23:17


아래의 내용은 apache conf 파일인 httpd.conf 파일의 내용입니다. 버전별로 httpd.conf 의 내용 차이가 있지만
 큰 틀은 벗어나지 않습니다.

예를 들면 2.2.20 버전의 경우 apache설치위치/conf/extra/   에 각 설정 파일들이 나뉘어져 있고, httpd.conf 파일에서
주석처리가 되어있습니다. 주석처리를 해제하고 extra 에 있는 파일들을 수정하여 사용하여도 되고 extra 에 있는
해당 내용들은 httpd.conf 에 그대로 입력하거나 필요한 옵션들만 추가하여도 전혀 문제가 없습니다.
필요한 파일이나 참조할 설정파일이 있다면 httpd.conf 에서 Include 해주면 되니깐요. ^^

물론 항상 작업 전에는 httpd.conf 는 백업을 해놓는 것을 잊지 마세요.!
또한 작업후 apache 재시작 하기전apache설치위치/bin/apachectl configtest 또는 apache설치위치/bin/httpd -t 로 구문에 오류가 없는지 확인은 필수 입니다.

아래의 내용들은 제가 2.0.X 시절 httpd.conf 파일의 내용에서 각 항목들에 주석을 달아놓은 문서입니다.
요즘은 2.2.20 이상은 주로 씁니다.. 상위버전도 나왔구요. 그래도 아쉬운 마음에 올리니 참고하시기 바랍니다.
(혹 잘못된 내용이나 문제가 있으면 댓글을 부탁드립니다..ㅡㅜ)

자 내용을 보려면 아래의 펼치기 버튼을 클릭하세요.^^




'Web > Apache' 카테고리의 다른 글

Apache2 MPM prefork & worker  (0) 2013.11.25
Apache 메모리 누수  (0) 2012.09.05
Apache - mod_jk2 설치 중 configure: error: can't locate libapr 에러  (0) 2012.07.26
apache configure 옵션  (0) 2012.03.19
Posted by 소울하트
Web/Apache2012. 3. 19. 22:47

apache configure 옵션 입니다. 정확한 내용은 아래의 주소에 가면 번역된 문서로 확인이 가능합니다.

http://httpd.apache.org/docs/2.0/programs/configure.html   아래 펼치기에 본문에서 퍼온 내용있습니다.

간단하고 일반적으로(?) 사용 apache configure 옵션은 아래를 참조해주세요.^^

apache configure 옵션 (autoconf 출력옵션) 

--help
모든 옵션과 사용법을 화면에 출력해줍니다. 실제로 configure가 이루어지지 않습니다.

--prefix=/usr/local/share/apache
Apache 웹서버가 설치될 디렉토리를 설정합니다. 이 문서에서는 RedHat에 포함된 Apache의 기본 디렉토리 구조를 따라가고자 이 옵션을 사용하지 않고 --enable-layout=RedHat이라는 옵션을 사용했습니다.

--enable-layout=RedHat
이 옵션을 통해 여러가지 플랫폼에 해당하는 적절한 디렉토리 구조를 따라 Apache를 설치할 수 있습니다. 각 플랫폼의 path layout은 config.layout 파일에 기록되어 있습니다.

--enable-rule=SHARED_CORE
Apache 컴파일시 rule을 지정합니다. SHARED_CORE는 DSO(Dynamic Shared Objects, 동적공유객체)를 사용할 수 있는 형태로 Apache를 컴파일하도록 하는 일종의 규칙입니다. 이 옵션을 지정해주면 DSO로 컴파일된 아파치에서 제공하지 않는 외부 모듈들을 선택적으로 사용할 수 있게 됩니다.
기본형은 --enable-rule=[RULE-NAME]으로 [RULE-NAME]에 해당하는 컴파일 규칙을 enable시킵니다. --help 옵션으로 나타나는 도움말에서는 이 옵션을 표시하고 있지 않습니다.

--enable-modules=so
mod_so(so_module)를 Apache에 컴파일하여 포함시킵니다.(모듈의 정적 컴파일)
기본형은 --enable-modules=[MODULE-LIST]로 공백으로 구분한 [MODULE-LIST]에 나와있는 모듈들을 컴파일하여 포함합니다.

--enable-so
Apache가 실행시 특별한 옵션없이 자동으로 동적공유객체(DSO-Dynamic Shared Objects)를 읽어들일 수 있도록 하기 위한 설정옵션입니다.

이외에 여러가지 옵션들이 제공됩니다. 추가적인 사항은 Apache HTTP Server Version 2.0 문서 http://httpd.apache.org/docs-2.0/ 을 찾아보거나 --help 옵션으로 확인하기 바랍니다.

* 모듈

Apache는 모듈화된 설계로 이루어진 프로그램입니다. 모듈은 특별한 기능을 수행하기 위한 작은 프로그램으로 이해할 수 있습니다. 즉, 모듈마다 각각의 역할이 다르기 때문에 핵심 구현부 또는 실행부에 추가적으로 포함시켜 원하는 기능을 선택적으로 사용할 수 있습니다. Apache의 핵심 기능을 구현하는 모듈은 core이고 core를 기반으로 모듈을 추가하여 확장된 기능을 사용할 수 있습니다. 모듈은 Apache 컴파일시 정적으로 포함시킬 수 있고, 또는 DSO mechanism에 의해 Apache 컴파일 이후 추가적으로 포함하여 사용할 수 있습니다. DSO(Dynamic Shared Objects)를 지원하기 위해서는 컴파일시 configure 옵션으로 --enable-rule=SHARED_CORE를 추가하여 DSO 지원 형식으로 Apache를 컴파일하여야 하며, mod_so 모듈을 컴파일시 포함시켜야 합니다. mod_so 모듈은 core를 제외하고 DSO가 될 수 없는 유일한 모듈로서 Apache 핵심에 정적으로 컴파일해야 하며, DSO로 컴파일된 모듈을 Apache에서 읽어들이기 위한 기능을 제공합니다. 따라서 configure 진행시 일반적으로 mod_so를 포함하도록 합니다. 나머지 모듈에 관하여는 Apache Document를 참고하기 바랍니다.

* 동적공유객체(DSO-Dynamic Shared Objects)

Apache가 동적으로 load할 수 있는 객체입니다. core와 mod_so를 제외한 다른 모든 아파치 모듈 소스를 DSO 형식의 모듈로 컴파일하여 Apache에서 load하여 사용할 수 있습니다. DSO로 사용할 아파치 모듈을 쉽게 만들기 위해서 apxs(Apache Extension Tool)라는 지원프로그램이 있습니다. 이 프로그램으로 아파치 배포본 소스 트리 없이, DSO 지원을 위한 플랫폼 특유의 컴파일러 옵션과 링커 옵션을 고려하지 않고 모듈 소스를 DSO 모듈로 쉽게 컴파일할 수 있습니다. PHP와 Tomcat 등 외부 프로그램에서 제공하는 DSO 모듈은 프로그램 configure시 apxs를 사용한 옵션을 통해 프로그램과 함께 컴파일되어 생성됩니다. 자세한 사항은 Apache Document 내의 동적공유객체(DSO) http://httpd.apache.org/docs-2.0/dso.html 문서를 참고하기 바랍니다.





'Web > Apache' 카테고리의 다른 글

Apache2 MPM prefork & worker  (0) 2013.11.25
Apache 메모리 누수  (0) 2012.09.05
Apache - mod_jk2 설치 중 configure: error: can't locate libapr 에러  (0) 2012.07.26
apache conf (httpd.conf)  (0) 2012.03.19
Posted by 소울하트
시스템/Linux2012. 3. 15. 09:56

make: *** [ext/mysqli/mysqli_api.lo] Error 1   해당 오류는 5.2.1 Bug 입니다..

php 5.2.1 make 시 mysqli 오류

/usr/local/php/ext/mysqli/mysqli_api.c: In function 'zif_mysqli_stmt_bind_param':
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: 'gptr' undeclared (first use in this function)
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: (Each undeclared identifier is reported only once
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: for each function it appears in.)
/usr/local/php/ext/mysqli/mysqli_api.c: In function 'zif_mysqli_stmt_execute':
/usr/local/php/ext/mysqli/mysqli_api.c:603: error: 'gptr' undeclared (first use in this function)
make: *** [ext/mysqli/mysqli_api.lo] Error 1


위와 같이 오류 발생시

/usr/local/php/ext/mysqli/mysqli_api.c 에서
gptr 을 char* 로 모두 변경 후 make 를 해줘야합니다.

vi 편집기로 해당 파일을 열어서 입력모드에서 $s/gptr/char*/g 로 전체 수정 하면 됩니다.

Posted by 소울하트