본문 바로가기

Tip&Tech/Server

[팁] MissFlash의 리눅스 유용 단축키, 명령어 모음(21) - 웹서버(APM) 설치 및 환경설정 (4)

* 본 게시물은 MissFlash가 "CentOS 리눅스 구축관리실무"를 참고로 유용한 단축키 및 명령어를 정리한 것입니다.
* 게시물이 지속적으로 업데이트 될 예정이니, 퍼가기 보다는 링크나 트랙백을 이용해 주세요 :)

* MissFlash의 리눅스 유용 명령어 목록
  • MySQL 환경설정(my.cnf)
    • 환경설정 파일 : /etc/my.cnf
    • 대부분의 경우, 기본 설정으로 운영 가능

  • 가상호스트 설정
    • 가상호스트 설정 파일 : extra/httpd-vhosts.conf
    • 가상호스트 설정 예
      • <VirtualHost *:80>
            ServerName www.missflash.com
            DocumentRoot /home/missflash.com/www
        </VirtualHost>
        <VirtualHost *:80>
            ServerName blog.missflash.com
            DocumentRoot /home/missflash.com/blog
        </VirtualHost>
      • 위 설정에서 www.missflash.com으로 접속하면 /home/missflash.com/www 경로로, blog.missflash.com으로 접속하면 /home/missflash.com/blog 경로로 접속함

  • phpMyAdmin : 웹에서 쉽게하는 MySQL 관리
    • 설치 URL : http://www.phpmyadmin.net/
    • 설치 방법
      • 다운로드 : wget http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.10.1-all-languages-utf-8-only.tar.gz[각주:1]
      • 압축해제 : tar zxvf phpMyAdmin-2.10.1-all-languages.tar.gz
      • 디렉토리 이동 : mv phpMyAdmin-2.10.1-all-languages phpmyadmin
      • config.default.php 파일 수정 : vi libraries/config.default.php
        • $cfg['PmaAbsoluteUri'] = 'http://www.missflash.com/phpmyadmin/' : phpmyadmin의 전체 URL을 입력
        • $cfg['Servers'][$i]['auth_type']; = 'http'; : 인증방식 설정(config[각주:2], http[각주:3], cookie[각주:4] 방식 중 택일)

  • ZendOptimizer : PHP 코드를 좀 더 빠른 속도로 실행하자!
    • 설치 URL : http://www.zend.com
    • 설치 방법
      • 압축해제 : tar zxvf ZendOptimizer-3.2.6-linux-glibc21-i386
      • 디렉토리 이동 : cd ZendOptimizer-3.2.6-linux-glibc21-i386
      • install.sh 파일 실행 : ./install.sh

  • mod_cband : 손쉬운 트래픽 관리!!!
    • 주요기능
      • 모든 사용자 대역폭 제한
      • 다운로드 속도 제한
      • 초당요청수 제한
      • IP대역별 제한
      • Support for virtualhosts
      • Support for defined users
      • 웹을 통한 제한결과 확인(/cband-status)
      • 사용자별 제한결과 확인(/cband-status-me)

    • 설치방법
      • 다운로드 : wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz
      • 압축해제 : tar zxvf mod-cband-0.9.7.5.tgz
      • 디렉토리 이동 : cd mod-cband-0.9.7.5
      • 환경설정
        • ./configure \
        • >[각주:5] --with-apxs=/usr/local/server/apache/bin/apxs
      • 인스톨 : make && make install

    • 설치확인
      • httpd.conf 파일에 아래 라인 추가 여부 확인 : LoadModule cband_module modules/mod_cband.so
      • Apache 설치 경로/modules 디렉토리에 mod_cband.so 파일 있는지 확인

    • Cband 사용단위
      • 전송속도 단위
        • bits per second : kbps[각주:6], Mbps, Gbps(1024*1024*1024 bps)
        • bytes per second : kb/s, Mb/s, Gb/s(1024*1024*1024 b/s)
      • 트래픽 쿼터 단위
        • bytes : K, M, G(1000*1000*1000 bytes)
        • bytes : Ki, Mi, Gi(1024*1024*1024 bytes)
      • 시간 단위
        • S, M, H, D, W

    • 가상 호스트별 일일트래픽 제한
      • <IfModule cband_module>
            CBandDefaultExceededURL http://www.missflash.com
            <Location /cband-status-me>
                SetHandler cband-status-me[각주:7]
            </Location>
        </IfModule>

        <VirtualHost *:80>
            ...
            ServerName www.missflash.com
            <Location /cband-status>
                SetHandler cband-status[각주:8]
                Order deny, allow
                Allow from all
            </Location>
            CBandLimit 1Gi[각주:9]
            CBandPeriod 1D[각주:10]
        </VirtualHost>

      • <IfModule cband_module>
            CBandDefaultExceededURL http://www.missflash.com
            <CBandUser mf_user>[각주:11]
                CBandUserLimit 1Gi
                CBandUserPeriod 1D
            </CBandUser>
        </IfModule>

        <Location /cband-status-me>
            SetHandler cband-status-me
        </Location>

        <VirtualHost *:80>
            ...
            CBandUser mf_user[각주:12]
        </VirtualHost>

    • cband-status 항목
      • Server uptime : 웹서버 작동 시간
      • Virtualhosts : CBand를 설정한 가상호스트 목록
      • Users : CBand를 설정한 사용자 목록
      • Remote clients : 가상호스트(Cband-status-me)에 접속하고 있는 클라이언트 목록
      • Server summary : 서버 요약 정보

    • <IfModule cband_module></IfModule> 지시자
      • CBandDefaultExceededURL [URL] : 제한을 초과했을 때 보여줄 URL 지정(없으면 503 에러페이지 출력)
      • CBandDefaultExceededCode [HTTP에러코드] : 제한을 초과했을 때 보여줄 에러코드 설정
      • CBandScoreFlushPeriod [요청수] : scoreboard 파일에 기록할 요청 수(mod_cband 성능에 영향)
      • <CBandUser [사용자명]></CBandUser> : cband 가상 사용자 설정

    • <CBandUser [사용자명]></CBandUser> 지시자
      • CBandUserSpeed [최대속도[각주:13]] [요청수] [동시접속수] : cband 가상 사용자의 최대속도, 요청수, 동시접속수 제한
      • CBandUserLimit [전송량] : cband 가상 사용자의 전송량 제한
      • CBandUserClassLimit [전송량] : cband 가상 사용자에서 정의한 class(IP범위)의 전송량 제한
      • CBandUserExceededURL [URL] : cband 가상 사용자의 제한을 초과했을 때 보여줄 URL(없으면 503 에러페이지 출력)
      • CBandUserExceededSpeed [최대속도[각주:14]] [요청수] [동시접속수] : cband 가상 사용자의 전송량을 초과했을 때 최대속도, 요청수, 동시접속수 제한
      • CBandUserScoreboard : cband 가상 사용자의 scoreboard 파일 설정
      • CBandUserPeriod [기간] : cband 가상 사용자의 용량 제한 기간 설정(이 기간이 지나면 과거 용량은 초기화됨)
      • CBandUserPeriodSlice : cband 가상 사용자의 용량 측정 제한기간 설정(CBandUserPeriod가 4W이고, CBandUserPeriodSlice이 1W이면, 전체 제한용량의 1/4이 한 주당 제한 용량이 됨)
      • <CBandClass [클래스명]></CBandClass> : IP대역을 지정하여 가상호스트에서 IP대역 제한 가능

    • <VirtualHost></VirtualHost> 지시자
      • CBandLimit [전송량] : 제한할 전송량 설정
      • CBandExceededURL [URL] : 제한을 초과했을 때 보여줄 URL, 미지정시 503 에러 발생
      • CBandExceededSpeed [최대속도 kbps] [요청수] [동시접속수] : 전송량을 초과했을 때 전송속도 제한 설정
      • CBandScoreboard [파일이름] : 가상호스트의 scoreboard 파일 지정
      • CBandPeriod [기간] : 전송량 제한기간 설정(기간 초과시 측정된 전송량 초기화)
      • CBandPeriodSlice [기간] : 나눌 기간 명시
      • CBandSpeed [최대속도 kbps] [요청수] [동시접속수] : 가상호스트 도메인의 최대속도, 요청수, 동시접속수 설정
      • CBandRemoteSpeed [최대속도 kbps] [요청수] [동시접속수] : 가송호스트 접속자(IP)의 최대속도, 요청수, 동시접속수 설정
      • CBandClassLimit [클래스이름] [전송량] : 정의한 클래스(IP범위)에 대해 제한할 전송량 설정
      • CBandClassRemoteSpeed [IP대역] [최대속도 kbps] [요청수] [동시접속수] : 정의한 클래스(IP범위)에 대해 최대속도, 요청수, 동시접속수 설정

    • XML 형태로 데이터 얻고 싶은 경우 : http://blog.missflash.com/cband-status?xml, http://blog.missflash.com/cband-status-me?xml과 같이 이용

    • 특정시간에 트래픽 초기화하기
      • mkdir /etc/cron.etc
      • vi /etc/cron.etc/cband_reset.sh
      • vi 편집기에서 아래 코드 작성
