RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'My Advanced Linux/Advanced Linux'에 해당되는 글 47
기본적으로 grep으로 검색된 문자를 색상으로 볼 수가 있다.
export GREP_OPTIONS='--color=auto' GREP_COLOR='1;32'
후에 grep을 통하여 검색을 해 보면 그 효과를 쉽게 알 수있다.
GREP_COLOR의 색상 옵션은 ANSI Escape Code을 따른다.

분명 편하고 찾고자 하는 문구를 쉽게 확인할 수 있는 장점이 있다.
하지만 주의해야할 점은 컴파일시 grep을 쓰는 경우가 상당히 많이 있다.
이럴경우 ANSI로 색이 덮혀 있는 글자는

^[[숫자m

라는 ANSI CODE가 들어가서 정상적으로 컴파일이 되지 않는 경우가 있다.
이점을 필히 주의 하기 바란다.

※기본포맷
GREP_COLOR='타입;글색;배경색;'

※코드표

색상

글자색

배경색

검정색

30

40

빨간색

31

41

초록색

32

42

갈색

33

43

파란색

34

44

보라색

35

45

하늘색

36

46

회색

37

47

기본화면색

0

BOLD INTENSITY

1

역상

7

apache에서 별로 유용성이 없는 로그이면서 가장 많은 분량을 자랑하는 것이 아마도 이미지 로그일 것이다. 메인 화면에 그 엄청난 양의 섬네일 파일이나 클릭하는 모든 버튼들이 요즘에는 이미지로 되어 있기 때문에..

그에따라 몇몇접속자만하더라고 엄청나게 많은 로그가 쌓일수가 있다.
"하루에도 몇 백메가까지 올라가는 로그들을 보고 더이상 가만히 있을수가 없다!"
라는 사람은 아래와 같은 조치를 취하면 된다.

일단 httpd.conf에 아래의 문구를 삽입

<IfModule mod_setenvif.c>
SetEnvIfNoCase Request_URI "\.(gif)|(jpg)|(js)|(css)|(png)$" do_not_log
</IfModule>

이 후, 로그를 남기는 파일

CustomLog "logs/access_log" common env=!do_not_log

에 다음과 같은 처리를 해주면 된다.
센스 있는 사람은 쉽게 무슨 말인지 알것이리라-

기본적으로 awstats는 설치를 따로 하지 않고 압축을 풀기만 하면 됩니다.
최신버전에서는 기본적으로 한글을 지원하므로 별다른 한글패치를 하지 않고도 한글로 볼 수 있는 장점이 있습니다.
awstats는 웹로그 이외에도 ftp, mail 로그를 지원합니다.

설치
http://awstats.sourceforge.net/?seenIEPage=1 에서 awstats를 다운 받습니다.
last stable  : awstats-6.7.tar.gz

# wget http://prdownloads.sourceforge.net/awstats/awstats-6.7.tar.gz
# tar zxf awstats-6.7.tar.gz

awstats에 필요한 디렉토리를 만들어 줍니다.
# mkdir /etc/awstats         -----------> awstats의 conf 파일이 저장되는 장소
# mkdir /var/lib/awstats    -----------> awstats의 로그분석이 저장되는 장소

그리고 풀린 awstats를 설치하고픈 곳에 다가 옮겨줍니다. 여기에서는 /usr/loca/awstats로 옮깁니다.
# mv awstats-6.7 /usr/local/awstats

그리고 권한 설정을 잡아줍니다.
# chmod 755 /usr/local/awstats
# chown -R root.root /usr/local/awstats
이렇게만 하면 설치는 끝납니다.

설정
설정은 아래와 같이 awstats에서 지원하는 파일로 파일을 생성하는 방법이 있지만,
그냥 이미 만들어진 conf 파일을 고쳐서 써도 무방합니다.
# /usr/local/awstats/tools/awstats_configure.pl

----- AWStats awstats_configure 1.0 (build 1.7) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).

-----> Running OS detected: Linux, BSD or Unix

-----> Check for web server install
  Found Web server Apache config file '/usr/local/apache/conf/httpd.conf'

-----> Check and complete web server config file '/usr/local/apache/conf/httpd.conf'
  AWStats directives already present.

-----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
  File awstats.model.conf updated.

-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ?  y

-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
domain

-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):

