커피닉스, 시스템 엔지니어의 쉼터
  Oracle 9i 64bit 환경에 Apache+PHP4 설치 (AIX 5.1L) 작성일 : 2004/04/11 23:26
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 14322
     
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2004.4.3
    정리일 : 2004.4.10~11 (공개하기 위해 정리함)

    AIX 5.1L과 Oracle 9i 환경에 Apache 1.3.x과 PHP4 를 붙이는 과정과 발생할 수 있는 문제를 해결하는 방법을 간략히 설명한다.
    국내에 이런 환경에 대한 설치 문서가 없어서 설치에 어려움을 격은 분들에게 조금이라도 도움이 되었으면 한다.
    정리를 못해 포함하지 못한 에러 메시지(PHP컴파일시의 에러메시지, Apache 실행시 에러메시지 등)와 환경 변수 등은 추후에 추가하도록 노력하겠다.

    ※ 설치 환경

     - OS : IBM AIX 5.1L (리눅스의 PPC rpm을 사용가능함)
     - Oracle 9i (중요한 것은 64bit환경으로 설치됨)
      - php 4.x
      - apache 1.3.x
      - gcc, GNU make, gzip 등이 살치되어 있음. 그러나 GNU make를 사용하지는 않았음

      - 설치 순서

      oracle 9i가 64bit로 이미 설치되어 있음 -> apache -> PHP4

    1. Apache 설치

      http://httpd.apache.org/

      아파치 1.3.x는 DSO방식으로 설치를 하고 설치 경로는 /usr/local/apache라고 가정한다.

     
      # gunzip apache_1.3.29.tar.gz
      # tar xvf apache_1.3.29.tar
      # cd apache_1.3.29
      #
      # CC=gcc OPTIM='-Wall -g' ./configure --prefix=/usr/local/apache \
       --enable-module=all --enable-shared=max \
       --disable-module=auth_dbm --disable-module=auth_db

     


      만약 IBM의 C 컴파일렁니 xlc_r을 사용한다면 configure할 때 다음과 같이 한다.

     
      # CC=xlc_r OPTIM='-qinfo=pro -qfullpath -g' ./configure --prefix=/usr/local/apache \
       --enable-module=all --enable-shared=max \
       --disable-module=auth_dbm --disable-module=auth_db

     


      바로 이 상태에서 make를 한다면

      'ld: 0711-317 오류: 정의되지 않은 기호: .__fixsfsi' 또는
      'ld: 0711-317 ERROR: Undefined symbol: .__fixsfsi' 과 같은 에러가 발생할 것이다.

      apache의 소스 트리에서 src/support/httpd.exp 파일 마지막에 다음 2줄을 넣어준다.

     
    __fixsfsi
    __fixunssfsi
     


      자 이제 make하면 설치가 된다.

     
      # make
      # make install
     


    2. PHP4 컴파일

      이 부분이 해결하기 힘든 부분 중에 하나일 수 있다.
      Oralce 9i는 64bit 환경으로 설치되어 있는 상태인데, PHP4는 32bit의 오라클 라이브러리를 요구하기 때문이다.
      분명한 것은 이 상태에서 설치를 시도한다면 make할 때 오류가 발생할 것이다.

      방법은 2가지 정도가 있으며, 여기서는 방법 2를 이용해서 하겠다.

      방법 1) Oracle 8i client를 서버에 설치하여 이 8i client의 라이브러리를 이용해서 PHP4를 설치
      방법 2) Oracle 9i 의 32bit 라이브러리를 사용하도록 PHP4의 configure 파일을 수정 한 후 설치

     ※ - Oracle 9i  홈 디렉토리는 /oracle/app/920 임
         - 64bit 라이브러리는 /oracle/app/920/lib 에 있으며
           32bit 라이브러리는 /oracle/app/920/lib32 에 있다.
       - MySQL은 사용 안한다면 --without-mysql 옵션을 넣는다.

      1) root의 .profile에 다음을 추가한다. (추후 Apache실행할 때 중요한 부분이다.)

     
      LIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/lib; export LIBPATH
      LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/lib; export LD_LIBRARY_PATH
     


      2) PHP4를 받아 압축을 푼 후 configure 파일을 수정한다.
         configure 안의 OCI8_DIR/lib 를 OCI8_DIR/lib32 로 바꾼다. vi로 해결해보자.

     
      # vi configure
      :1,$s/OCI8_DIR\/lib/OCI8_DIR\/lib32/g  <-- (첫번째 줄(1)부터 마지막줄($)까지 모두 replace)
      :wq
     

        
      3) configure 한 후 컴파일하면 완료

     
      # ./configure --prefix=/usr/local/php \
            --with-apxs=/usr/local/apache/bin/apxs \
            --with-apache-install=/usr/local/apache \
            --with-mysql=/usr/local/mysql \
            --enable-track-vars --enable-safe-mode --enable-debugger \
            --with-zlib  \
            --with-xml \
            --with-charset=euc_kr \
            --with-language=korean \
            --with-oci8=/oracle/app/920 \
            --with-oracle=/oracle/app/920

      # make
      # make install
     


    3. 문제 해결

    1) Apache 컴파일할 때 다음과 같은 오류가 발생했다.

     
    ======== Error Output for sanity check ========
            cd ..; gcc  -DAIX=510 -U__STR__ -DAIX_BIND_PROCESSOR -DUSE_HSREGEX `./apaci`   -lm -lpthread -o helpers/dummy helpers/dummy.c   -lexpat -lld
    collect2: /lib/libm.a: not a COFF file <-- 중요
    make: The error code from the last command is 1.


    Stop.
    ============= End of Error Report =============
     


      -> gcc 버전을 변경하여 컴파일 하면 된다.

    2) Apache 컴파일할 때 다음과 같은 오류가 발생했다.

     
    ld: 0711-317 오류: 정의되지 않은 기호: .__fixsfsi
     


      -> Apache 소스 트리에서 src/support/httpd.exp 파일 마지막에 다음 2줄을 추가한다.

     
    __fixsfsi
    __fixunssfsi
     


    3) Apache 컴파일할 때 'Cannot run a 64-bit program until the 64-bit' 과 같은 에러가 발생했다.

     
    ======== Error Output for sanity check ========
            cd ..; gcc -Wall -g -DAIX=510 -U__STR__ -DAIX_BIND_PROCESSOR
    -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -DUSE_EXPAT -I./lib/expat-lite `./apaci`
    -lm -lpthread  -o helpers/dummy helpers/dummy.c   -lld
    Could not load program /usr/ccs/bin/bind64:
    Cannot run a 64-bit program until the 64-bit
            environment has been configured. See the system administrator.
    collect2: ld returned 255 exit status
    make: The error code from the last command is 1.
     


      -> AIX OS를 64bit 로 전환한다.

    shell상에서 /etc/methods/cfg64 명령을 실행하면 된다.
     
      # /etc/methods/cfg64
     


    또한 부팅할 때마다 64비트로 로딩되도록 /etc/inittab 에 cfg64 명령을 추가해도 좋다.
    mkitab 명령은 inittab에 cfg64명령을 대신 추가해줄 것이다.

     
      # mkitab -i powerfail "load64bit:2:wait:/etc/methods/cfg64 >/dev/console 2>&1 # Enable 64-bit execs"
     


    4) PHP컴파일할 때 ld: 0711-317 ERROR: Undefined symbol: .OCIEnvInit ... 등의 에러가 발생했다.

     
    ld: 0711-317 ERROR: Undefined symbol: .ologof
    ld: 0711-317 ERROR: Undefined symbol: .oclose
    ld: 0711-317 ERROR: Undefined symbol: .oopen
    ld: 0711-317 ERROR: Undefined symbol: .oparse
    ld: 0711-317 ERROR: Undefined symbol: .olog
    ld: 0711-317 ERROR: Undefined symbol: .ocof
    ld: 0711-317 ERROR: Undefined symbol: .ocon
    ld: 0711-317 ERROR: Undefined symbol: .ocom
    ld: 0711-317 ERROR: Undefined symbol: .orol
    ld: 0711-317 ERROR: Undefined symbol: .obndra
    ld: 0711-317 ERROR: Undefined symbol: .oexec
    ld: 0711-317 ERROR: Undefined symbol: .oexfet
    ld: 0711-317 ERROR: Undefined symbol: .ofetch
    ld: 0711-317 ERROR: Undefined symbol: .oflng
    ld: 0711-317 ERROR: Undefined symbol: .oerhms
    ld: 0711-317 ERROR: Undefined symbol: .odescr
    ld: 0711-317 ERROR: Undefined symbol: .odefin
    ld: 0711-317 ERROR: Undefined symbol: .OCIEnvInit
    ld: 0711-317 ERROR: Undefined symbol: .OCIHandleAlloc
    ld: 0711-317 ERROR: Undefined symbol: .OCIInitialize
    ld: 0711-317 ERROR: Undefined symbol: .OCIHandleFree
    ld: 0711-317 ERROR: Undefined symbol: .OCITransRollback
    ld: 0711-317 ERROR: Undefined symbol: .OCIDescriptorFree
    ld: 0711-317 ERROR: Undefined symbol: .OCIErrorGet
    ... 중략 ...
    ld: 0711-317 ERROR: Undefined symbol: .OCITypeByRef
    ld: 0711-317 ERROR: Undefined symbol: .OCIObjectNew
    ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
    collect2: ld returned 8 exit status
    make: 1254-004 최종 명령에서의 오류 코드는 1입니다.


    Stop.
     


      -> PHP컴파일하기 전에 '2. PHP4 컴파일'에서 2) configure 파일을 수정한 후 컴파일한다.

    4. 참고할만한 자료

    - AIX에서 Apache 1.3.x 설치애 대한 문서
      http://www.apache.org/~trawick/apache13aix.html

    - Oracle과 PHP4 연동하여 설치하는 방법에 대한 글
      http://kr.php.net/oci8

    - AIX용 바이너리 패키지 사이트 Public Domain Software Library for AIX
      http://aixpdslib.seas.ucla.edu/

    - AIX 51-05에서 gcc로 Apache 1.3.29 컴파일할 때 오류 문제에 대해
      http://www.faqs.org/qa/qa-12016.html

     
      제목 : Hi- I'm compiling apache 1.3.29 on AIX 51-05 using gcc...
      날짜 : 2004/1/28
      질문 :

      I'm compiling apache 1.3.29 on AIX 51-05 using gcc 2.95.  I'm coming up with error:
      "collect2: /usr/lib/libm.a: not a COFF file"

      Not sure what to do with this but obviously I'm far from an expert. . .

      tks,
      Bill Edison

      답변 :

      You just have to try with a earlier version of GCC (such as 3.3.2).

      We experienced this, and it's ok.

      Good luck

      Franck Bercher
     




    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=290