본 문서는 Apache + PHP + Oracle Client를 설치 문서이다.

작성일 : 2011. 9. 7



참고 사이트

- Installing PHP and the Oracle Instant Client : http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html

- Apache 2.X + PHP 5.X 설치 : http://www.dakrink.pe.kr/archives/341

- php.ini 관련 설정 : http://www.solanara.net/solanara/amp



설치 환경 및 모듈 버전

- OS : Redhat Enterprise 5.2

- Httpd : Apache 2.2.20 (http://httpd.apache.org)

- PHP : php 5.3.8 (http://www.php.net)

- Oracle Instant Client : 11.2.0.2.0 (http://www.oracle.com/technetwork/database/features/oci/index.html)

- OCI8 : 1.4.6 (http://pecl.php.net/package/oci8)



설치 위치

- Apache : /usr/local/httpd-2.2.20
- PHP : /usr/local/php-5.3.8



소스 위치

- /usr/local/src



Step 1. Installing Apache with PHP


1. Compile & Install Apache

# cd /usr/local/src/httpd-2.2.20
# ./configure --prefix=/usr/local/httpd-2.2.20 --enable-module=so --enable-mods-shared=most
# make ; make install


2. Edit httpd.conf ( 아래 라인 추가 )

AddType application/x-httpd-php .php .htm .html .inc .php5 .php4
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php index.htm


3. Compile & Install PHP

# cd /usr/local/src/php-5.3.8
# ./configure --prefix=/usr/local/php-5.3.8 \
--with-apxs2=/usr/local/httpd-2.2.20/bin/apxs \
--with-config-file-path=/usr/local/httpd-2.2.20/conf \
--with-exec-dir=/usr/local/httpd-2.2.20/bin --with-gd
# make ; make install


4. Check Web Server Working



Step 2. Install Oracle Instant Client


1. Download Oracle Instant Client

1) Download URL : http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

2) Download Package
- Instant Client Package - Basic
- Instant Client Package - SDK


2. Installing by RPM (32BIT)

1) 32bit

# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm

2) 64bit

# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm

위 RPM은 /usr/lib/oracle/11.2/client 또는 /usr/lib/oracle/11.2/client64에 설치된다.



Step 3. Installing OCI8


1. OCI 8 설치

# /usr/local/php-5.3.8/bin/pecl install oci8

그럼 아래와 같은 질문이 출력된다.

Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :

그러면 아래와 같은 옵션을 입력한다.

instantclient,/usr/lib/oracle/11.2/client/lib


2. 모듈 복사

OCI8이 설치되면 /usr/local/php-5.3.8/lib/php/extensions/no-debug-non-zts-20090626 아래 oci8.so가 생성된다. 이 외에 Extension Modules이 있을 수 있으니 상위 디렉토리(/usr/local/php-5.3.8/lib/php/extensions) 로 복사해 넣는다.


3. 모듈 설정

1) php.ini 복사

소스 컴파일 경우 php.ini가 생성되지 않는다. 이를 위해 상용 서비스용 샘플 Config 파일을 복사한다.
PHP 컴파일시 준 옵션 (--with-config-file-path=/usr/local/httpd-2.2.20/conf)에 의해 httpd 설정 디렉토리에 복사해 넣는다.

# cp /usr/local/src/php-5.3.8/php.ini-production /usr/local/httpd-2.2.20/conf

2) php.ini 수정 ( 아래 라인을 찾아 수정한다)

date.timezone = Asia/Seoul
short_open_tag = On
include_path = ".:/usr/local/php-5.3.8/lib"
extension_dir = "/usr/local/php-5.3.8/lib/php/extensions/"
expose_php = Off

3) php.ini 에 추가 ( Dynamic Extensions 섹션에 추가 )

extension=oci8.so

4) 환경 변수 수정

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH;/usr/lib/oracle/11.2/client/lib



Finally, Start Apache Server & Testing