-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=aaa
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...

A SIMPLE config file has been created: /etc/awstats/awstats.aaa.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'aaa' with command:
> perl awstats.pl -update -config=domain
You can also read your statistics for 'aaa' with URL:
> http://localhost/awstats/awstats.pl?config=domain

Press ENTER to finish...

이렇게 하면 /etc/awstats 디렉토리 안에 awstats.domain.conf 라는 파일이 생성이 되고 /usr/local/apache/conf/httpd.conf 안에
    # awstats alias
    Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
    Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
    Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
    ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

    # This is to permit URL access to scripts/files in AWStats directory.
    <Directory "/usr/local/awstats/wwwroot">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
의 정보가 들어갑니다.  기본적으로 /usr/local/apache와 /usr/local/apacheSSL이 설치된 몇몇 서버에는 apacheSSL의 httpd.conf 에 자동으로 들어가지 않아 직접 입력해주면 됩니다.

awstats.domain.conf
awstats는 기본적으로 apache log 방식을 combined을 기본으로 하고 있습니다. 물론 common방식으로 사용이 가능하지만 좀더 세밀한 분석을 위해서는 combined방식을 추천합니다. 설정에 꼭 필요한 것만 집고 넘어가겠습니다.

51째 줄: 아파치 로그 파일 위치
LogFile="/usr/local/apache/logs/dongabiz-access_log"

122째 줄: 1(combined), 4(common) 로그 포멧을 설정하는  곳인데 기본적으로 1번으로 잡혀있습니다.
LogFormat=1

153째 줄 : 표기 될 도메인 이름
SiteDomain="www.dongabiz.com"

892쨰 줄 : 표시될 언어 설정(기본은 auto인데 ko로 잡어줍니다)
Lang="ko"

이 정도만 잡아주면 문제 없이 로그를 뽑을 수 있습니다.

* 로그 분석 실행하기
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=domain

* 로그 페이지 보기
http://domain/awstats/awstats.pl?config=domain


awstats plug-in
awstats는 plug-in 기능을 이용하여 좀 더 강력한 분석이 가능합니다.
여기에서는 GeoIP를 이용하여 어느나라에서 접속을 하였는지를 확인 할 수 있도록 하겠습니다.

* GeoIP 다운로드
# wget http://www.maxmind.com/download/geoip/api/pureperl/Geo-IP-PurePerl-1.19.tar.gz
# wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz

pureperl 버전 GeoIP를 설치합니다.
# tar zxf Geo-IP-PurePerl-1.19.tar.gz
# cd Geo-IP-PurePerl-1.19
# perl Makefile.PL && make && make install

GeoIP의 국가별 data 을 설치합니다. (단순히 압축만 풀면됩니다.)
# gzip -d GeoIP.dat.gz
# mkdir /usr/local/share/GeoIP
# mv GeoIP.dat /usr/local/share/GeoIP

* 설정
awstats.domain.conf에 설정을 합니다.
1289번째 줄
LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"

* XWhois
웹상에서 바로 whois를 효과를 낼 수 있는 플러그인. 약간에 버그가 있어서 호스트가 whois.xxx.xxxx.xxxx 인 4자리로 구분된 호스트는 찾아지지 않습니다.
# tar zxf Net-XWhois-0.90.tar.gz
# cd Net-XWhois-0.90
# perl Makefile.PL && make && make install

* 설정
awstats.domain.conf에 설정을 합니다.
1365번째 줄의 주석을 푼다
LoadPlugin="hostinfo"

검색엔진 추가하기
awstats는 외국산 웹로그 분석툴이기 때문에 유명한 검색엔진(google, yahoo 등)을 제외한 국내 엔진은 전부 Unknown으로 판단합니다. 이에 국내 엔진을 판별하기 위해 파일을 수정하여 줍니다. 이는 설명이 길어지기에 국내엔진이 추가된 파일을 첨부하였습니다.

첨부 파일을 다운받아서 아래와 같이 실행합니다.
# rm -f /usr/local/awstats/wwwroot/cgi-bin/lib/search_engines.pm
# mv search_engines.pm /usr/local/awstats/wwwroot/cgi-bin/lib/


