RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
AIX 카테고리의 이전 글을 보면 AIX에 Apache + PHP + Oracle을 연동하였는데, 이번에는 APM을 설치해야하는 상황이 왔다. 물론 저번의 APO처럼하면 될 줄 알았는데, 이게 왠걸... 안된다. 역시 SE는 쉽지 않다.

일단 AIX Toolbox는 기본으로 설치하여야한다.
설치가 정상적으로 되어 있는지 확인 해 보자.

1. 컴파일을 위한 GCC 등의 패키지 설치 및 확인
- 버전은 업데이트 될 수 있으니 AIX Toolbox에서 확인하는걸 잊지말자.
xargs rpm -iv << EOF
autoconf-2.59-1.aix5.1.noarch.rpm
automake-1.8.5-1.aix5.1.noarch.rpm
binutils-2.14-3.aix5.1.ppc.rpm
gcc-4.2.0-3.aix5.3.ppc.rpm
gcc-cplusplus-4.2.0-3.aix5.3.ppc.rpm
gcc-locale-4.2.0-3.aix5.3.ppc.rpm
libgcc-4.2.0-3.aix5.3.ppc.rpm
libstdcplusplus-4.2.0-3.aix5.3.ppc.rpm
libstdcplusplus-devel-4.2.0-3.aix5.3.ppc.rpm
gdbm-1.8.3-5.aix5.2.ppc.rpm
gdbm-devel-1.8.3-5.aix5.2.ppc.rpm
libtool-1.5.8-2.aix5.1.ppc.rpm
m4-1.4.1-1.aix5.1.ppc.rpm
make-3.80-1.aix5.1.ppc.rpm
EOF


2. PHP 5에서 필요한 패키지 설치 및 확인
xargs rpm -iv << EOF
bzip2-1.0.5-2.aix5.2.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
gettext-0.10.40-8.aix5.2.ppc.rpm
libpng-1.2.8-9.aix5.2.ppc.rpm
libpng-devel-1.2.8-9.aix5.2.ppc.rpm
libjpeg-6b-6.aix5.1.ppc.rpm
libjpeg-devel-6b-6.aix5.1.ppc.rpm
freetype-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
libxml2-2.6.21-3.aix5.2.ppc.rpm
libxml2-devel-2.6.21-3.aix5.2.ppc.rpm
zlib-1.2.3-4.aix5.2.ppc.rpm
zlib-devel-1.2.3-4.aix5.2.ppc.rpm
EOF
위 패키지는 최소한의 요구 패키지이니 꼭 설치를 해야하며, 필요하면 bash 등도 설치하는게 좋다.


3. Mysql 설치
Mysql은 일반 소스 버전이 아닌 AIX용으로 나오는 파일을 다운받아야한다.
MySQL 유저와 그룹 생성
# mkuser mysql
# mkgroup -A mysql

다운 받은 파일 압축 풀기
# cd /usr/local
# gunzip mysql-standard-5.0.27-aix5.2-powerpc.tar.gz
# tar xf mysql-standard-5.0.27-aix5.2-powerpc.tar

/usr/local/mysql로 링크걸기
# ln -s mysql-standard-5.0.27-aix5.2-powerpc /usr/local/mysql

MySQL 설정하기
# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql
# chown -R root.mysql .
# chown -R mysql.mysql data
# chgrp -R mysql .
# nohup bin/mysqld_safe --user=mysql &
이것으로 Mysql은 설치 끝이다. 설치라기보단 그냥 압축풀기 정도..


4. Apache Compile
위의 RPM이 설치가 다 되었다면 이제 컴파일 할 차례.
컴파일 전에 권장사항이 있다면, 컴파일시 너무 느린 관계로 컴파일 할때는 bash shell을 이용하도록 하자.
export CONFIG_SHELL=/opt/freeware/bin/bash
export CONFIG_ENV_ARGS=/opt/freeware/bin/bash
테스트 결과 상당히 컴파일이나 MAKE시에 속도 차이가 있으니 꼭 설정 해 주자.
아니면 한 2~3시간동안 놀다오는 수가 생긴다.

