검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/서버와 서비스
참조 원문 : How to Install Varnish Cache (Web Accelerator) in RHEL/CentOS/Fedora and Ubuntu/Debian
관련 글(고급 내용 포함) : Speed Up Your Web Site with Varnish

  Varnish Cache는 오픈 소스 웹 애플리케이션 가속기로서 HTTP 가속기 또는 캐싱 HTTP 리버스 프록시라고도 불리는 종류의 프로그램입니다. HTTP 요청을 받는 서버의 프론트 엔드로 작동하며 페이지를 캐시합니다.

  사용자가 웹사이트를 처음 방문할 때 varnish가 제공한 페이지의 복사본을 보관하고 있다가 어떤 사용자가 같은 페이지에 또 방문했을 때 웹 서버에 페이지를 재요청하는 대신 보관하고 있던 페이지를 제공합니다. 이를 통해 웹사이트의 성능과 확장성을 높이고 많은 트래픽을 다룰 수 있으며 서버의 대역폭을 아낄 수 있습니다.

  이 글에서는 IP가 192.168.2.10인 웹 서버의 캐시 서버로서 IP가 192.168.2.3인 서버에 Varnish를 설치해보겠습니다. 그러므로 아래 설치 작업은 192.168.2.3 서버에서 하는 것으로 가정합니다.


레드햇 계열에 설치하는 방법
  Varnish가 EPEL(Extra Packages Enterprise Linux) 저장소에 있긴 하지만 구버전이므로 홈페이지의 저장소를 통해 설치하는 방법을 소개합니다.
# wget http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm
# rpm --nosignature -i varnish-release-3.0-1.noarch.rpm
# yum install varnish


우분투에 설치하는 방법
  우분투의 저장소에도 패키지가 있지만 위와 같은 이유로 홈페이지의 저장소를 통해 설치합니다.
# wget http://repo.varnish-cache.org/debian/GPG-key.txt
# apt-key add GPG-key.txt
# echo "deb http://repo.varnish-cache.org/ubuntu/ precise varnish-3.0" | sudo tee -a /etc/apt/sources.list
# sudo apt-get update
# sudo apt-get install varnish


데비안에 설치하는 방법
  역시나 같은 이유로 홈페이지 저장소를 통해 설치합니다. 우분투와 저장소 경로가 약간 다릅니다.
# wget http://repo.varnish-cache.org/debian/GPG-key.txt
# apt-key add GPG-key.txt
# echo "deb http://repo.varnish-cache.org/debian/ squeeze varnish-3.0" >> /etc/apt/sources.list
# apt-get update
# apt-get install varnish


부팅 시 Varnish 웹 가속기를 시작하게 하기
  레드햇 계열 배포판이라면 아래 명령어로 부팅 시 자동으로 시작하게 합니다. 우분투는 설치 시 자동으로 설정되는 것을 확인했습니다.
# chkconfig --level 345 varnish on


아파치와 연동하기 위한 최소 설정
  Varnish는 2개의 주요 설정 파일이 존재합니다. 첫 번째 설정 파일은 시스템 전역 설정 파일로 레드햇 계열의 경우 /etc/sysconfig/varnish, 데비안 계열의 경우 /etc/default/varnish 파일입니다. 이 파일은 Varnish의 주요 전역 설정 파일로 그 내용 중 지금 가장 중요한 것은 Varnish가 사용할 포트입니다. Varnish는 기본적으로 6081 포트를 사용하지만 웹 서버의 캐시 서버로 사용할 것이기 때문에 80포트를 사용하도록 수정하겠습니다. 아래는 80포트를 사용하도록 수정한 모습입니다.
DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"
  두 번째 설정 파일은 /etc/varnish/default.vcl 파일입니다. 이 파일은 Varnish 설정의 대부분을 담당하고 있습니다. 지금은 아래의 부분만 수정합니다.
backend default {
    .host = "192.168.2.10";
    .port = "80";
}
  웹 서버의 IP와 포트로 수정합니다. 수정 후 Varnish를 작동시킵니다.
# /etc/init.d/varnish start
  이제 아래처럼 curl 프로그램을 통해 Varnish가 제대로 작동하고 있는지 확인합니다. 물론 웹 브라우저로도 확인해봅니다.
$ curl -I http://192.168.2.3
HTTP/1.1 200 OK
Server: Apache/2.2.24 (PowerStack)
Set-Cookie: TSSESSIONwwwmyservlabcom=17f8459d6ec03b837002ba1f11b9b49b; path=/; domain=192.168.2.3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Length: 14582
Accept-Ranges: bytes
Date: Mon, 08 Jul 2013 11:50:12 GMT
X-Varnish: 1229318888
Age: 0
Via: 1.1 varnish
Connection: keep-alive
2013/07/08 20:54 2013/07/08 20:54
Posted
Filed under 프로그램과 명령어/서버와 서비스
참조 원문 : Add These Modules to Enhance Apache Web Server