오류)
checking "LinuxThreads"... "Not found"
configure: error: This is a linux system and Linuxthreads was not
found. On linux Linuxthreads should be used.  Please install Linuxthreads
(or a new glibc) and try again.  See the Installation chapter in the
Reference Manual for more information.

이러면서 configure가 잘 안될때가 있다.
나의 경우에는 64bit OS에서 이러한 오류가 나더라.
glibc 쪽에 문제라고 하니.. 뭐..

해결법)
# vi /usr/include/pthread.h
/* Linuxthreads */

한줄을 페이지에 적어 넣는다.

64bit 리눅스에 apache 컴파일시 오류가 난다.
이유는 간단하다. 64bit 라이브러리와 32bit 라이브러리를 착각하는 경우랄까...
보통은 /usr/lib 32bit용 라이브러리를 먼저 찾아서 컴파일 하려 하기 때문일 것이다.

오류)
/usr/lib/libdb-4.3.so: could not read symbols: File in wrong format
/usr/lib/libexpat.so: could not read symbols: File in wrong format

해결법)
# mv /usr/lib/libexpat.so /usr/lib/libexpat.so~
# mv /usr/lib/libdb-4.3.so /usr/lib/libdb-4.3.so~
# ln -s /lib64/libexpat.so.0.5.0 /usr/lib/libexpat.so  
# ln -s /lib64/libdb-4.3.so /usr/lib/libdb-4.3.so

간단하게 컴파일러가 찾는 곳에다 링크를 해버리면 된다. 하하하하.. 이 얼마나 단순무식명쾌한 짓인가!

./configure 시에 --enable-lib64 --libdir=/usr/lib64 옵션을 줘서 해결해보자(난 이게 편하던데..)

설치환경)
AIX 5.3 64bit
apache 2.2.8
php 4.4.8
oracle 10.2

참조 사이트)
http://www-03.ibm.com/systems/p/os/aix/linux/toolbox/download.html
http://www.ibm.com/developerworks/wikis/display/WikiPtype/aixopen

소스 FTP)
ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/

AIX에서 apache + php + oracle 연동하기
일단 AIX에서 open source를 설치하기 위한 방법을 서술한다.
AIX에서 linux의 rpm을 쓸 수 있게 해주는 파일이 있다. 이것을 먼저 설치한다

# installp -qacXgd rpm.rte rpm.rte

설 치는 이것으로 매우 간단하게 진행된다. 이제 이것으로 AIX에서 rpm의 설치를 할 수 있게 된다. 단, AIX에 맞는 rpm을 구해야 한다. 소스FTP에 접속하면 AIX에서 사용가능한 rpm이 있으니 필요한 rpm을 다운로드 한다.