#!/bin/bash
# 가상호스트 전체 초기화
wget --http-user=missflash --http-passwd=123456 'http://blog.missflash.com/cband-status/?reset=all'

# CBandUser 전체 초기화
wget --http-user=missflash --http-passwd=123456 'http://blog.missflash.com/cband-status/?reset-user=all'
      • crontab -e
      • 1 0 * * * su - root -c '/etc/cron.etc/cband_reset.sh'

  • mod_evasive : DOS 공격 방어

    • 환경설정
      • httpd.conf 파일 아래 부분에 다음 설정 추가
      • <IfModule mod_evasive20.c>
            DOSHashTableSize    3097[각주:17]
            DOSPageCount           3[각주:18]
            DOSSiteCount             50[각주:19]
            DOSPageInterval        1[각주:20]
            DOSSiteInterval          1[각주:21]
            DOSBlockingPeriod    30[각주:22]
        </IfModule>
      • DOSEmailNotify : IP가 블러킹될 때마다 지정된 주소로 이메일 발송
      • DOSSystemCommand : IP가 블러킹될 때마다 명령행 실행

    • 모듈사용 중지하는 방법
      • LoadModue을 주석처리 하거나 Count 값을 크게 잡아주면됨

    • 인가된 IP주소 할당
      • DOSWhitelist 127.0.0.1,DOSWhitelist 127.*.*.* 과 같이 사용

  • webalizer : 웹 통계관리툴
    • 설치URL : http://www.webalizer.com
    • 설치방법
      • 다운로드 : wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-src.tgz
      • 압축해제 : tar zxvf webalizer-2.01-10-src.tgz
      • 디렉토리 생성
        • mkdir -p /usr/local/server/webalizer/bin/webalizer
        • mkdir -p /usr/local/server/webalizer/man/man1
      • 설치
        • ./configure --prefix=/usr/local/server/webalizer --with-language=korean
        • make && make install
      • 디렉토리 생성 : mkdir /usr/local/server/apache/htdocs/weblog
      • 샘플파일 복사 : cp webalizer.conf.sample webalizer.conf
      • 샘플파일 수정 : vi webalizer.conf
        • LogFile /usr/local/server/apache/logs/access_log
        • OutputDir /usr/local/server/apache/htdocs/weblog
        • HistoryName blog.missflash.com
        • HostName blog.missflash.com
      • webalizer 실행 : /usr/local/server/webalizer/bin/webalizer/webalizer

    • Cron 등록
      • vi /etc/cron.etc/webalizer.sh