1. 아파치 문서 디렉토리에 테스트 페이지 생성

# vi test.php

<?

phpinfo ();

?>


2. 웹 브라우져에서 확인




3. 테스트용 소스 코드 작성

# vi testoci.php

<?php

$conn = oci_connect('hr', 'hr_password', 'mymachine.mydomain/MYDB');

$stid = oci_parse($conn, 'select table_name from user_tables');
oci_execute($stid);

echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";

?>


4. 에러 확인

위 코드 수정후 정상 작동이 안 될 경우 php.ini의 옵션 값중 display_errors = Off를 On으로 변경해 주면 에러값이 출력된다.


Posted by 카프러브




아이폰 / 아이패드용 레이싱 경기중 가장 유명한 아스팔트....

최신 버전인 6가 무료로 일시적으로 풀렸습니다..

다시 유료화되기 전에 얼른 다운 받으시길 바랍니다.

 

http://itunes.apple.com/us/app/asphalt-6-adrenaline-hd/id400975931?mt=8

Posted by 카프러브


어제 득템한 AV Adapter입니다..


HDMI 포트를 이용하여 아이폰이나 아이패드의 동영상을 TV나 모니터로 출력할 수 있는 악세사리입니다.





동영상은 장시간 밧데리 소모를 요구하기 때문에 전원 연결이 요구됩니다.

그래서 이 아답터에는 30핀 커넥터가 있어서 위 사진 처럼 전원을 연결할 수 있습니다.





보통 제 아이폰에는 낮은 품질의 화질로 된 동영상(MP4)을 넣어둡니다.
작은 화면이라..고화질이 굳이 필요없거든요...

낮은 품질의 동영상이지만 42인치 TV로 출력해서 보았을 때에도
무난한 화질이 나오네요..

그래도 일부 깨짐 현상 같은 것이 눈에 보이긴 합니다..
여행등 장거리 가서 숙소에서 TV를 볼 때는 고화질로 컨버팅을 해 넣어야 할 거 같습니다.


악세사리 치곤 좀 비싼 가격이 흠이긴 하지만...
하나쯤 있으면 좋을 것 같은 아이템입니다..
Posted by 카프러브


오늘 애플에서..새로운 아이템을 하나 업어왔습니다..


맥북 프로를 쓰는 내가...이걸 살지는 몰랐는데..
책상 구조상 사게 되었습니다..
마일리지 보태서 산거라...4만원이 약간 안 들었습니다..



박스를 열면....비닐로 잘 포장된...키보드가 나옵니다..



비닐을 잘 뜯어서...

키보드 배열이 맥북프로와 달라 처음엔 약간 어색하더군요...
그래도 키감은..좋습니다..



매직 트랙패드와 놓고 보니 간지가..좔좔...




제 책상입니다.. 업무용은 윈도우 기반이고....개인용은..맥을...

가운데 모니터는 윈도우의 메인 화면이자 맥북프로의 서브 모니터로 사용하고 있습니다..
이렇게 배치하니...키보드와 마우스만 움직이면 되네요...

그 이전엔 맥북 프로 쓸때마다... 옮겨야만 했었는데..

오늘부터..쾌적한 맥라이프가 되겠네요...
Posted by 카프러브

오늘 받은 리눅스 매거진 뉴스레터 중에 " iotop: Per Process I/O Usage " 이란 기사가 눈
에 띄었다..

기사 원문 : http://www.linux-mag.com/id/8366/?hq_e=el&hq_m=1253841&hq_l=10&hq_v=006ef52014

IO를 많이 쓰는 프로그램을 Top 처럼 보여준다는 유틸 소개였다..

CPU나 RAM 성능이 좋아지면서.... 물리적인 제한을 갖고 있는 IO가 서버 성능에 지대한 영향을 미치면서... 이에 대한 성능 측정도 필요했었는데... 마침 그런 툴이 있다니...