1. ModWorker로 성능 향상
  CentOS를 기준으로 봤을 때 아파치는 prefork mode에서 서버에 접속하려는 모든 원격 클라이언트를 상대하기 위해 하나의 부모 프로세스가 자식 프로세스를 필요한 만큼 복제하는 책임을 지는 Multi-Processing Module(MPM)을 사용한다. 하지만 클라이언트의 요구가 발생할 때마다 동적으로 프로세스를 관리하는 것은 효율성이 떨어지는데 그 이유는 실행과 중단 작업이 시간과 자원을 많이 사용하기 때문이다. ModPrefork는 클라이언트의 요청을 기다리는 아파치 자식 인스턴스의 최소(와 최대) 여유 개수를 설정함으로서 그 단점을 상쇄시킨다. 하지만 이 기능은 요청이 산발적으로 폭증하는 사이트에 대처할 만큼 유연하지 못하다.

  ModWorker는 쓰레드를 사용하여 많은 수의 요청을 적은 시스템 자원으로 처리함으로서 ModPrefork의 성능 문제를 해결한다. CentOS에서 ModWorker를 활성화하려면 /etc/sysconfig/httpd 파일에서 'HTTPD=/usr/sbin/httpd.worker'라는 줄의 주석을 해제한 후 'service httpd restart'로 아파치를 재시작한다. 아파치가 정상적으로 모듈을 로드했는지 확인하려면 'apachectl -l' 명령어로 로드한 모듈을 출력하여 그 안에 worker.c가 있는지 확인한다.

  아쉽게도 ModWorker는 모든 아파치 모듈과 완벽히 호환되지 않는데 그 대표적인 예가 바로 ModPHP다. 그래서 ModWorker를 쓰면서 PHP를 서비스해야 한다면 ModPHP 대신 Mod_FastCGI 같은 걸 사용해야 한다.


2. ModPagespeed로 컨텐트 최적화
  ModPagespeed는 구글이 개발한 올인원 최적화 모듈로 ModDeflate로 출력을 재작성 및 압축하여 더 빠른 클라이언트 경험을 제공한다. Pagespeed(웹 페이지의 성능을 최적화하기 위한 툴셋)로부터 최고의 사례를 자동으로 적용한다. 아직 베타이긴 하지만 충분히 안정된 상태다.

  설치는 소스와 바이너리 패키지를 모두 제공한다. CentOS의 경우 ModPagespeed의 홈페이지에서 공식 설치 패키지를 받을 수 있다. 설치 및 아파치 재시작 후 'apachectl -t -D DUMP_MODULES' 명령어로 pagespeed_module 모듈에 제대로 로드됐는지 확인한다.

  모듈이 로드됐다면 설정 파일인 /etc/httpd/conf.d/pagespeed.conf 파일을 열어 사용할 수 있는 옵션을 확인한다. <Location /mod_pagespeed_statistics> directive에서 'Allow from 127.0.0.1'의 다음 줄에 로컬 클라이언트 IP를 추가한다. 예를 들어 IP가 192.168.0.2라면 'Allow from 192.168.0.2'라는 줄을 추가한다. 그 후 아파치를 리로드하면 http://서버IP/mod_pagespeed_statistics에서 ModPagespeed의 상태를 볼 수 있다. 이를 통해 최적화의 결과를 볼 수 있다.


3. ModSecurity로 보안 강화
  ModSecurity는 아파치의 가장 유명한 보안 모듈이다. 웹 트래픽 감시, 차단, 감사를 제공한다. 자세한 것은 이곳을 참조.


4. ModGeoIP로 방문자의 국가 감지
  로컬에 보관하고 있는 GeoIP 데이터베이스를 사용해서 방문자의 국가를 식별한다. 이를 이용해 국가에 따라 다른 페이지로 리다이렉팅하거나 접근을 차단할 수 있다. 자세한 내용은 홈페이지 참조.