#!/bin/bash
/usr/local/server/webalizer/bin/webalizer/webalizer
      • crontab -e
      • */5 * * * * '/etc/cron.etc/webalizer.sh'[각주:23]

    • 가상호스트 적용방법
      • 설치방법 > 샘플파일 수정 과 유사하게 진행
        • Virtual Host의 CustomLog 파일 경로를 webalizer_missflash.conf 파일의 LogFile로 설정
        • Virtual Host의 weblog 디렉토리 경로를 webalizer_missflash.conf 파일의 OutputDir로 설정
      • 실행스크립트에 아래 소스 추가 : vi /etc/cron.etc/webalizer.sh
        • /usr/local/server/webalizer/bin/webalizer/webalizer -c /etc/webalizer_missflash.conf

  • mysqlcheck : MySQL 체크
    • 실행방법 : mysqlcheck -Aao --auto-repair -u root -p비밀번호
    • Cron 등록
      • vi /etc/cron.daily/mysql_repair.sh
#!/bin/bash
mysqlcheck -Aao --auto-repair -u root -p비밀번호
      • chmod 700 /etc/cron.daily/mysql_repair.sh

  • PHP 확장모듈 동적 추가
    • mysqli 모듈 추가 : /usr/local/src/php-5.2.1/ext/mysqli/modules/mysqli.so 파일 생성
      • cd /usr/local/src/APM/php-5.2.1/ext/mysqli
      • /usr/local/server/php/bin/phpize
      • ./configure \
      • > --with-php-config=/usr/local/server/php/bin/php-config \
      • > --enable-mysqli
      • make

    • mysqli 모듈 복사
      • mkdir /usr/local/server/php/modules
      • cp modules/mysqli.so /usr/local/server/php/modules
      • vi /usr/local/server/apache/conf/php.ini (굵게 표시한 행 추가)