설치한 RPM 리스트
autoconf-2.59-1.aix5.1.noarch.rpm
automake-1.8.5-1.aix5.1.noarch.rpm
bash-3.2-1.aix5.2.ppc.rpm
binutils-2.14-3.aix5.1.ppc.rpm
bison-1.875-3.aix5.1.ppc.rpm
coreutils-5.2.1-2.aix5.1.ppc.rpm
cpio-2.5-1.aix5.1.ppc.rpm
diffutils-2.8.1-1.aix4.3.ppc.rpm
expat-1.95.7-4.aix5.1.ppc.rpm
expat-devel-1.95.7-4.aix5.1.ppc.rpm
flex-2.5.4a-6.aix4.3.ppc.rpm
freetype-1.3.1-9.aix5.1.ppc.rpm
freetype-demo-1.3.1-9.aix5.1.ppc.rpm
freetype-devel-1.3.1-9.aix5.1.ppc.rpm
freetype2-2.1.7-5.aix5.1.ppc.rpm
freetype2-devel-2.1.7-5.aix5.1.ppc.rpm
gawk-3.1.3-1.aix5.1.ppc.rpm
gcc-4.2.0-3.aix5.3.ppc.rpm
gcc-cplusplus-4.2.0-3.aix5.3.ppc.rpm
gd-1.8.4-3.aix5.1.ppc.rpm
gd-devel-1.8.4-3.aix5.1.ppc.rpm
gd-progs-1.8.4-3.aix5.1.ppc.rpm
gdb-6.0-1.aix5.1.ppc.rpm
gettext-0.10.40-8.aix5.2.ppc.rpm
glib-1.2.10-2.aix4.3.ppc.rpm
glib-devel-1.2.10-2.aix4.3.ppc.rpm
glib2-2.8.1-3.aix5.1.ppc.rpm
glib2-devel-2.8.1-3.aix5.1.ppc.rpm
gzip-1.2.4a-10.aix5.2.ppc.rpm
info-4.6-1.aix5.1.ppc.rpm
libgcc-4.2.0-3.aix5.3.ppc.rpm
libjpeg-6b-6.aix5.1.ppc.rpm
libjpeg-devel-6b-6.aix5.1.ppc.rpm
libpng-1.2.8-6.aix5.2.ppc.rpm
libpng-devel-1.2.8-6.aix5.2.ppc.rpm
libstdcplusplus-4.2.0-3.aix5.3.ppc.rpm
libstdcplusplus-devel-4.2.0-3.aix5.3.ppc.rpm
libtiff-3.6.1-4.aix5.1.ppc.rpm
libtiff-devel-3.6.1-4.aix5.1.ppc.rpm
libtool-1.5.8-2.aix5.1.ppc.rpm
libungif-4.1.2-1.aix5.1.ppc.rpm
libungif-devel-4.1.2-1.aix5.1.ppc.rpm
libxml2-2.6.21-3.aix5.2.ppc.rpm
libxml2-devel-2.6.21-3.aix5.2.ppc.rpm
lrzsz-0.12.20-2.aix4.3.ppc.rpm
m4-1.4.1-1.aix5.1.ppc.rpm
make-3.80-1.aix5.1.ppc.rpm
patch-2.5.4-4.aix4.3.ppc.rpm
perl-5.8.2-1.aix5.1.ppc.rpm
sed-4.1.1-1.aix5.1.ppc.rpm
tar-1.14-2.aix5.1.ppc.rpm
unzip-5.51-1.aix5.1.ppc.rpm
xpm-3.4k-7.aix5.1.ppc.rpm
xpm-devel-3.4k-7.aix5.1.ppc.rpm
zlib-1.2.3-4.aix5.2.ppc.rpm
zlib-devel-1.2.3-4.aix5.2.ppc.rpm

설치하는 방법은 리눅스와 동일하다.

rpm –ivh rpm명
rpm –Uvh rpm명

위 순서대로는 의존성이 걸릴 수도 있으니 lib류를 먼저 설치하도록 하자.
(물론, rpm –qa로 설치된 패키지도 볼 수 있다.)

설치가 끝이 났으면 컴파일러를 gcc에 맞춰준다.
export CC=gcc
export CXX=gcc

AIX의 환경변수 파일은 홈디렉토리의 .profile이니 위의 내용을 추가 한 후 적용하면 된다.

추가 환경설정내용(oracle)
export ORACLE_HOME=/oracle/app/product/102
export LIBPATH=/opt/freeware/lib:/usr/lib:/lib:/usr/css/lib:/usr/local/lib: $ORACLE_HOME/lib32:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=/usr/lib:/lib:/usr/css/lib:/opt/freeware/lib:/usr/local/lib: $ORACLE_HOME /lib32: $ORACLE_HOME /lib

설치
1.  openssl
http://www.openssl.org/에서 소스를 다운 받아서 선택
./config --prefix=/app1/openssl --openssldir=/app1/openssl -fPIC shared threads

2.  apache 2.2.8(2.2.9는 소소한 버그가 있어 2.2.8을 선택)
./configure --prefix=/app1/apache --enable-modules=most --enable-so --with-ssl=/app1/openssl

3.  PHP 4.4.8(역시 소소한 버그로 인하여 4.4.8선택)
php는 openssl과 apache와는 달리 설치가 조금 다르다. 정상적으로 설치가 되진 않는다. 일단 선행작업을 조금 해주어야 한다.