5. ModStatus로 모니터링
  ModStatus 모듈은 현재 서버의 상태에 대한 정보를 제공한다. CentOS의 경우 기본적으로 설치되지만 활성화되어 있지는 않다. 활성화하려면 아파치의 메인 설정 파일인 /etc/httpd/conf/httpd.conf 파일을 열어 아래 내용의 주석을 제거하고 'your_ip'를 당신의 IP로 바꾼다.
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from your_ip
</Location>
  그리고 ExtendedStatus On도 주석을 해제하여 현재 요청이 접근하려는 URL 등 더 자세한 정보들을 볼 수도 있다. 아파치를 재시작한 후  http://당신의_서버/server-status에 접근하여 ModStatus가 작동하는지 확인할 수 있다. 이곳에서 아파치와 관련 있는 각종 수치, 프로세스(fork 또는 thread), CPU 사용률을 볼 수 있다.

  http://당신의_서버/server-status?auto처럼 뒤에 ?auto를 붙이면 기계가 읽기 좋은 형식으로 출력한다. 그래서 다른 프로그램(예: Cacti, Nagios)들은 이것을 읽어서 그 내용을 분석한다.


6. ModSpamhaus로 외부 공격 방어
  ModSpamhaus는 각종 공격 및 알려진 불량 IP의 접근을 차단하는 모듈이다. 설치하려면 최신 설치 패키지에서 받아 압축을 해제한다. src 디렉토리에서 mod_spamhaus.c 파일을 찾아서 'apxs -i -a -c mod_spamhaus.c' 명령어를 실행하여 수동으로 아파치 모듈을 생성한다. 실행한 명령어의 인자에 따르면 디폴트 모듈 디렉토리인 /usr/lib/httpd/modules/ 디렉토리에 설치될 것이며, LoadModule directive로 아파치에 로드되어 활성화될 것이고, C 소스 파일을 컴파일할 것이다.

  설치가 끝나면 /etc/httpd/conf.d/spamhaus.conf 라는 설정 파일을 생성한다. 그 안에 아래의 내용을 넣는다.
<IfModule mod_spamhaus.c>
MS_METHODS POST,PUT,OPTIONS,CONNECT
MS_WhiteList /etc/spamhaus_whitelisted
MS_CacheSize 1000
</IfModule>
  이 설정이면 대부분의 환경에서 무리 없이 사용할 수 있다. MS_METHODS 옵션은 HTTP 메소드 중 어떤 것을 감시해야 하는지를 정의한다. DDOS 공격을 방어하길 원하거나 당신의 웹 페이지가 GET 메소드를 사용한다면 GET도 추가한다. MS_WhiteList 옵션에는 감사에서 예외로 설정할 IP 주소가 담긴 파일을 정의한다. MS_CacheSize는 캐쉬할 IP 주소의 개수를 정의한다. 강한 DDOS 공격을 받는다면 이 값을 늘리는 것이 좋다.

  이 모듈은 사이트의 속도를 느리게 할 것이며 GET 같이 자주 사용하는 HTTP 메소드를 감시할 경우 더더욱 그럴 것이다. 이 문제를 해결하기 위해 자체적으로 rbldnsd(DNS 기반 블록리스트를 운영하기에 적절한 DNS 데몬)를 설치하여 ModSpamhaus에서 MS_DNS 옵션으로 그 주소를 지정할 수 있다. 자체적으로 rbldnsd를 운영하면 로컬 데이터베이스를 사용할 수 있고 외부 데이터베이스를 주기적으로 복사해올 수 있기 때문에 성능을 최적화할 수 있다.
2013/07/03 12:26 2013/07/03 12:26
Posted
Filed under 프로그램과 명령어/서버와 서비스
참조 원문 : My most used htaccess settings

  아파치 웹 서버에서  .htaccess라는 파일을 디렉토리에 두면 그 디렉토리와 하위 디렉토리 내에 한해서 웹 서버의 설정 중 일부를 변경할 수 있습니다. 물론 서버의 설정 파일에 접근할 수 있다면 <Directory> 섹션을 이용해 설정하는 것이 더 좋지만 그게 항상 가능한 일은 아닙니다. 대표적으로 웹 호스팅을 받고 있는 경우가 그렇습니다. 대부분의 호스팅 업체는 이 파일을 통해 서버의 동작을 변경하는 것만 허용하고 있습니다.

  .htaccess 파일(앞에 점이 붙었다는 것 주의)은 일반 텍스트 파일이므로 이후 설명할 내용들은 일반 텍스트 에디터로 작성한 후 설정을 적용할 서버의 디렉토리에 업로드하면 됩니다.

  이 파일을 통해 할 수 있는 대표적인 예로는 디렉토리 접근 시 패스워드 요구, 리다이렉션 생성, php 설정 조정, 파일의 캐싱 제어, 파일 확장자에 따른 서버의 처리 방식 제어(예: HTML 파일을 그냥 전송하는 대신 php 파일처럼 처리) 같은 것이 있습니다.


more..


more..


more..


more..


more..


more..


more..


more..

2010/12/08 16:40 2010/12/08 16:40