OS/linux

Linux에 Oracle, PHP 및 Apache 설치

vinc.oh 2008. 5. 23. 10:45

글 : Robert Clevenger

PHP를 시작하여 Oracle Database를 사용할 준비가 되셨습니까? 본 문서에서는 Linux에 Oracle Database, Apache HTTPD Server 및 PHP를 Apache 모듈로 설치하는 데 필요한 여러 단계들에 대해 설명합니다. Oracle Database에 대해 인증된 Linux 버전을 확인하려면 OTN Linux 센터를 참조하십시오. 본 문서의 예제에서는 Red Hat Enterprise Linux AS(이전의 Red Hat Linux Advanced Server 2.1)가 사용됩니다.

소프트웨어 요구 사항:

소프트웨어 버전 URL
Oracle RDBMS 9.2 /software/products/oracle9i/index.html
Apache HTTPD Server 1.3.28 http://httpd.apache.org/download.cgi
PHP - PHP Hypertext Processor 4.3.2 http://www.php.net/downloads.php

Oracle 설치

여기에서는 몇 가지 설치 방식 중에서 원하는 방식을 선택할 수 있습니다. 사용자는 이 Linux 시스템에 데이타베이스를 로컬로 설치하거나 네트워크 상의 다른 시스템에 있는 Oracle 서버를 사용하도록 선택할 수 있습니다. 원격 데이타베이스를 사용할 경우에는 이 시스템에 Oracle Client만 설치하면 됩니다. 로컬 데이타베이스를 사용할 경우에는 전체 Oracle RDBMS Server를 설치해야 합니다. 새 디렉토리 ( /u01/app/oracle/product/9.2) 대신 자신의 오라클 사용자 디렉토리 (/home/oracle/Oracle92)에 소프트웨어를 설치할 경우에는 한 가지 주의해야 할 사항이 있습니다. Apache HTTPD 서버와 PHP에서는 "nobody" 사용자 계정이 사용되기 때문에 해당 오라클 사용자 디렉토리를 "nobody"사용자가 사용할 수 있도록 준비해야 합니다. 따라서 데이타베이스는 오라클 사용자 디렉토리에 설치하지 않는 것이 가장 좋습니다.

예제

# chmod 755 /home/oracle

Apache HTTP Server 설치

Oracle Database를 설치한 다음에는 Apache를 설치해야 합니다. PHP는 Apache에 설치되기 때문에 PHP를 설치하기 전에 Apache를 먼저 설치해야 합니다.

이후의 내용은 Apache 웹 사이트에서 다운로드한 tar.gz 파일에서 Apache를 설치하는 명령에 대한 설명입니다. "--enable-module=so" 구성 옵션은 반드시 포함시켜야 하는데, 이는 PHP가 "--enable-module=so" 를 통해 DSO(Dynamic Shared Object)로 컴파일되기 때문입니다. 또한 "make instalㅣ" 명령을 실행하는 동안 Apache 설치 위치를 지정하는 구성 명령인 "---prefix=" 행도 포함시켜야 합니다.

IGNU TAR에 대한 정보

UNIX 시스템의 TAR명령에 익숙한 사용자는 여기에서 tar 파일을 추출하기 위한 gunzip을 실행하지 않는 것을 의아하게 생각할 수도 있을 것입니다. 하지만 Linux에는 GNU 버전의 TAR이 포함되어 있고 새로운 'z' 플래그가 추가되어 있기 때문에, gunzip으로 압축된 tar 파일에 대한 압축 해제 기능 지원이 자동으로 포함됩니다.

참고:

  1. 기본 문서 루트는 /usr/local/apache/htdocs입니다.
  2. 이러한 작업들은 root 사용자 권한으로 실행하십시오. 최소한 "make install" 명령만이라도 root 사용자 권한으로 실행되어야 합니다.