아파치 컴파일은 별다른 무리가 없이 설치가 잘되었다.
CC=gcc CXX=gcc ./configure -C --enable-so --prefix /usr/local/apache --with-included-apr


5. PHP compile
문제가 되는 것은 PHP의 make!!

export PATH=/opt/freeware/bin:$PATH

./configure \
--prefix=/usr/local \
--with-config-file-path=/usr/local/apache/conf \
--with-mysql=/usr/local/mysql \
--enable-shared \
--disable-static \
--enable-maintainer-zts \
--enable-calendar \
--enable-bcmath \
--enable-sockets \
--enable-zip \
--with-gd \
--with-zlib \
--with-libxml-dir=/opt/freeware \
--with-zlib-dir=/opt/freeware \
--with-bz2 \
--with-gettext=/opt/freeware \
--with-jpeg-dir=/opt/freeware \
--with-png-dir=/opt/freeware \
--with-freetype-dir=/opt/freeware

기존의 APACHE APXS를 이용한 so모듈을 생성하기 위해 컴파일 옵션에 아래 항목을 추가했는데...
--with-apxs2=/usr/local/apache/bin/apxs
죽어도 libphp5.so가 생성이 되지 않고 libphp5.a , libphp5.la만 생성이 된다.
결국은 so파일 형식이 아닌 CGI binary 방식으로 컴파일을 하게 된 것이다. 이후 make 와 make install로 PHP 설치를 완료 한다.

6. Config 설정
설치가 완료 된 후 httpd.conf에 php 설정을 해 주자.
ScriptAlias /php5-cgi /usr/local/bin/php-cgi
Action php-cgi /php5-cgi
AddHandler php-cgi .php
so 모듈 생성때와는 다른 설정이니 참조 해 두길 바란다.

7. 문제점
Apache, PHP, Mysql이 설치가 잘 됐는데..
이상하게 PHP에서 Mysql 모듈을 읽어 들이지 못한다. libz.so 파일을 찾는데 일단 Mysql lib디렉토리 안에는 없다! 이 일은 아직 미제다 ㅠ_ㅠ

--> 해결!
/opt/freeware/lib/libz.a 파일을 mysql설치디렉토리/lib 에 넣어주면 된다!!
  | 2011.11.21 18:21
비밀댓글입니다
언제나 최신버전을 고집하는 얄궂은 특성때문에 이번에 나온 php 5.3을 설치 해 보았다.
신나게 설치하고 나니 오류가 조금 뜬다. 뭔가 함수명이 조금 바뀌고 사라지고 생겨나서 그러한 문제..

가장 먼저 5.3 에서는 TimeZone을 설정하지 않으면 warning을 뿌려된다.

php 5.3서는 기본적으로 사용하던 php.ini-dist 라는 파일이 없어서 당황하게 만든다.
대신 php.ini-development, php.ini-production 2개의 파일이 생기는데 둘 중 아무거나 사용해도 무방하다.
약간의 옵션 차이만 있을 뿐이다.

# Time Zone 셋팅
date.timezone = Asia/Seoul


그리고 적잖이 당황하게 만든 phpinfo보기!
사실 phpinfo를 보기 위해서 적는 아래의 문구 이게 문제가 되었다.
<?      phpinfo();     ?>

위 함수 구문은 short open tag라고해서 축약식으로 쓰는거다.
기본적으론 On이 되어 있는데 5.3에서는 Off로 되어 있어서 shot open tag가 안 먹혀서 php 함수가 안먹혀서 화면에 뿌려주질 않는 것이었다.

php.ini에서 아래를 수정해준다.
short_open_tag = On

이러면 5.3 정상구동-