extension_dir = /usr/local/server/php/modules
extension=mysqli.so;

    • Apache 재시작 : /etc/init.d/httpd restart



지루한 웹서버 환경설정 파트가 끝났습니다. 아직 남은 부분이 절반 가량 되는 것 같은데요... 다행인 것은 남은 것 중에서 생략가능한 파트가 많다는 사실이네요 ^^;

너무 지쳐서 다타고 재만 남은 느낌이잖아~

  1. 공식 사이트에서 최신 버전의 압축 파일을 다운로드 할 수 있습니다. [본문으로]
  2. 파일을 이용한 인증방식 사용, $cfg['Servers'][$i]['user']; = 'root';, $cfg['Servers'][$i]['password']; = ''; 과 같이 사용자명과 비밀번호 입력 [본문으로]
  3. .htaccess를 이용한 아파치 인증방식 사용 [본문으로]
  4. 쿠키를 이용한 인증방식 사용 [본문으로]
  5. 프롬프트 표시입니다. [본문으로]
  6. 빨간색은 기본 단위를 의미합니다. [본문으로]
  7. cband-status-me의 경우, 모든 호스트에서 접근해야 하기 때문에 전역으로 설정 [본문으로]
  8. 주 도메인이 있는 VirtualHost에만 SetHandler cband-status 추가 [본문으로]
  9. 트래픽 용량 제한 [본문으로]
  10. 트래픽 기간 제한 [본문으로]
  11. mf_user 사용자에 대한 제한 전역 설정 [본문으로]
  12. 위에서 입력한 mf_user 제한 전역 설정을 적용 [본문으로]
  13. kbps 단위입니다. [본문으로]
  14. kbps 단위입니다. [본문으로]
  15. Apache 1.3 버전에서 사용 [본문으로]
  16. Apache 2.x 버전에서 사용 [본문으로]
  17. 자식 해쉬테이블마다 탑레벨 노드 수 지정, 수치가 높을수록 퍼포먼스는 좋지만 테이블 스페이스에 메모리를 남기게 됨 [본문으로]
  18. 동일 페이지 또는 URL 요청수에 대한 카운트 수, 지정한 값 초과시 클라이언트 IP가 Blocking List에 추가되고 403 에러 전송 [본문으로]
  19. 지정한 값 초과시 클라이언트 IP가 Blocking List에 추가 [본문으로]
  20. 페이지 카운트 시발점, 1초를 의미 [본문으로]
  21. 사이트 카운트 시발점, 1초를 의미 [본문으로]
  22. 블러킹된 IP의 접속제한 시간, 30초를 의미 [본문으로]
  23. 5분마다 실행하는 설정입니다. [본문으로]