# tar zxvf apache_1.3.28.tar.gz
# cd apache_1.3.28
# ./configure --prefix=/usr/local/apache \
--enable-module=so
# make
# make install
# /usr/local/apache/bin/apachectl start
이제 http://localhost URL을 웹 브라우저에서 열어서 시스템에서 Apache가 실행되고 있는지 확인해야 합니다.

참고: 방화벽이 있거나 특정 이유로 인해 localhost 이름이 해석되지 않는 경우 'localhost' 대신 시스템의 DNS 이름을 사용할 수도 있습니다.

이제 다음 명령을 사용하여 Apache HTTP Sever를 중지해야 합니다.


    # /usr/local/apache/bin/apachectl stop
PHP 설치

Apache가 설치되었으므로 이제 PHP를 설치할 수 있습니다. PHP 패키지를 압축 "php-4.3.2". 라는 디렉토리가 생성됩니다. 이 디렉토리로 이동합니다. 이제 소스에서 소프트웨어를 구축 및 설치하는 표준 UNIX/Linux 방식을 사용하여 구성, 작성 및 설치 작업을 수행합니다.

참고:

  1. ORACLE_HOME 환경 변수를 아직 설정하지 않은 경우에는 $ORACLE_HOME 을 Oracle Home 위치와 바꿉니다.
  2. apxs 관련 오류가 발생하여 apxs 도움말 화면이 표시되는 경우, Apache를 다시 컴파일하고 configure 명령에 --enable-module=so를 지정해야 합니다.
  3. 이러한 명령 또는 최소한 마지막 두 명령을 실행하려면 root 사용자로 변경해야 합니다.
# tar zxvf php-4.3.2.tar.gz
# cd php-4.3.2
# ./configure --with-oci8=$ORACLE_HOME \
--with-apxs=/usr/local/apache/bin/apxs \
--enable-sigchild
# make
# make install
# cp php.ini-dist /usr/local/lib/php.ini

또한 일반적으로 /usr/local/apache/conf 에 있는 httpd.conf 파일을 수정하여 다음 행을 추가해야 합니다.
#
# This will load the PHP module into Apache. Put this line with other LoadModule lines.
#

LoadModule php4_module libexec/libphp4.so


#
# This next section will add a handler for .php files, put it with other IfModule lines.
#
<IfModule mod_php4.c>
AddType application/x-httpd-php .php
</IfModule>
Oracle Database 시작

Oracle Database를 시작하려면 일반적으로 oracle. 과 같은 Oracle 사용자여야 합니다. "su - oracle". 명령을 사용하여 oracle 사용자로 변경합니다. 이렇게 하면 사용자 계정이 변경되고 이 사용자에 대한 환경도 갱신됩니다. Oracle 사용자로 변경한 다음에는 sqlplus를 실행하여 Oracle 인스턴스를 시작할 수 있습니다. 데이타베이스를 시작한 다음에는 네트워크 리스너를 시작해야 합니다. 그런 다음 마지막으로 이전 사용자 계정으로 다시 변경합니다.

참고: Oracle 사용자로 이미 로그온한 경우에는 'su' 명령을 사용하여 Oracle 사용자로 변경하거나 예제 마지막에서와 같이 'exit' 명령을 실행할 필요가 없습니다.

# su - oracle
# cd $ORACLE_HOME/bin
# sqlplus '/ as sysdba'

SQL> startup
 ORACLE instance started.
 Total System Global Area 235999352 bytes

Fixed Size 450680 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> exit


# lsnrctl start
 LSNRCTL for Linux: Version 9.2.0.1.0 - Production on 25-JUN-2003 21:50:37
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Starting /home/oracle/Oracle92//bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 9.2.0.1.0 - Production
 (snip)
 The command completed successfully


# exit
 
Apache HTTP Server 시작