아스라다  | 2009.09.01 03:59 신고
좋은 정보 감사합니다. 이거 때문에 고민하고 있었는데 덕분에 해결했어요. :D
Favicon of http://uzoogom.com BlogIcon 우주곰  | 2009.09.01 08:20 신고
도움이 되어서 다행이군요-
저도 얼마나 당황했었는지 ㅎㅎ

우선 PHP를 make install 까지 다 했는데, 확장 모듈이 필요한 경우에는 아래와 같은 조치법이 있다. (여기에서는 iconv라는 모듈 올리는 것으로 가정하여 적겠다.)


확장 모듈 만들기


우선 아파치에서는 mod_so.c 모듈이 정적으로 아파치 core 에 컴파일되어 있어야 한다.

# httpd -l <- 확인하기
Compiled-in modules:
  http_core.c
  mod_so.c

<기본 모듈의 컴파일 방식>

우선 현재 아파치에서 사용하는 PHP 버전을 확인하고 만약 4.4.0 버전을 사용한다면,
php-4.4.0.tar.gz 버전을 받아서 /usr/local/src/ 압축을 푼다. 만약 서로 다른 버전일 경우 잘 안될 경우가 있으므로 가능한 현재 사용하는 같은 버전으로 하는 것이 좋다.

 

# tar zxvf php-4.4.0.tar.gz
# cd php-4.4.0
# ./configure --with-iconv  <- 옵션부분은 ./configure --help 을 참고하여 옵션설정을 한다.
# cd ext/
# ls -al <- iconv 폴더가 있는지 확인한다.
# cd iconv

# /usr/local/php/bin/phpize <- 아래와 같은 메세지가 나타난다.

Configuring for:
PHP Api Version:         20020918
Zend Module Api No:      20020429
Zend Extension Api No:   20050606

 

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-iconv
# make
# cd modules/
# ls  <- so 모듈이 생성되었는지 확인한다.

iconv.la  iconv.so

 

# mv iconv.so /usr/local/php/modules/ <- 이부분은 php.ini 에서 extension_dir 의 경로를 확인후 모듈을 복사한다.

# vi /usr/local/Zend/etc/php.ini <- php.ini가 설치된 부분을 각자 셋팅값에 따른다.
extension=iconv.so 를 추가한다.

 

# apachectl restart

 

웹브라우저에서 phpinfo 를 확인한다.

DSO, php
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줄때문에 몇 시간을 삽질했는지.....

HPUX 64bit apache2 + php5 + oracle DSO방식으로 연동하기

 

오오! 수정 이 후에는 php4 버전도 DSO 모듈로 올라간다ㅜ_ㅜ 만세 

 

먼저 open source를 사용하기 위해선 사전 작업을 해 둬야 한다.

 

작업환경

HP-UX B.11.23 U ia64

Apache 2.2.9

Php 5.2.6

Oracle 9i 64bit

 

 

기본셋팅

 

1) 소스 다운로드 : http://hpux.connect.org.uk/hppd/auto/dependencies.html

 

* HP-UX에서 GCC을 이용한 Apache Php를 연동을 위해서는 반드시 먼저 설치되어야 함!

패키지명

버전

Autoconf

2.59

Automake

1.9.6

Bash

3.1.16

Bison

2.1

Expat

2.2.0

Flex

2.5.4a

Fontconfig

2.3.2

Gawk

3.1.5

Gcc

4.1.0

Gettext

0.14.5

Glib

1.2.10

Gzip

1.3.5

libiconv

1.10

Libtool

1.5.22

Libxml2

2.6.23

M4

1.4.4

Make

3.80

Ncurses

5.5

Perl

5.8.7

Popt

1.7

rsync

2.6.8

Tcltk

8.4.12

Texinfo

4.8

Xpm

3.4

zlib

1.2.3

 

2) 설치방법

- SWINSTALL을 이용한 설치

swinstall –s 절대경로명/파일명

ex) #> swinstall –s /다운로드경로/gcc-3.4.3-sd-11.23.Depot

 

 

APM 설치

 

1) apache configure

./configure --prefix=/usr/local/apache2 --enable-modules=all --enable-so