테스트 하기 위해.. 다운로드를 받았습니다..


 < http://guichaz.free.fr/iotop/ >


요구 조건은 아래와 같습니다...
  • Python >= 2.5 -or- Python 2.4 + ctypes
  • 2.6.20 kernel (or greater) with IO accounting and VM event counters configured

    (그러나..공식 문서에는 없는 요구 조건이 있습니다. 이 문서를 끝까지 읽으시고....설치 여부를 결정하시기 바랍니다.)

  • 설치는 간단한 편입니다.. 2단계만 거치면 되니까요..


    압축을 풀고

    # python setup.py build





    # python setup.py install


    만 해주면 설치 완료...

    그러나....실행해 보면... 아래와 같은 에러가 뜨네요....



    찾아보니... python 2.3 이상이어야 ctype을 설치할 수 있고 2.5는 기본 설치...
    저는 python 버전이 2.4.3-44.el5  이더군요...

    그래서 http://pypi.python.org/pypi/ctypes 에 가서...설치 시작...
    Linux에서는 암만 편해졌어도...최소한의 삽질 필요..ㅠㅠ

    여기서 설치는 두단계만 거치면 되네요... 그러나 테스트를 지원하기 때문에...
    설치 전에 테스트 실시..

    # python setup.py build
    # python setup.py test
    # python setup.py install


    바로 실행을 해 보았습니다...


    그러나...예상했던 화면은 안 나오고....엉뚱한 화면..이 나왔습니다..

    맨 하단에

    CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO %


    커널에서 CONFIG_TASK_DELAY_ACCT 를 활성화 시켜줘야 하나 보네요....ㅠㅠ

    구글링을 통해서 찾은 결과... http://www.gnutoolbox.com/iotop/ 가 가장 정확히 해결 방안을 내 놓고 있습니다...

    결론은 커널 컴파일을 해야 한다는 점..ㅠㅠ 지금 시스템이 다른 어플리케이션으로 인해
    그럴 상황이 아니기 때문에...

    저는 결론은 포기... 그러나..곧 기본 패키지로 들어올만한 유틸인 것 같습니다..









    Posted by 카프러브

    작년에 산 MacBookPro...
    이는 저의 노트북 사용 패턴을 바꾸었다..
    기존 노트북에서는 느낄 수 없었던....심한 발열로 인해...
    노트북 쿨러를 사용하게 된 것이였다..

    그러던 중...첫눈에 반한 노트북 쿨러가 있었다..
    바로 JustMobile사에서 나온 Cooling-Bar였다....

    단순한 디자인과 맥북 프로와 동일한 금속성 재질이
    MacbookPro와 찰떡 궁합처럼 보였다..

    길이가 그닥 길지 않기 때문에 13인치와 15인치형만 사용이 가능할 것 같다.



    그러나..55,000원이란 거금이...조금...부담이 되었다...
    그래서...그동안 쌓아뒀던 포인트를 이용해...샀다..


    쿨링바는 양쪽 부분에 고무재질의 미끄럼 방지 역할을 해 주는 부분과
    전원케이블을 가이드해 주는 홈이 파여있다.



    Cooling Bar에...MacBookPro를 올려 놓은 모습입니다..
    그리고 가장 큰 장점은..막대 형태이기 때문에...휴대성이 무척 좋습니다..
    제가 산 이유 중에 하나도..세미나나 교육 때문에 사용하기 위해서였습니다..
    ( 키노트 교육 때... 장시간 나무 책상에서 썼더니...
    발열이 두배로..발생했던 관계로. 구매 결심을 하게 되었었습니다..)


    MacBookPro를 사용하시는 분들께는..꼭 강추하고 싶은 아이템입니다..
    다만..판매하는 곳이 몇 안되서 구매가 싶지 않은게 단점입니다.

    하여튼 저는 만족하는 아이템입니다.
    Posted by 카프러브

    회사 업무로 인해 Tomcat를 설치할 일이 생겼습니다.

    설치 환경은 CentOS인데 yum을 이용하여 설치하기로 마음을 먹었습니다.


    이유는 패키지를 이용하면 이후 보안 문제 등으로 버전업을 해야 할 경우 이후 관리가 용이하고,

    표준화된 디렉토리 구조로 인해 후임자가 설치 환경을 파악히기 쉽다는 점 때문입니다.

    그러나 톰캣 설치를 해 본적이 없는 저는 이번 일로..고생 좀 했습니다..


    아래는 CentOS 설치시 개발 관련된 선택 설치는 한 상태에서 Tomcat 관련에서 추가로 설치한 패키지들입니다.

    ## Tomcat Package ##
    tomcat5 ; Tomcat
    tomcat5-webapps ; Tomcat Webapps ( /usr/share/tomcat5/webapps/ROOT 설치 화일 )
    tomcat5-admin-webapps : Tomcat Admin Webapps (
    http://HOST/admin 설치화일 )
    tomcat5-servlet-2.4-api : Servlet API
    tomcat5-jsp-2.0-api.i386 : JSP API
    struts-webapps-tomcat5.i386 : Struts

    ## JDK ##
    java-1.6.0-openjdk-devel
    ## MySQL ##
    mysql-server.i386
    mysql-server.i386

    mysql-connector-odbc.i386
    mysql-devel



    설정 환경


    - localhost를 사용하지 않고 추가 host를 이용하고 기본 ROOT ( /usr/share/tomcat5/webapps/ROOT )를 변경하는 설정


    [ 설정 방법 ]


    1. /etc/tomcat5/web.xml


    아래 두 부분이 기본적으로 보안으로 인해 주석처리 되어 있는데 주석을 지워준다.

    <servlet>
    <servlet-name>invoker</servlet-name>
    <servlet-class>
    org.apache.catalina.servlets.InvokerServlet
    </servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>


    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>


    2. /etc/tomcat5/server.xml


    설정 화일 맨 끝부분 </Engine>이 닫히기 전에 아래 부분을 삽입한다.

    <Host name="hostname" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">

    <Alias>10.0.0.1</Alias>
    <Alias>test.domain.co.kr</Alias>
    </Host>


    3. /etc/tomcat5/Catalina/hostname/ROOT.xml


    기본적으로 설정 디렉토리 밑에 있는 Catalina 디렉토리를 이동하면 localhost 디렉토리가 있다.

    그러나 server.xml에서 설정한 <Host> name과 동일한 디렉토리를 만들고 거기에 ROOT.xml을 생성하여 아래 내용을 넣는다.
     

    <?xml version="1.0" encoding="UTF-8"?>

    <Context docBase="/App/wcms/dist/webapp"
    privileged="true" antiResourceLocking="false" antiJARLocking="false"
    reloadable="false" >
    </Context>


     4. /etc/profile


    패키지로 설치할 때 가장 고민하는 부분이죠... 패키지의 디렉토리 구조를 정확하게 파악해야 한다는...

    제가 몇 차례 시행 착오 끝에 얻어낸 설정 내용입니다.. ( CentOS 5.5에서 패키지로만 설치했을 때 설정내용입니다. )

    export CATALINA_HOME=/usr/share/tomcat5
    export JAVA_HOME="/usr/lib/jvm/java"
    export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/common/lib:/usr/share/java/tomcat5- servlet-2.4-api.jar:/usr/share/java/tomcat5-jsp-2.0-api.jar
    export PATH=$PATH:$CATALINA_HOME/bin:/usr/bin


    5. $ROOT/WEB-INF/lib/mysql-connector-java-5.1.15-bin.jar


    http://www.mysql.com/downloads/connector/j 에서 mysql-connect를 다운 받아... WEB-INF/lib 밑에 복사해 넣는다.



    [ 설정 관련된 정보 ]


    설정에 관해서 인터넷 검색을 통해서 찾아본 자료들이 많이 틀리더군요..

    나중에 안 것인데.... 버전 별로 설정들이 조금씩 다르더군요....


    최근 Tomcat 5.5를 기준으로 설정 관련해서..제가 정리한 자료들입니다.....
     

    1. servlet-api


    인터넷 검색을 통해서 보니.. servlet-api.jar 설정 관련된 부분이 나옵니다..

    그런데 yum을 설치한 시스템에서는


    tomcat5-servlet-2.4-api.jar

    servletapi5.jar


    있더군요..뭐가 틀린지 궁금했었는데...http://blog.naver.com/webpro000/60035380483 에 아래와 같은 내용이 있더군요..

     

    servlet-api.jar 와 servlet.jar 파일은 tomcat에서 servlet 엔진 역할을 하는 모듈로서
    servlet.jar 는 톰켓 4.x 이전 버젼,
    servlet-api.jar는 톰켓 5.x 버전 부터 사용된다.
    Tomcat 버젼별 지원하는 Servlet 버젼
    3.x 대.. Java Servlet 2.2 and JSP 1.1
    4.x 대.. Java Servlet 2.3 and JSP 1.2
    자세한 내용은 다음 사이트를 참고 하세요
    http://java.sun.com/products/servlet/download.html

    서블릿을 개발하려면 이런 설정이 필요하다.
    tomcat 4.x
    tomcat_4.x_home/common/lib에 있는 servlet.jar -> java_home/jre/lib/ext에 copy
    tomcat_5.x_home/common/lib에 있는 servlet-api.jar, jsp-api.jar -> java_home/jre/lib/ext에 copy

    5.0 부터는 servlet-api.jar 와 jsp-api.jar 로 나뉘어서 같은 디렉토리에 존재합니다.



    2. Context 설정

    톰캣 초기에는 server.xml에서 context를 설정했으나...
    지금은 조금은 바뀌어 context.xml 또는 $TOMCAT_CONFIG/Catalina/HOST/ROOT.xml 에서 설정한다.
    물론 server.xml / context.xml에서 설정해도 된다.


    3. Tomcat Admin 설정 ( /etc/tomcat5/tomcat-users.xml )

    tomcat5-admin-webapps 패키지를 설치하면 웹 상에서 톰캣의 설정을 할 수 있다. Host나 Context 추가도 웹으로도 가능하다.
    그러나 실제로 해 보니...부분적으로 에러 나는 부분이 있고, 설정을 한 후에는 설정 내용으 바로 반영이 안되는 단점이 있어 "다시 읽기"를 해야 한다.
    http://hostname/admin 로 접속하면 아이디와 암호를 물어보는데 관리자 권한이 있는 아이디를 입력해야 한다.

    예를 들어 tomcat이란 계정에 그 권한을 부여하려면 roles에 admin,manager를 추가시켜준다.

    <?xml version='1.0' encoding='utf-8'?>
    <tomcat-users>
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <user username="tomcat" password="tomcat" roles="tomca,admin,manager"/>
    <user username="both" password="tomcat" roles="tomcat,role1"/>
    <user username="role1" password="tomcat" roles="role1"/>
    </tomcat-users>


     

    4. 각종 다운로드 위치

    [Apache] http://httpd.apache.org/download.cgi
    [MySQL] http://dev.mysql.com/downloads
    [MySQL-Connector] http://www.mysql.com

    [PHP] http://www.php.net/

    [JDK ] http://java.sun.com/
    [Tomcat] http://jakarta.apache.org/
    [Tomcat-connector] http://jakarta.apache.org/site/downloads/downloads_tomcat.html

     

    5. Apache와 Tomcat을 같이 쓰는 이유


    Web 컨테이너는 웹 서버 기능이 있다. 톰캣도 마찬가지로 웹 서버기능이 있으나...아파치를 연동해서 쓴다.

    이는 정적인 페이지는 아파치가 빠르기 때문에, JSP나 Servlet 부분을 제외한 페이지는 아파치를 이용한다.


    6. WEB-INF/lib


    라이브러리를 쓰기 위해서는 환경변수 $CLASSPATH에 넣어야 하는데 WEB-INF/lib에 밑에 복사해 넣으면 동일한 효과가 있다.

    Tomcat을 전혀 모르는 상황에서 설치한 것이기 때문에 전체적인 이해가 부족하더라도 조금이나마 도움이 되시길 바랍니다.

    Posted by 카프러브

    작년에 맥북프로를 사면서...

    기존에 있는 PC와 맥북프로를 병행해서 사용했었다...

    그러다 보니... 맥북프로에서 윈도우는 거의 사용할 일이 없었다..


    그러나....컴 활용도가 분산되면서...데이타 관리가 번거로워져서

    결국 맥북프로에서 모든 업무를 집중화하기로 했다...


    그러다 보니...기존에 못 느꼈던.. 불편함이..크게 부각되었다...

    그중 하나가 VMware에서 한영 전환...


    인터넷을 찾다 보니...비교적 쉽운 해결방안이 있어 소개한다...


    나는 맥에서 VMware를 이용해 윈도우를 이용하기 때문에 그것만 소개하고

    그외 경우는 다음 URL를 참고하기 바랍니다.


    http://trip2me.tistory.com/61


    결론부터 말하면


    맥에서 한영 전환은 Command + Space

    VMWare 한영 전환는 우측 Command 입니다..

    또 하나..본 포스팅은 신형 맥북을 기준으로 합니다. 구형은 위 URL을 참조하세요


    먼저 VMware의 설정판을 선택합니다.




    거기서 Keyboard & Mouse를 선택한 다음
     



    히라가나를 선택해 줍니다.

    그 다음 본 포스팅에 첨부되어 있는 레지스트리값을 입력만 해 주시면 설정 끝..

    보다 고급 기능을 원하시는 분은 위 URL를 참고하세요...




    Posted by 카프러브

    안드로이드 에뮬레이터를 처음 실행시키면 초기화된 전화기가 나타난다.

    여기에 apk 파일을 설치하려면 adb라는 프로그램을 이용하면 된다.

    일단 준비 과정으로 설치하고자 하는 apk 파일을 adb가 들어있는 $android_Home\tools 밑에 복사해 넣는다.

    물론 $android_Home\tools가 환경변수 PATH에 설정되어 있으면 안해도 된다.

    ( apk화일이 들어있는 절대 경로를 넣기 귀찮아서 하는 작업이므로.. )

    1. 안드로이드 에뮬레이터를 실행시킨다.

    c:\> adb devices

    로 확인 가능하다.



    위 그림과 같이 디바이스 목록이 나와야 한다.

    2. 파일 설치는 도스창에서 adb install <패키지명>을 입력하면 된다.

    c:\> adb install <패키지명> ;; 설치

    c:\> adb install -r <패키지명> ;; 재설치

    c:\> adb uninstall <패키지명> ;; 삭제




    위 그림과 같이 Seccess 가 보이면 잘 설치가 된 것이다.

    Posted by 카프러브



    안드로이드 애뮬레이터를 실행시켰을 때 위와 같은 에러가 발생한다면

    AVD가 생셩된 디렉토리가 "한글"이 포함되어 있어서 그럴 가능성이 크다.

    보통 사용자명을 한글로 만들기 때문에 생기는데

    이를 해결하기 위해서는 AVD를 한글이 포함되지 않은 디렉토리로 옮기면 해결된다.

    도스창에서

    c:\$android_home\tools\android.bat move avd -n -p <새로운 디렉토리명>

    을 실행해 주면 됩니다.

    자세한 옵션은 http://www.monstercode.net/tc 을 참고하시기 바랍니다.

    Posted by 카프러브