::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-05-04 00:24:03, Hit : 7026, Vote : 1344
 http://www.howto.pe.kr
 [강좌] 웹로그분석을 위한 Webalizer + GDlib + PNGlib + Zlib 설치

// 제   목: 웹로그분석을 위한 Webalizer + GDlib + PNGlib + Zlib 설치
// 작성자: 김영대( http://www.howto.pe.kr )

설치환경: Redhat 7.3, Kernel 2.4.18

* 설치되는 환경에 Apache + MySQL + PHP4 + Zend 가 소스로 설치되어 있어야 하므로
  Webalizer + GDlib + PNGlib + Zlib 설치와 함께 설명합니다


1.설치에 필요한 파일 다운받기
  mysql-3.23.51.tar.gz  ( http://www.mysql.com/downloads/mysql-3.23.html )
  apache_1.3.27.tar.gz  ( http://www.apache.org/dist/httpd/ )
  php-4.1.2.tar.gz ( http://www.php.net/downloads.php )
  ZendOptimizer-1.3.1-Linux_glibc21-i386.tar.gz ( https://www.zend.com/store/products/zend-optimizer.php )
  webalizer-2.01-10-src.tgz ( ftp://ftp.superuser.co.kr/weblog/webalizer/ )
  gd-1.8.3.tar.gz ( wget http://www.boutell.com/gd/http/gd-1.8.3.tar.gz )
  libpng-1.0.8.tar.gz ( wget http://ftp.monash.edu.au/pub/gnuplot/libpng-1.0.8.tar.gz )
  zlib-1.1.3.tar.gz ( wget http://ftp.monash.edu.au/pub/gnuplot/zlib-1.1.3.tar.gz )

  다운받은 파일들을 /usr/local/src 에 저장합니다(물론 다른곳에 저장해도 무관하지만 관리의 편리를 위해
  /usr/local/src 에 저장을 했습니다)

2.이미 RPM으로 설치된 패키지 제거하기 (root 권한으로 작업)
  먼저 apache 또는 mysql 서버가 가동중인지 확인하시고 가동중이라면 stop을 합니다
    [root@howto src]# /etc/rc.d/init.d/httpd stop      apache 서버 종료
    [root@howto src]# /etc/rc.d/init.d/mysqld stop     mysql 서버 종료

  Redhat 배포본에 의해 이미 설치된 RPM 들이 있는지 확인합니다(없다면 3번으로 건너뛰세요)
    [root@howto src]# rpm -qa | grep apache    
    [root@howto src]# rpm -qa | grep mysql
    [root@howto src]# rpm -qa | grep php    

  예를들어 apache의 경우 rpm -qa | grep apache 를 하게되면
    apache-x.x.xx-xx
    apache-devel-x.x.xx-xx
  두개의 패키지가 출력되지만 rpm -e apache 하게되면 의존성파일들이 있다고 에러를 표시합니다
  이때는 먼저 화면에 출력된 의존성 패키지들을 하나하나 삭제합니다
    [root@howto src]# rpm -e mod_perl
    [root@howto src]# rpm -e php
    [root@howto src]# rpm -e mod_ssl
    [root@howto src]# rpm -e mod_dav
    ...
  의존성이 있는 패키지를 전부 제거하고나서 아파치를 제거합니다
    [root@howto src]# rpm -e apache
    [root@howto src]# rpm -e apache-devel
  나머지 php, mysql 관련 패키지도 위와 같은 방법으로 삭제합니다
  
  그리고 /var/lib/mysql 디렉토리가 있다면 삭제합니다
  이 디렉토리는 배포판이 생성시킨 것으로 mysql 의 테이블 데이터들이 들어 있습니다
    [root@howto src]# rm -rf /var/lib/mysql

3.압축풀기
  다운받은 소스파일들을 /usr/local/src 디렉토리에서 압축을 풉니다

    [root@howto src]# tar zxvf mysql-3.23.51.tar.gz
    [root@howto src]# tar zxvf apache_1.3.27.tar.gz
    [root@howto src]# tar zxvf php-4.1.2.tar.gz
    [root@howto src]# tar zxvf ZendOptimizer-1.3.1-Linux_glibc21-i386.tar.gz
    [root@howto src]# tar zxvf webalizer-2.01-10-src.tgz
    [root@howto src]# tar zxvf gd-1.8.3.tar.gz
    [root@howto src]# tar zxvf libpng-1.0.8.tar.gz
    [root@howto src]# tar zxvf zlib-1.1.3.tar.gz

4.MySQL 설치
  압축을 푼 mysql 디렉토리로 이동하여 configure 합니다
    [root@howto mysql-3.23.51]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/home/mysql/data

  --prefix=/usr/local/mysql  은 설치 디렉토리를 지정하고
  --with-charset=euc_kr  mysql  에서 한글을 지원할 수 있도록 하고
  --localstatedir=/home/mysql/data  DB의 데이터 table을 파일로 저장할 디렉토리를 지정

  configure한 후 "Thank you for choosing MySQL!" 이라는 메시지가 나온다면 MySQL을 컴파일할 준비가
  다 되었다는 것이다

  만약 MySQL을 다시 설치할 경우는
  [root@howto mysql-3.23.51]# make clean
  [root@howto mysql-3.23.51]# make distclean
  를 실행하여 환경설정을 초기화 한 후 configure 한다

  아래와 같이 컴파일을 시작하며 컴퓨터 사양에 따라 수분에서 수십분 소요된다
    [root@howto mysql-3.23.51]# make    

  여기까지 되었다면 mysql 이라는 사용자 group과 id를 만들어야 한다
    [root@howto mysql-3.23.51]# groupadd mysql
    [root@howto mysql-3.23.51]# useradd -g mysql mysql
    [root@howto mysql-3.23.51]# mkdir /home/mysql/data
    [root@howto mysql-3.23.51]# chown -R mysql /home/mysql/data
    [root@howto mysql-3.23.51]# chgrp -R mysql /home/mysql/data
    [root@howto mysql-3.23.51]# cp support-files/my-medium.cnf /etc/my.cnf

  아래와 같이 설치작업을 한다
    [root@howto mysql-3.23.51]# make install

  설치후 mysql의 데이터를 관리할 기초적인 DB(mysql)와 테이블(db,user,func,...)을 생성한다
    [root@howto mysql-3.23.51]# scripts/mysql_install_db      
  mysql_install_db은 반드시 한번만 실행시켜야 합니다

  몇가지 DB 파일이 root 로 되어 있으므로 다시한번 권한을 바꿔준다
    [root@howto mysql-4.0.13]# chown -R mysql /home/mysql/data
    [root@howto mysql-4.0.13]# chgrp -R mysql /home/mysql/data

  그다음 mysql이 make install된 디렉토리(/usr/local/mysql) 아래의 share/mysql/mysql.server 를
  vi 등으로 열어서 107 라인쯤에 "$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file" 부분의
  뒤에 "--language=korean" 를 추가하여 한글을 지원하도록 한다
    if test -x $bindir/safe_mysqld
    then
      # Give extra arguments to mysqld with the my.cnf file. This script may
      # be overwritten at next upgrade.
      $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file --language=korean &
      # Make lock for RedHat / SuSE
      if test -w /var/lock/subsys
      then
        touch /var/lock/subsys/mysql
      fi
    else
      echo "Can't execute $bindir/safe_mysqld"
    fi
    ;;

  여기까지는 실행환경에 대한 내용이었고 매번 부팅시 자동으로 mysql 이 실행되도록 약간의
  작업을 해주면 설치는 끝난다

  시스템 부팅시에 자동 실행되도록 해준다
    [root@howto mysql-3.23.51]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
    [root@howto mysql-3.23.51]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld
    [root@howto mysql-3.23.51]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld

  정확히 셋업되었는지 ntsysv 명령을 이용하여 mysqld 가 나타나고 셋업되었는지("*" 표) 확인한다
    [root@howto mysql-3.23.51]# ntsysv

  그리고 mysql 서버의 시작과종료 그리고 관련 명령어를 사용하기 편하게 하기위해서 부팅환경에 PATH를 지정해 둔다
    [root@howto mysql-3.23.51]# vi /root/.bash_profile

    # User specific environment and startup programs
    PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
    BASH_ENV=$HOME/.bashrc
    USERNAME="root"

  설치가 완료되었으므로 mysql 서버의 구동을 테스트 해본다
    [root@howto mysql-3.23.51]# /etc/rc.d/init.d/mysqld start  mysql서버 시작
    [root@howto mysql-3.23.51]# ps -ef | grep mysql    MySQL 프로세스 확인하기
    [root@howto mysql-3.23.51]# /etc/rc.d/init.d/mysqld stop   mysql 서버 종료

5.GD lib, PNG lib, Zlib 설치
  GD lib 설치를 위해 함께 다운받은 zlib와 PNG lib를 먼저 설치해야 합니다
  각각 압축을 푼 디렉토리로 이동하여 설치합니다

    [root@howto zlib-1.1.3]# ./configure
    [root@howto zlib-1.1.3]# make
    [root@howto zlib-1.1.3]# make install

    [root@howto libpng-1.0.8]# cd scripts
    [root@howto scripts]# cp makefile.linux ../makefile
    [root@howto scripts]# cd ..
    [root@howto libpng-1.0.8]# make test
    [root@howto libpng-1.0.8]# make install

    [root@howto src]# mv gd-1.8.3 /usr/local/gd-1.8.3
    [root@howto src]# cd /usr/local/gd-1.8.3
    [root@howto gd-1.8.3]# make all
    
6.Apache Configure
  Apache 압축을 푼 디렉토리로 이동하여 configure 합니다
    [root@howto apache_1.3.27]# ./configure --prefix=/usr/local/apache

  --prefix=/usr/local/apache  은 설치 디렉토리를 지정합니다

  Apache의 make, make install 은 나중에 하는데 이유는 mysql, php 등이 완전히 설치되어야 apache 컴파일시
  이들을 참고하기 때문입니다
      
7.PHP 설치
  PHP 압축을 푼 디렉토리로 이동하여 configure 합니다

    [root@howto php-4.1.2]# ./configure --with-config-file-path=/etc/httpd
    --prefix=/usr --exec-prefix=/usr
    --bindir=/usr/bin --sbindir=/usr/sbin
    --with-mysql=/usr/local/mysql
    --with-apache=../apache_1.3.27
    --with-gd=/usr/local/gd-1.8.3
    --disable-debug
    --enable-track-vars
    --enable-safe-mode

  --with-config-file-path=/etc/httpd 는 원래 Apache의 환경파일이 저장될 디렉토리 이지만
                                        관리의 편리를 위해 PHP 환경파일(php.ini)도 이곳에 저장합니다
  --with-mysql=/usr/local/mysql 는 mysql이 설치된 디렉토리를,
  --with-apache=../apache_1.3.27 는 Apache 설치가 아니라 압축을 푼 디렉토리를,
  --with-gd=/usr/local/gd-1.8.3 는 GD lib가 설치된 디렉토리를,
  --enable-track-vars 는 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 전역 배열에 들어 있는
                         GET, POST, cookie 변수들이 어디서 왔는지 추적(track)하라는 것이고,
  --disable-debug 는 다음에 설치할 ZendOptimizer 를 위한 것입니다

  configure가 잘 되었다면 같은 디렉토리에서 make, make install 하여 컴파일/설치하세요
    [root@howto php-4.1.2]#make
    [root@howto php-4.1.2]#make install

8.Apache 컴파일/설치
  Apache 압축을 푼 디렉토리로 이동하여 configure 를 다시 합니다
    [root@howto apache_1.3.27]# ./configure --prefix=/usr/local/apache
    --activate-module=src/modules/php4/libphp4.a
    --enable-module=so --enable-shared=max
    --sysconfdir=/etc/httpd/conf --datadir=/home/httpd
    --localstatedir=/var/httpd --htdocsdir=/home/httpd/html
    --logfiledir=/var/log/httpd

  --prefix=/usr/local/apache  은 설치 디렉토리를 지정하고,
  --sysconfdir=/etc/httpd/conf 는 Apache의 환경파일이 저장될 디렉토리를 지정하고,
  --datadir=/home/httpd 는 실제 홈페이지 디렉토리를 지정하고
  --htdocsdir=/home/httpd/html 는 실제 홈페이지의 문서(document root) 디렉토리를 지정합니다

  Apache를 컴파일/설치합니다
    [root@howto apache_1.3.27]# make
    [root@howto apache_1.3.27]# make install

  PHP의 압축을 푼 디렉토리에 있는 PHP 환경파일(php.ini)을 PHP configure시 --with-config-file-path 로
  지정한 디렉토리에 복사합니다
    [root@howto apache_1.3.27]# cp ../php-4.1.2/php.ini-dist /etc/httpd/php.ini  

  시스템 부팅시 자동실행이 되도록 하기 위하여 설정을 합니다.
    [root@howto apache_1.3.27]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/apachectl
    [root@howto apache_1.3.27]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc3.d/S85httpd
    [root@howto apache_1.3.27]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc5.d/S85httpd
    [root@howto apache_1.3.27]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc0.d/K15httpd
    [root@howto apache_1.3.27]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc1.d/K15httpd
    [root@howto apache_1.3.27]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc6.d/K15httpd

  Apache configure시 --sysconfdir 로 지정한 환경파일이 저장된 디렉토리의 httpd.conf 를 vi 등으로 열어서
  404 라인쯤에 "DirectoryIndex index.html index.htm" 를 아래처럼 바꾸어 php 파일도 Default 시작페이지로
  설정이 가능하도록 수정해 줍니다

    #
    # DirectoryIndex: Name of the file or files to use as a pre-written HTML
    # directory index.  Separate multiple entries with spaces.
    #
    <IfModule mod_dir.c>
        DirectoryIndex index.php index.php3 index.html index.htm
    </IfModule>

  그다음 811 라인쯤에 아래부분을 찾아서 두줄을 추가한다
    #
    # AddType allows you to tweak mime.types without actually editing it, or to
    # make certain files to be certain types.
    #
    AddType application/x-tar .tgz
    AddType image/x-icon .ico
    AddType application/x-httpd-php .php .php3 .inc .ph .htm
    AddType application/x-httpd-php-source .phps

  Apache 를 실행시켜봅니다
    [root@howto apache_1.3.27]# /etc/rc.d/init.d/apachectl start          
    
9.Zend Optimizer 설치
  설치작업을 하기전에 한가지 주의할것은 Apache의 환경파일이 저장된 디렉토리(/etc/httpd/conf)를
  /usr/local/apache 아래에 복사해야 합니다
  정확한 이유는 모르겠지만 Zend Optimizer가 Apache configure시 지정한 --sysconfdir=/etc/httpd/conf
  를 알지 못하는것 같습니다

  Zend Optimizer 압축을 푼 디렉토리로 이동하여 Install.sh 쉘을 실행합니다
    [root@howto ZendOptimizer-1.3.1-Linux_glibc21-i386]# ./install.sh

  각 단계별 화면이 있는데 각 화면마다 아래와 같이 입력한 후 OK 하세요
    Specify the location where to install Zend Optimizer
    -> /usr/local/Zend

    Confirm the location of your php.ini file
    -> /etc/httpd

    Are you using the Apache web server?
    -> Yes

    Specify the location of your Apache root directory
    -> /usr/local/apache

    Install has detected PHP version 4.1.2
    Does this look correct?
    -> Yes

  설치 완료 메시지 뜬다음 Apache를 재시작 해줍니다
    [root@howto ZendOptimizer-1.3.1-Linux_glibc21-i386]# /etc/rc.d/init.d/apachectl restart

10.Apache 및 PHP 검사하기
  Apache 서버가 구동중인 상태에서 Apache configure 시 --htdocsdir 로 지정한 홈디렉토리(/home/httpd/html)로
  이동하여 phpinfo.php 라는 파일을 아래와 같이 편집합니다

    <?
      phpinfo();
    ?>

  그런다음 출력되는 내용중에 mysql, gd, Zend Optimizer 의 내용이 있는지 확인한다
    http://localhost/phpinfo.php
  

11.Webalizer 설치
  Webalizer 압축을 푼 디렉토리로 이동하여 configure 를 다시 합니다
    [root@howto webalizer-2.01-10]# ./configure --with-language=korean --enable-dns --with-gdlib=/usr/local/gd-1.8.3

  --with-language=korean 는 webalizer의 웹출력 결과를 한글을 보고자 할때사용한다
  --with-gdlib=/usr/local/gd-1.8.3 는 gd 그래픽 라이브러리의 라이브러리 파일의 경로를 지정한다
  --enable-dns 은 도메인 lookup 코드를 사용할지를 결정하는 것으로 일반적으로 이것을 포함 시킨다

  컴파일/설치합니다
    [root@howto webalizer-2.01-10]#make
    [root@howto webalizer-2.01-10]#make install

  /etc/webalizer.conf 파일이 없다면 /etc/webalizer.conf.sample 을 열어 아래대로 바꾸어 /etc/webalizer.conf 이름으로
  다시 저장한다. 처음 /etc/webalizer.conf.sample 를 열면 전부 주석으로 처리되어 있으므로 필요한 옵션의 주석을 열고 고친다
  
    LogFile      /var/log/httpd/access_log  -> 로그분석할 로그 파일(Apache 로그 파일)
    LogType      clf  -> 로그 파일의 형식을 지정한다. clf, ftp, squid가 있으며 기본값은 clf이다
    OutputDir    /home/www/public_html/usage  -> webalizer로 분석된 결과(index.html로 있다)를 저장할 경로를 지정한다
    ReportTitle  Usage Statistics for  -> 통계 출력시 제목을 적는다
    HostName     www.yoursite.com  -> 통계를 내는 사이트의 도메인명을 넣는다(홈페이지 주소)
    PageType  htm*
    PageType  cgi
    PageType  php3
    PageType  php  -> php4 사용자는 php도 추가
    HideSite  198.162.*  -> 지정한 사이트에 대해서는 통계에서 숨긴다(count 결과는 포함)
    HideSite  localhost
    HideURL   *.gif  -> 지정한 파일들 참조에 대해서는 통계에서 숨긴다(count 결과는 포함)
    HideURL   *.GIF
    HideURL   *.jpg
    HideURL   *.JPG
    HideURL   *.png
    HideURL   *.PNG
    HideURL   *.ra
    HideURL   *.css
    IgnoreURL /~*  -> 지정한 URL에 대해서는 무시한다(cout 결과도 무시된다).
    IgnoreURL /board/*
  
  위에서 로그분석 결과를 저장할 디렉토리를 지정했으므로 /home/www/public_html로 이동하여 usage 디렉토리를 만들어 준다
    [root@howto public_html] mkdir usage

  /usr/bin/webalizer 를 실행하여 로그를 분석한 후 http://해당URL/usage/index.html 를 열면 분석 결과를 볼 수 있다
  위에서 만든 설정파일이 아닌 또다른 유형의 설정을 만들었을 경우는 webalizer -c somehost.conf와 같이 실행할 수도 있다
 
  만약 webalizer 를 실행했을때 "webalizer: error while loading shared libraries: libpng.so.2" 에러를 만난다면
  find / -name libpng.so.2 명령을 실행하여 libpng.so.2 가 위치한 디렉토리(대부분 /usr/local/lib)를
  /etc/ld.so.conf 파일에 추가한 후 ldconfig 명령어를 실행해준다
 
  로그 분석에 대한 통계처리 작업을 주기적으로 하려면 cron에 webalizer 실행을 등록해둔다
  root에서 crontab -e을 통해 등록시킬 수 있다. 예를 들어 0시 0분에 webalizer를 실행하고 싶다면 다음과 같이 등록시키면 된다
    00 00 * * * /usr/local/bin/webalizer






62   [Unix/Linux] [강좌] 인텔 센트리노 무선랜 카드: ndiswrapper  김영대 2004/06/27 10841 1932
61   [Unix/Linux] [소스] top for System V Release 4, Intel or Sparc CPU  김영대 2004/02/20 6483 1121
60   [Unix/Linux] [소스] top for SunOS 5.x (Solaris 2.x)  김영대 2004/02/20 8737 1166
59   [Unix/Linux] [소스] String 해쉬(hash) 함수  김영대 2003/07/29 6202 1383
  [Unix/Linux] [강좌] 웹로그분석을 위한 Webalizer + GDlib + PNGlib + Zlib 설치  김영대 2003/05/04 7026 1344
57   [Unix/Linux] [강좌] Apache + MySQL + PHP4 + Zend Optimizer 설치  김영대 2003/04/15 6083 1320
56   [Unix/Linux] [System V IPC] shmop() function - 공유메모리  김영대 2003/03/17 5640 1376
55   [Unix/Linux] [System V IPC] shmctl() function - 공유메모리  김영대 2003/03/17 5659 1526
54   [Unix/Linux] [System V IPC] shmget() function - 공유메모리  김영대 2003/03/17 5997 1504
53   [Unix/Linux] [System V IPC] semop() function - 세마포어  김영대 2003/03/17 4873 1286
52   [Unix/Linux] [System V IPC] semctl() function - 세마포어  김영대 2003/03/17 4545 1253
51   [Unix/Linux] [System V IPC] semget() function - 세마포어  김영대 2003/03/17 5636 1508
50   [Unix/Linux] [System V IPC] msgget() function - 메세지큐  김영대 2003/03/17 5550 1423
49   [Unix/Linux] [System V IPC] msgctl() function - 메세지큐  김영대 2003/03/17 5636 1319
48   [Unix/Linux] [System V IPC] msgrcv() function - 메세지큐  김영대 2003/03/17 6052 1550
47   [Unix/Linux] [System V IPC] msgsnd() function - 메세지큐  김영대 2003/03/17 7395 1489
46   [Unix/Linux] [POSIX IPC] 생산자/소비자 - 세마포어  김영대 2003/03/17 7017 1452
45   [Unix/Linux] [POSIX IPC] mq_receive() function - 메세지큐  김영대 2003/03/17 6499 1589
44   [Unix/Linux] [POSIX IPC] mq_send() function - 메세지큐  김영대 2003/03/17 7626 1507
43   [Unix/Linux] [Thread] pthread_cond() function  김영대 2003/03/17 5782 1544

1 [2][3][4]
 

Copyright 1999-2017 Zeroboard / skin by zero