apache의 경우 기본 perl경로를 /usr/bin에서 찾으니 HPUX는 /opt/perl/bin에 있다. 정상적으로 수정해야

php와 연동이 가능하다.

 

# vi /usr/local/apache2/bin/apxs

1번째라인 수정

#!/usr/bin/perl -w  -> #!/opt/perl/bin/perl -w

 

이것으로 apache는 완료

 

2) php configure

apache는 별 무리 없이 올라가지만, php는 약간의 작업을 해 줘야한다.

oracle 64bit로 설치되어 있지만, php는 컴파일시 32bit의 오라클 라이브러리를 요구하기 때문이다.

 

# vi configure(php5버전에서는 따로 안 해주어도 되는 듯하다!)

(vi 편집기에서 입력) %s/OCI8_DIR\/lib/OCI8_DIR\/lib32/g

 

이후 컴파일을 한다.

 

<<PHP 4버전일 경우>>

# CFLAGS=-pthread LDFLAGS="-lrt -lcl" ./configure --enable-libgcc \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/apache/conf \
--with-oci8=/oracle/ora920/app/oracle/product/9.2.0 \
--with-iconv-dir=/usr/local \
--enable-shared \
--enable-magic-quotes \
--enable-sigchild \
--enable-ftp \
--without-mysql \
--enable-sockets

 

 

<<PHP 5버전일 경우>>

# CFLAGS=-pthread LDFLAGS="-lrt -lcl" ./configure --prefix=/usr/local/php2 \

--with-apxs2=/usr/local/apache2/bin/apxs \

--with-config-file-path=/usr/local/apache2/conf \

--with-oci8=/oracle/ora920/app/oracle/product/9.2.0 \

--enable-shared \

--enable-magic-quotes \

--enable-sigchild \

--without-mysql \
--enable-ftp \

--enable-sockets

 

컴파일 완료 후, 한가지 더 작업을 해줘야 make, make install시 문제가 발생하지 않는다.

(그냥 make 하면 so 모듈을 생성하지 못한다.)

 

# vi libtool(컴파일 완료 후 생성된다.)

deplibs_check_method="어쩌구 저쩌구" 항목을 deplibs_check_method="pass_all"로 수정한다.

 

이 후, make && make install 하면 완료된다.

무슨놈의 서버들이 이렇게나 특성을 타는지.
동일한 버전의  HPUX에 동일한 package를 설치했는데도 이상하게
어떤 서버에는 php를 compile할때 oracle library를 찾지 못한다는 메세지만 뿌려대는 녀석을 발견했다.

지친다 이놈들아.
그래도 해결했다. 하핫.

1. oracle library를 찾지 못할때 configure 파일을 직접 수정한다.
*hpux*)
SHLIB_SUFFIX_NAME=sl

위부분을 찾아
SHLIB_SUFFIX_NAME=so로 수정
(※ oracle이 설치된 lib 디렉토리에서 libclntsh.so 파일을 libclntsh.sl로 링크도 해봤지만 안되서 configure파일을 직접수정해버렸음)

2. 64bit의 OS로 인하여 lib디렉토리를 찾지 못할때 역시 configure 파일을 직접 수정한다.
OCI8_DIR/lib 을 모두 OCI8_DIR/lib32 로 수정

3. php make 시에 다음의 오류 메세지가 나올 경우
/usr/local/php/ext/oci8/php_oci8.h:52:17: oci.h: No such file or directory
$ORACLE_HOME/rdbms/demo/oci.h 파일등이 없어서 생기는 문제로
잘 되는 oracle 이 깔린 서버의 rdbms 디렉토리를 통째로 copy 하여 해결
이러니 compile및 make, make install 이 다 잘되더라.

ex) 그때 사용한 compile option
./configure --prefix=/tmax/webtob/php \
--with-oci8 \
--with-mysql \
--with-pear \
--enable-shared \
--enable-magic-quotes \
--enable-sigchild \
--enable-ftp
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/09   »
            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)