자 인코딩 변경 작업 예제 입니다. 한번에 해당 폴더에 있는 인코딩을 전부 변경 할 수 있습니다.
예) 현재 폴더에서 확장자가 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 도 스크립트를 적절히 써주면 만족스럽습니다.
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이고,
아래의 내용은 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 이상은 주로 씁니다.. 상위버전도 나왔구요. 그래도 아쉬운 마음에 올리니 참고하시기 바랍니다. (혹 잘못된 내용이나 문제가 있으면 댓글을 부탁드립니다..ㅡㅜ)
자 내용을 보려면 아래의 펼치기 버튼을 클릭하세요.^^
# This is the main Apache server configuration file.
# Timeout: 클라이언트와 연결이 되었을 때 송수신을 하지 않아 타임아웃으로 처리하는 시간
Timeout 120
# KeepAlive: 접속한 채로 아무 반응이 없을 경우 지속적인 연결을 허용할지 안할지 설정
KeepAlive Off
# MaxKeepAliveRequests: 지속적인 연결 동안에 서버에게 요청할 수 있는 최대의 수
0이면 무제한. 크면 클수록 최대의 성능을 발휘
MaxKeepAliveRequests 100
# KeepAliveTimeout: 같은 클라이언트의 같은 연결 상태에서 몇 초 동안 다음 요청을 기다릴 것인지 설정
KeepAliveTimeout 15
# Listen: 디폴트 이외에 특별한 IP또는 포트에 대해서도 연결 할 수 있도록 허용합니다.
<VirtualHost>부분에서 설정되는 가상호스트를 설정하기 위해서 필요합니다.
#Listen 192.168.123.250:80
Listen 80
# 아래의 디렉토리로부터 설정을 불러옵니다.
Include conf.d/*.conf
# server-status로 서버의 상태를 볼 때 자세한 정보로 볼 것인지 기본만 볼 것인지 설정합니다. 기본값은 off입니다.
#ExtendedStatus On
# 만약에 httpd를 특별한 다른 유저나 그룹에서 사용하기를 원한다면 변경 후 apache 프로세스를 재시작 해야 합니다.
User apache
Group apache
## Section 2: 'Main' server configuration
메인 서버가 사용하는 값을 설정합니다.
<VirtualHost>에서 설정하지 않은 것은 여기서 지정된 기본값으로 적용됩니다.
또한 여기서 지정한 값을 <VirtualHost>내에서도 지정할 수 있으며 이 경우엔 각 <VirtualHost>내에서 지정한 값이 우선 설정됩니다.
# ServerAdmin: 문제가 생겼을지 보내질 메일 주소를 설정합니다.
ServerAdmin root@localhost
# 클라이언트에게 보여주는 호스트 이름을 지정합니다. DNS name이 유효하지 않아도 호스트에서는 사용하는 것처럼 보이게 합니다. 호스트가 DNS name을 등록하지 않았다면 그 IP주소를 여기에 입력합니다. 어떻게든 이 주소로 접근이 가능할 것입니다.
#ServerName www.example.com:80
# UseCanonicalName: URL과 SERVER_NAME과 SERVER_PORT 변수가 어떻게 아파치가 참조할지 결정합니다. off를 하면 Hostname과 Port를 클라이언트에게 제공합니다. On으로 설정하면 아파치는 ServerName 값을 직접적으로 사용합니다.
UseCanonicalName Off
# DocumentRoot: 제공할 웹문서가 어느 곳에 위치할지 디렉토리를 설정합니다. 그러나 심볼릭 링크와 aliases는 다른 지점을 가리킬 수 있습니다.
DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
# 원하고 싶은 디렉토리로 바꾸면 됩니다.
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# UserDir: 하나의 웹서버에 여러 사용자의 홈페이지를 관리할 때 필요한 개별 가입자의 홈페이지 디렉토리를 설정합니다.
경로의 마지막에는 웹서버의 userid가 접근할 수 있는 ‘public_html' 디렉토리가 반드시 있어야 합니다. 이는 보통 ~userid의 711 권한과 ~userid/public_html의 755권한을 의미하고 문서는 누구나 읽을 수 있어야 합니다. 반면에 클라이언트는 "403 Forbidden" 메시지를 받습니다.
<IfModule mod_userdir.c>
#
# 기본적으로 UserDIr은 허용하기 전까지 사용불가입니다.
#
UserDir disable
#"UserDir disable" line를 삭제하고 아래의 주석을 제거함으로써 사용이 가능해집니다.
#
#UserDir public_html
</IfModule>
# UserDir 디렉토리에 접근하도록 설정합니다. 아래는 예시입니다. 이 사이트는 읽기전용 제한이 있습니다.
# DirectoryIndex: 해당 홈 디렉토리의 메인 파일을 지정합니다. DirectoryIndex 바로 다음
# 에 올수록 우선순위가 높습니다.
DirectoryIndex index.html index.html.var
# AccessFileName: 디렉토리 별로 접근 제어할 정보를 담고 있는 파일을 지정합니다.
디렉토리 별로 인증을 거쳐서 접근할 수 있는 설정을 하기 위한 것입니다.
AccessFileName .htaccess
# 아래는 웹 클라이언트가 .htaccess와 .htpasswd 파일을 볼 수 없도록 막아 놓은 설정입니다.
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
# mime.types을 설정한 파일을 지정합니다.
TypesConfig /etc/mime.types
# DefaultType는 기본적인 MIME 타입에 정의 되어 있지 않은 파일 형식에 대한 요청을 받았을 때 알 수 없는 문서 타입에 대하여 사용할 기본적인 타입을 설정합니다.
DefaultType text/plain
# mod_mime_magic module은 서버가 파일의 컨텐츠를 각각의 타입을 결정하는데 다양한 힌트를 줍니다. MIMEMagicFile은 모듈이 어디에 힌트 정의가 위치해있는지 알려줍니다.
<IfModule mod_mime_magic.c>
# MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule>
# HostnameLookups: 웹서버의 로그를 지정하는 Format에서 “DNS Lookup"으로 지정하였을 때, domain으로 남길 것인가 IP 주소를 남길 것인가를 지정합니다. 디폴트값은 off 이며. 로그에 IP 주소로 남기는 것이며, Domainame로 변경할 필요가 없으므로 on으로 설정한 것보다는 속도가 좀 더 빠릅니다. on으로 하게 되면 IP주소를 IP domainame 으로 변환해야 하므로 속도가 조금 느리므로 추천하지는 안습니다.
HostnameLookups Off
# EnableMMAP: 파일 전송을 memory-mapping을 사용할 것인지 아닌지를 설정합니다.
# 디폴트는 on. NFS-mounted 파일 시스템을 사용할 경우 off를 하십시오. 몇몇 시스템에서 off를 사용하면 성능 향상이 됩니다.
#
#EnableMMAP off
# EnableSendfile: 커널이 파일 전달에 도움을 줄지 안 줄지 설정합니다.
#
#EnableSendfile off
# ErrorLog: 에러 로그 파일의 위치를 지정합니다.The location of the error log file.
# If you do not specify an ErrorLog directive within a 참고로, <VirtualHost>에서 에러로그를 지정하지 않으면 가상호스트의 로그도 이곳에 저장하게 됩니다..
ErrorLog logs/error_log
# LogLevel: 위에 설정한 로그파일의 얼마나 자세히 적을지 메시지 수를 설정합니다.
# <VirtualHost>의 access logfile을 설정하지 않으면 이곳에 로그들이 저장됩니다.
#
#CustomLog logs/access_log common
#
# agent와 referer의 로그 파일들을 나누기를 원한다면 아래와 같이 설정합니다.
#
#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent
#
# 하나의 로그파일로 접근하려면 아래와 같이 설정합니다.
#
CustomLog logs/access_log combined
#
# 서버가 생성하는 문서 (internal error documents, FTP directory listings, mod_status and mod_info output etc., but not CGI generated documents or custom error documents)의 trailing footer line 설정을 가능하게 합니다.
#
ServerSignature On
#
# Aliases: 필요한 만큼의 aliases를 추가할 수 있습니다.
# 형식 : Alias fakename realname
#
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#
# WebDAV module configuration section.
#
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
</IfModule>
#
# ScriptAlias: 서버 스크립트 디렉토리를 설정합니다.
# 기본적으로 ScriptAliases는 Aiases와 같습니다. 예외적인 것이 실제 디렉토리 안에 들어있는 문서를 서버에 의해 응용프로그램으로 취급되어 실행되는 것입니다.
#
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#
# ScriptAliased를 "/var/www/cgi-bin"로 바꾸고 싶다면 아래와 같이 합니다.
# DefaultLanguage와 AddLanguage에 문서의 언어를 특별하게 지정하도록 허락하게 합니다. default language를 지정하는 경우에 모든 데이터가 보이지 않을 수 있고 원하지 않는 결과를 얻을 수 있습니다. 그러므로 필요한 경우 가상호스트 설정에서 AddDefaultCharset 으로 언어를 지정해 줄 수 있습니다.
# DefaultLanguage nl
# AddLanguage를 사용합니다.
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
#
# 언어의 순위는 컨텐츠의 경우에 따라 설정할 수 있습니다.
# 아래는 단순히 알파벳 순서입니다. 언제든지 원한다면 바꾸실 수 있습니다..
#
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
#
# 기본 charset를 설정합니다. 가상호스트에서 각 가상호스트별로 아래의 옵션을 넣어줌으로써 각 다른 언어를 기본 characterset을 사용할 수 있습니다.
#
AddDefaultCharset UTF-8
#
# MIME 파일 설정을 특별한 파일 타입으로 추가할 수 있습니다.
#
#AddType application/x-tar .tgz
#
# 브라우져에 특별한 인코딩 방식을 추가합니다. 모든 브라우져가 지원하는 것이 아닙니다. #
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# 위처럼 AddEncoding을 한다면 이들의 확장된 미디어 타입도 정의 할 수 있습니다.
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#
# AddHandler는 파일 확장자를 "handlers"에 매핑시켜주게 됩니다.
#
#AddHandler cgi-script .cgi
#AddHandler send-as-is asis
AddHandler type-map var
#
# .shtml files를 위한server-side includes (SSI)를 사용할 수 있도록 합니다.
#
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
#
# Action는 매칭되는 파일이 불려질 때마다 스크립트를 실행시킬 수 있도록 미디어 타입을 정의하도록 합니다.
간단하고 일반적으로(?) 사용 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 옵션으로 나타나는 도움말에서는 이 옵션을 표시하고 있지 않습니다.
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 문서를 참고하기 바랍니다.