RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
php 5.2.x버전 이상에서는 [--with-oci8=]이라는 configure 옵션에는 있지만 먹히지 않는 기묘한 현상을 보인다.

결국 뒤져본 결과 참으로 허탈한 답변을 구할 수 있었다.

first read what i wrote about:
I'm telling not about oracle8, but about oracle9 and oracle10.

extension name is OCI8 , but it used for oracle from 8 to 10
NOT ONLY TO ORACLE 8 (!)

------------------------------------------------------------------------

[2007-08-28 11:14:58] [EMAIL PROTECTED]

We don't support Oracle 8 anymore. :)

------------------------------------------------------------------------

그래 뭐.. 버전이 업데이트가 많이 된 상황이니 지원을 안 할 수도 있겠지..
라고 생각하고 다음 코멘트를 봤다.

[10 May 8:05pm UTC] tony2001@php.net

Upgrade to newer Oracle version.


OTL ...  새걸로 업그레이드 해라. 말이 업그레이드지...
그게 맘대로 되는 것이더냐!

구글신의 힘을 빌어 뒤져 본 결과.
역시나 방법(편법)이 있었다!

오류내용)
/usr/local/src/php-5.2.3/ext/oci8/oci8_lob.c:304: error:
`OCI_NLS_CHARSET_MAXBYTESZ' undeclared (first use in this function)
/usr/local/src/php-5.2.3/ext/oci8/oci8_lob.c:304: error: (Each
undeclared identifier is reported only once
/usr/local/src/php-5.2.3/ext/oci8/oci8_lob.c:304: error: for each
function it appears in.)
make: *** [ext/oci8/oci8_lob.lo] Error 1

해결법)
일단 php 5.2.x 버전의 압축을 풀고 그 디렉토리로 이동한다. 아래 파일을 수정해 준다.

# vi ext/oci8/oci8_lob.c
그리고 아래와 같이 되어 있는 줄을 찾는다.

▶수정 전(약 303번째줄)

=======================================
        if (is_clob) {
                PHP_OCI_CALL_RETURN(connection->errcode, OCINlsNumericInfoGet, (connection->env, connection->err, &bytes_per_char, OCI_NLS_CHARSET_MAXBYTESZ));
 
                if (connection->errcode != OCI_SUCCESS) {
                        php_oci_error(connection->err,connection->errcode TSRMLS_CC);
                        PHP_OCI_HANDLE_ERROR(connection,connection->errcode);
                        return 1;
                }
        } else {
                /* BLOBs don't have encoding, so bytes_per_char == 1
*/
        }
 =======================================

▶수정 후(색칠 된것을 추가)

=======================================
        if (is_clob) {
#ifdef OCI_NLS_CHARSET_MAXBYTESZ
                PHP_OCI_CALL_RETURN(connection->errcode, OCINlsNumericInfoGet, (connection->env, connection->err, &bytes_per_char, OCI_NLS_CHARSET_MAXBYTESZ));
 
                if (connection->errcode != OCI_SUCCESS) {
                        php_oci_error(connection->err,connection->errcode TSRMLS_CC);
                        PHP_OCI_HANDLE_ERROR(connection,connection->errcode);
                        return 1;
                }
#else
                bytes_per_char = 4;
#endif
        } else {
                /* BLOBs don't have encoding, so bytes_per_char == 1
*/
        }
 =======================================

이후 configure , make, make install 을 하면 된다.
Trackback
Reply
64bit OS에는 이상하게도 PHP5에 oracle client가 oci8로 도무지 붙지를 않았다.

버전의 문제인가 싶어 다른 버전으로 시도해봤지만 역시나 붙지 않는다.
자꾸 libclntsh.so파일을 찾을 수 없다고 나온다. 분명 파일도 정상적으로 링크가 되어있고
LD_LIBRARY_PATH역시 정상적으로 잡아주었는데..

결국 64bit OS의 특성인 듯하여 oracle instant Client로 대처하기로 했다.

[DOWN]
http://www.oracle.com/technology/tech/oci/instantclient/index.html

위의 URL로가서 oracle instant client를 받는다. 최신 버전은 11g이다.
난 당연히 64bit OS이기 때문에 64bit 버전을 받는다. linux의 경우에는 2개의 파일을 받자.
개인적으로 rpm 패키지 보다는 소스를 좋아하기에 소스 버전으로 받았다.

basic.zip (44,800,163 bytes) (cksum - 2302121184)
sdk.zip (607,175 bytes) (cksum - 3112907190)

두 개의 파일을 받아 압축을 풀면 /instantclient_11_1 안에 두개의 파일이 들어간다.
instantclient_11_1안에는 basic.zip의 파일내용이 nstantclient_11_1/sdk에는 sdk.zip 파일이 풀린다. 그리고 링크를 하나 걸어주어야 한다.

# ln -s libclntsh.so.11.1 libclntsh.so

oracle instant client설치는 이것으로 끝이다.
참고로 말하자면 저 디렉토리 이름을 바꾸고 LD_LIBRARY_PATH를 다 잡아주고 했는데도 PHP 컴파일시 버전을 찾지 못하는 요상한 현상이 벌어진다.(이것으로 한 3시간은 잡아 먹은듯..) 왜인지는 조금 더 두고 봐야할듯하다.

이제 php5에 올려보자.
php configure 옵션에 --with-oci8=instantclient,/data/instantclient_11_1 --enable-sigchild
를 추가한다. 주의 할 것은 php 버전에따라 instant client 설치법이 조금씩 다르다.
확인을 하려면 ./configure --help | grep oci 로 확인을 해봐야할 것이다.
PHP5 버전에서는 위와 같은 방법으로 하면 된다. /data/instantclient_11_1는 위에서 압축을 푼 디렉토리를 적어주어야 함을 명심하자.

이제 컴파일하면 별 문제없이 make, make install이 될것이다.

아 물론, network/admin/ 이란 디렉토리를 만들어서 tnsnames.ora 파일을 생성해줘야 하는 것도 잊지말자.

Trackback
Reply
centos 5
apache 2.2.6
tomcat 6.0.14
php 4.4.7
jdk 1.6
mysql 5.1.22 rc
 
스펙은 대충 저러하다. 전부 최신 버전이지만 php만 4점대 버전인것은... 회사에서 요구한거라.
뭐 php 버전은 그다지 중요하지 않으니 상관이 없다.

가장 먼저 각 configure 옵션이다.

* mysql
./configure --prefix=/usr/local/mysql \
--with-unix-socket-path=/usr/local/mysql/tmp \
--with-charset=euckr \
--localstatedir=/usr/local/mysql/data

* apache
./configure --prefix=/usr/local/apache --enable-MODULE=shared --enable-so \
--enable-rewrite --with-mpm=worker
※ 추 후 모듈 올릴 것을 대비하여 DSO방식으로 올리고 mpm를 worker로 사용하였다.

* freetds (mssql과 연동하기 위한 데몬)
./configure --prefix=/usr/local/freetds --with-tdsver=8.0 \
--enable-msdblib --enable-dbmfix --with-gnu-ld \
--enable-shared --enable-static

* php
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/apache/conf \
--with-mysql=/usr/local/mysql \
--with-mssql=/usr/local/freetds --with-sybase=/usr/local/freetds \
--with-mod-charset --with-language=korean --with-charset=euc_kr \
--disable-debug --with-xml --enable-magic-quotes --with-gettext --enable-ftp \
--enable-sockets --with-gnu-ld --enable-track-vars \
--enable-module=so

* java
자바의 경우는 그냥 chmod 700으로 주고 실행을 시키면 자동으로 설치가 된다.
/usr/java/jdk1.6.0_03에 설치가 되며 /etc/profile에 환경변수를 넣어주자.

JAVA_HOME=/usr/java/jdk1.6.0_03
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
export PATH

환경변수 입력수 source /etc/profile 해주는 센스 정도는 챙기자.

* tomcat
압축을 풀고 난뒤에 /usr/local/tomcat 으로 옮기면 설치 완료. 역시나 간단간단.
사실 설치시 중요한건 php설치시 mysql과 mssql을 집어넣는 것 정도이다.
apache와 tomcat을 연동하려면 설치 후에 작업을 해주어야 한다.

[연동 시작]
위와 같이 설치가 끝나면 이제 apache와 tomcat을 연동시켜 보자.
apache와 tomcat을 연동시키기 위해서는 특별한 모듈이하나 필요하다.

http://tomcat.apache.org/download-connectors.cgi

에서 다운을 받는다. 내가 사용한 버전은 jakarta-tomcat-connectors-jk2-src-current.tar.gz
참고로 JK2 Connector 는 2004.11월 이후 개발이 중지되었다. 그리고 보안을 위해 JK1.2.23이상을 사용
하는것이 좋다.(최신버전 1.2.25)

tar xzvf tomcat-connectors-1.2.25-src.tar.gz
cd tomcat-connectors-1.2.25-src/native
./configure --with-apxs=/usr/local/apache/bin/apxs
make
cp apache-2.0/mod_jk.so /usr/local/apache/modules/

httpd.conf 설정

# JK Connection
LoadModule jk_module modules/mod_jk.so
JkWorkerProperty worker.list=ajp13
JkWorkerProperty worker.ajp13.type=ajp13
JkWorkerProperty worker.ajp13.host=localhost
JkWorkerProperty worker.ajp13.port=8009
JkLogFile "logs/mod_jk.log"
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkMount /*.jsp ajp13
JkMount /*.XXX ajp13

*.XXX는 JSP 파일 확장자를 추가하는 부분으로 web.xml를 수정하는 것이다. 굳이 할 필요는 없다.

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.XXX</url-pattern>
</servlet-mapping>

자 이것으로 apache와 tomcat 연동은 끝이났다.

이제 mssql 연동
/etc/ld.so.conf에
/usr/local/freetds/lib 추가 후 ldconfig를 실행해서 라이브러리를 올려주자.

# vi /usr/local/freetds/etc/freetds.conf
[MyServer70]
        host = 서버아이피
        port = 1433
        tds version = 8.0

만 추가해주면 끝.


!! 추가상황 발생

apache 2.2.6
tomcat 6.0.14

상황은 www.uzoogom.com을 virtual host로 잡았는데 하위 디렉토리의 jsp를 제대로 읽어들이지 못한다.

이전에 말한 apache+tomcat중 2번째 방법으로 연동하였을때,
# JK Connection
LoadModule jk_module modules/mod_jk.so
JkWorkerProperty worker.list=ajp13
JkWorkerProperty worker.ajp13.type=ajp13
JkWorkerProperty worker.ajp13.host=localhost
JkWorkerProperty worker.ajp13.port=8009
JkLogFile "logs/mod_jk.log"
JkLogLevel info
JkMount /*.jsp ajp13

이렇게만 하면 www.uzoogom.com/index.jsp까지는 먹힐지언정
www.uzoogom.com/home/a.jsp같은 경우에는 jsp가 제대로 인식이 안되라.

먼저 httpd.conf에
# JK Connection
LoadModule jk_module modules/mod_jk.so
JkWorkerProperty worker.list=ajp13
JkWorkerProperty worker.ajp13.type=ajp13
JkWorkerProperty worker.ajp13.host=localhost
JkWorkerProperty worker.ajp13.port=8009
JkLogFile "logs/mod_jk.log"
JkLogLevel info

까지만 집어 넣는다.
그리고 httpd-vhosts.conf파일을 열어 virtual host설정부분을 수정한다.
<VirtualHost 211.***.***.***:80>
    ServerAdmin network@dunet.co.kr
    DocumentRoot /usr/local/apache/htdocs/uzoogom
    ServerName www.uzoogom.com
    ErrorLog logs/uzoogom-error_log
    CustomLog logs/uzoogom-access_log common
    JkMount /*.jsp ajp13
    JkMount /abc/*.jsp ajp13
    JkMount /abc/efg/*.jsp ajp13
</VirtualHost>

JKMount부분을 여기에 집어넣는 것이 정답이었다. 여기에서는 /abc/하위 디릭토리의 *.jsp 파일과 /abc/efg/*.jsp의 파일을 읽어들이게 만들었다.

급해서 정규식이 먹히는지는 확인 해보지 않았다.
이걸 적구 테스트 하니 정규식도 잘 먹힌다.

저 3줄때문에 몇 시간을 삽질했는지.....

Trackback
Reply
root@uzoogom ~ # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
211.214.192.0   0.0.0.0            255.255.255.0      U        0         0        0 eth0
169.254.0.0      0.0.0.0            255.255.0.0         U        0         0        0 eth0
0.0.0.0            211.214.192.1   0.0.0.0               UG      0         0        0 eth0

route -n을 해보면 기본적인 라우팅 테이블 정보가 나오는데
내가 설정하지도 않은 169.254.0.0이 모든 서버에 나오는 것을 알 수 있다.

저것은 도대체 무엇일까? 해서 구글링 해 본 결과.

169.254.0.0/16은 Zero Configuration Networking 을 위하여 예약된 subnet 입니다. Zero Configuration Networking 이라는 것은.. DHCP 환경이 없는 네트워크에서 Peer to Peer 연결이나 Wireless 환경에서 관리자의 수동적인 설정이 없이 네트워킹을 할 수 있는 환경을 만들기 위한 규약입니다. (영어로 되어 있어서 대충 봐서 정확하지는 않습니다. 궁금하신 분들은 http://www.zeroconf.org/ 를 참고 하시기 바랍니다. 영어입니다!)
라는 답변을 얻을수 있었다.

없애는 법)
/etc/sysconfig/network에 다음의 라인을 넣어주면 네트워킹이 재시작 된 이후부터는 나오지 않게 된다.
NOZEROCONF=yes

Trackback
Reply
# mysql -u root -p
mysql> use mysql

반드시 mysql database를 사용한다. 거의 모든 설정이 이 안에서 이뤄진다.
사용자 계정은 user 라는 테이블로 저장이 된다.

mysql> select * from user;

사용자 정보를 모두 확인가능

mysql> create database DB이름;

database 생성
mysql> grant all privileges on webhard2.* to web@localhost identified by '1q2w3e' with grant option;

web@localhost ← web이 계정이다
1q2w3e'       ← web계정의 비번

mysql> flush privileges;  ←지금까지의 것을 적용

Trackback
Reply
기본적으로 Jpegsrc는 32bit 운영체제에는 별 문제 없이 인스톨이 된다.
하지만 64bit 운영체제에는 설치가 안되고 오류 메세지가 뜸을 확인하였다.


오류내용)
./libtool --mode=compile gcc -O2  -I. -c ./jcapimin.c
make: ./libtool: 명령을 찾지 못했음
make: *** [jcapimin.lo] 오류 127

해결법)
뭐 이정도의 원문은 쉽게 읽을 수 있으리라.(...귀찮아서..)

Jpegsrc 64
From Noah.org
Jump to: navigation, search
[edit]How to build jpegsrc.v6b on 64-bit Linux machines
jpegsrc is no longer maintained and has not been updated since the Clinton administration. This is odd considering how critical this library is to so many applications.

If you are trying to build on a 64-bit Linux machine you will probably get this error during the ./configure step:

checking host system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
The fix is simple -- just copy '/usr/share/libtool/config.guess' and '/usr/share/libtool/config.sub' to the same directory as the jpeg-6b ./configure script. You can also copy from from /usr/share/automake-1.9/.

cp /usr/share/libtool/config.guess .
cp /usr/share/libtool/config.sub .
./configure --enable-shared --enable-static
One site suggests that you also need tell the jpegsrc build where the 64-bit libdir is located:

make libdir=/usr/lib64
make libdir=/usr/lib64 install
That will change the directory where 'make install' puts the libjpeg library files, but you may not want that if you are installing libjpeg to a custom path (in other words, if you used the --prefix option for configure).

Retrieved from "https://www.noah.org/wiki/index.php/Jpegsrc_64"
Category: Engineering
Trackback
Reply
기본적으로 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

Trackback
Reply
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

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

Trackback
Reply
기본적으로 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/


Trackback
Reply
오류)
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 */

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

Trackback
Reply
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 옵션을 줘서 해결해보자(난 이게 편하던데..)

Trackback
Reply
설치환경)
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 연동이 된 것이다.
Trackback
Reply
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>

끝. 참 쉽죠잉.
Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2025/03   »
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 31