Apache HTTP Server를 시작할 때는 필요한 오라클 환경 변수가 오라클에 맞게 올바르게 설정되어야 합니다. 이러한 변수는, 설치하는 동안 root.sh 스크립트를 실행할 때 지정된 몇몇 다른 위치 또는 /usr/local/bin 디렉토리에 설치된 oraenv 셸 스크립트와 coraenv 셸 스크립트가 설정한 변수와 동일합니다. 최소한ORACLE_HOMEORACLE_SID 가 정의되어 있어야 합니다. 어떠한 경우라 하더라도 Installation Guide for Oracle on Linux에서 권장하는 나머지 환경 변수를 설정하십시오.

작업을 간소화하기 위해 Apache 시작 스크립트를 만들 수도 있습니다. 여기에서도 start_apache라는 스크립트를 만들어 보았습니다.

start_apache

#!/bin/sh
ORACLE_HOME=/u01/app/oracle/product/9.2

ORACLE_SID=orcl
export ORACLE_HOME ORACLE_SID
echo "Oracle Home: $ORACLE_HOME"
echo "Oracle SID: $ORACLE_SID"
echo Starting Apache
./apachectl start


Oracle에서 Apache 및 PHP 테스트

Oracle에서 PHP를 테스트하는 방법은 간단합니다 /usr/local/apache/htdocs 위치의 htdocs 디렉토리에 PHP 파일을 두기만 하면 됩니다.

여기에는 두 개의 파일이 있습니다. 그 중 첫 번째 파일은 기본 PHP 설치를 테스트하는 데 사용됩니다. PHP가 설치된 경우에는 전체 PHP 구성 정보가 포함된 페이지가 표시됩니다. 두 번째 파일은 SCOTT 스키마의 EMP 테이블에 있는 ENAME 열 및 SAL 열의 일부를 표시합니다. 이 경우 SCOTT 스키마가 설치되어 있어야 하며, 그렇지 않을 경우 페이지를 수정해야 합니다.


phptest.php

<html>
<head>
<title>PHP Installation Test</title>
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>


oci8test.php

참고: Oracle Database가 로컬이 아닌 경우에는 다음과 같이 두 번째 행을 편집합니다(MyDatabaseTNSEntryName 을 서버의 TNS 항목과 바꿈)
$db_conn = ocilogon( "scott", "tiger", "MyDatabaseTNSEntryName" );

<?php

$db_conn = ocilogon( "scott", "tiger" );

$cmdstr = "select ename, sal from emp";

$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);

$nrows = ocifetchstatement($parsed, $results);

echo "<html><head><title>Oracle PHP Test</title></head><body>";
echo "<center><h2>Oracle PHP Test</h2><br>";
echo "<table border=1 cellspacing='0' width='50%'>\n\<tr>\n";
echo "<td><b>Name</b></td>\n<td><b>Salary</b></td>\n</tr>\n";

for ($i = 0; $i < $nrows; $i++ )
{
echo "<tr>\n";
echo "<td>" . $results["ENAME"][$i] . "</td>";
echo "<td>$ " . number_format($results["SAL"][$i], 2). "</td>";
echo "</tr>\n";

}

echo "<tr><td colspan='2'> Number of Rows: $nrows</td></tr></table>";
echo "<br><em>If you see data, then it works!</em><br></center></body></html>\n";


?>

결론

지금까지 Oracle Database, Apache HTTPD Server 및 PHP를 설치하고 구성하는 방법에 대해 살펴보았습니다. 이제 오라클 플랫폼에서 PHP 사용 방법을 배우거나 PHP 애플리케이션을 작성하실 수 있을 것입니다.

Robert Clevenger 는 Oracle Application Development Tools의 책임 제품 관리자입니다. Robert는 Windows 플랫폼에 대한 개발자들을 지원하기 위해 1997년 오라클에 입사하였습니다. 1999년 JDveloper 개발 팀에 합류한 Robert는 Oracle9i 의 Java 릴리스 제품을 개발하는 데 기여하였습니다. 첫 번째 Oracle9i 릴리스 이후에는 제품 관리 부서로 이동하여 개방형 소스 프로젝트를 중심으로 오라클 파트너와의 기술 협력에 주력하고 있습니다.