oracle을 정상적으로 인식하게 하기 위한 링크작업
ln –s $ORACLE_HOME/lib32/libclntsh.a $ORACLE_HOME/lib32/libclntsh.so
ln -s $ORACLE_HOME/lib/libclntsh.a $ORACLE_HOME/lib/libclntsh.so
ln -s $ORACLE_HOME/lib32/libclntsh.a /usr/lib/libclntsh.so
ln –s $ORACLE_HOME/lib32/libclntsh.a /lib/libclntsh.so

./configure --prefix=/app1 \
--with-apxs2=/app1/apache/bin/apxs \
--with-config-file-path=/app1/apache/conf \
--with-oci8=/oracle/app/product/102 \
--with-gd \
--with-zlib-dir=/opt/freeware/lib \
--with-zlib \
--with-jpeg-dir=/opt/freeware/lib \
--with-png-dir=/opt/freeware/lib \
--with-freetype-dir=/opt/freeware/lib \
--enable-sigchild \
--enable-shared --disable-static \
--without-xpm
(설치문서를 찾던 중 --with-xpm의 옵션을 사용하면 에러가 발생 한다고하여 빼버렸다.)

 
./configure가 끝이 난 후, make 까지만 하자.
make install시에는 오류가 나며 더 이상 진행되지 않는다.
make install시 생기는오류내용

Installing PHP SAPI module:       apache2handler
/app1/apache/build/instdso.sh SH_LIBTOOL='/app1/apache/build/libtool' libphp4.la /app1/apache/modules
rm -f /app1/apache/modules/libphp4.so
/app1/apache/build/libtool --mode=install cp libphp4.la /app1/apache/modules/
cp .libs/libphp4.a /app1/apache/modules/libphp4.a
cp .libs/libphp4.lai /app1/apache/modules/libphp4.la
libtool: install: warning: remember to run `libtool --finish /data1/dunet_data/apm/php-4.4.8/libs'
chmod 755 /app1/apache/modules/libphp4.so
chmod: /app1/apache/modules/libphp4.so: No such file or directory
apxs:Error: Command failed with rc=65536
.
make: The error code from the last command is 1.

아래와 같이 해결한다.
# cp .libs/libphp4.so /app1/apache/modules/libphp4.so
# cp php.ini-dist /app1/apache/conf/php.ini
수작업으로  so 파일을 모듈에 넣어준 뒤 httpd.conf를 수정한다.

LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php .php4 .php3
AddType application/x-httpd-php-source .phps

# /app1/apache/bin/apachectl –t
Syntax OK

이렇게 하면 apapche + PHP + oci 연동이 된 것이다.
AIX
apache 모듈중 mod_mime 란 모듈에 취약점이 아주 예전에 발견되었다고 한다.

mod_mime는 apache에 내장된(주로 많이 쓰이는) 확장자를 어떠한 이름이든 그 확장자로 인식을 하게 하는 것이다.
쉽게 말해서 .php 같은경우에 .php.uzoogom 이란 파일을 .uzoogom이란 파일의 확장자로 인식하는게 아니라 .php라는 확장자로 인식하여 php로 처리한다. 참 편리한 기능이다.
근데 문제가 되는 것이 무엇이냐면, 기본적으로 xxx.php라는 악성코드 php파일을 만들어서 게시판에 올려서 절대경로로 그 파일을 php로 실행시켜 apache 실행권한을 취득할 수 도 있다는 것... (잼있겠는데)

여튼 이러한 문제점을 미연에 방지하고자 하는 것이 오늘의 목표이다.
가장 쉽게 apache 설정에서 .php만 php로 인식하게 하는 것이다.

httpd.conf파일에 아래와 같이 설정해준다.

아래부분은 주석처리

# AddType application/x-httpd-php .php .php3 .inc .htm .html
# AddType application/x-httpd-php-source .phps

요 부분을 입력
# CGI부분도 해주면 좋다~

<FilesMatch "\.cgi$">
    SetHandler cgi-script
</FilesMatch>

# php 이외에 php3, inc, html, htm 파일도 php 처럼 처리하자
<FilesMatch "\.(php|php3|inc|htm|html)$">
    SetHandler application/x-httpd-php
</FilesMatch>

<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

끝. 참 쉽죠잉.
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2021/04   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)