본문 바로가기
인프라 7기/Network

Oracle,php 연동 Apache 웹 서버 구축

by 킹버거 2023. 5. 2.

 

안녕 여러분 ! ! ! 오늘도 행복한 하루를 보내고 계신가요??? 전 행복하지 않아요. 

귀여운 쿼카를 보면서 여러분이라도 행복하시길 바랍니다 ^^~

 

이번 포스팅은 제 스승님의 게시글을 거의 베끼다시피 했습니다. 왜냐하면 제가 너무 지쳤기 때문입니다. 시간이 난다면 저만의 게시글을 다시 업로드 할 테니 너그럽게 넘어가주세요 ^^.

스승님의 블로그: https://debuggingworld.tistory.com/63

 

Oracle, php 연동 Apache 웹 서버 구축

일반적인 웹 서비스는 DB 서버와 연동해서 동작한다. 이 포스트에서 Oracle Database와 연동 가능한 Apache 웹 서버를 구축해본다. 설정이 약간 다르다. 다운받는 소스 파일의 버전에 따라 명령어를 조

debuggingworld.tistory.com


일반적인 웹 서비스는 DB 서버와 연동해서 동작한다.

 

이 포스트에서 Oracle Database와 연동 가능한 Apache 웹 서버를 구축해본다. 설정이 약간 다르다.

다운받는 소스 파일의 버전에 따라 명령어를 조금씩 수정해야한다. (상식)

 

대략적인 순서는 다음과 같다.

 

1. 오라클 인스턴스 클라이언트 설치

2. Apache 설치

3. php 설치

 

1. 오라클 인스턴스 클라이언트 설치 (경로: /usr/local) 

- Oracle 홈페이지에서 oracle instant client basic, oracle instant client devel을 rpm으로 다운받는다.

 

# wget https://download.oracle.com/otn_software/linux/instantclient/1919000/oracle-instantclient19.19-basic-19.19.0.0.0-1.x86_64.rpm

# wget https://download.oracle.com/otn_software/linux/instantclient/1919000/oracle-instantclient19.19-devel-19.19.0.0.0-1.x86_64.rpm

 

- 다운 받은 rpm 파일을 설치한다. 

# rpm -Uvh oracle-instantclient19.19-basic-19.5.0.0.0-1.x86_64.rpm

# rpm -Uvh oracle-instantclient19.19-devel-19.5.0.0.0-1.x86_64.rpm

 

+)

만일 libaio가 필요하다는 메시지가 출력되면 libaio를 설치한 뒤 진행한다. (yum install -y libaio)

보통 최소 설치로 리눅스를 깔면 libaio가 깔려있지 않다.

 

- sqlnet.ora 파일, listener.ora 파일 확인 (자동 생성)

# cat /app/ora19c/19c/network/admin/sqlnet.ora

# cat /app/ora19c/19c/network/admin/listener.ora

 

- tnsnames.ora 파일 설정 

# vi /app/ora19c/19c/network/admin/tnsnames.ora
------ 아래의 내용으로 설정 -------
LISTENER_DB19 =
  (ADDRESS = (PROTOCOL = TCP)(HOST = DB19.itclass.co.kr)(PORT = 1521))

DB19 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DB19.itclass.co.kr)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DB19.itclass.co.kr)
    )
  )
oracle =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = tcp) (HOST = 192.168.0.11) (port = 1521))
      (CONNECT_DATA = (SID = DB19))
    )


2. 아파치 설치

- 필수 패키지를 설치한다.

# yum install -y gcc gcc-c++ cmake apr apr-util zlib-devel wget net-tools expat-devel perl

 

- PCRE (Perl Compatible Regular Expressions)를 설치한다.

# wget --no-check-certificate https://ftp.exim.org/pub/pcre/pcre-8.45.tar.gz

# tar xvfz pcre-8.45.tar.gz

# cd pcre-8.45/

# ./configure --prefix=/usr/local

# make

# make install

 

- 아파치 2.4 소스파일을 다운받는다.

pcre 디렉터리에서 나간 뒤 /usr/local 경로에서 해야함에 주의한다.

# cd /usr/local

# wget --no-check-certificate https://dlcdn.apache.org/httpd/httpd-2.4.57.tar.gz

# wget --no-check-certificate https://dlcdn.apache.org//apr/apr-1.6.5.tar.gz

# wget --no-check-certificate https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz

 

- 다운받은 파일의 압축을 푼다.

# tar xvfz apr-1.6.5.tar.gz

# tar xvfz apr-util-1.6.3.tar.gz

# tar xvfz httpd-2.4.57.tar.gz

 

- apr 파일을 apache 디렉터리 안으로 옮긴다.

# mv apr-1.6.5 ./httpd-2.4.57/srclib/apr

# mv apr-util-1.6.3 ./httpd-2.4.57/srclib/apr-util

 

- 아파치를 설치한다.

# cd httpd-2.4.57

# ./configure --prefix=/app/apache --enable-rewrite --enable-so --with-included-apr --

# with-pcre=/usr/local/bin/pcre-config

# make

# make install

 

- 웹 서비스 관리 그룹 및 사용자 생성

# groupadd -g 1800 web

# useradd -g web webmaster

 

- 웹서버 홈 디렉터리(DocumentRoot) 생성

# mkdir -p /home/httpd/html

 

- DocumentRoot 경로 디렉터리에 대해 web 그룹과 webmaster에게 권한부여
# chown -R webmaster.web /home/httpd

 

- webmaster 홈 디렉터리와 Apache 서버의 DocumentRoot 마운트
# mkdir /home/webmaster/httpd
# chown webmaster.web /home/webmaster/httpd
# mount --bind /home/httpd/ /home/webmaster/httpd/
*** Linux를 재부팅하면 mount가 해제되기 때문에 rc.local에 자동실행 설정해두는 것이 좋다.

 

- 아파치 설정 파일을 수정한다. 이 부분은 이전의 Apache 설치 과정과 같다.

- httpd.conf 파일 수정

# vi /app/apache/conf/httpd.conf

esc + '/' + ServerName 

ServerName localhost:80

esc + '/' + DocumentRoot 

DocumentRoot "/app/apache/htdocs" > DocumentRoot "/home/httpd/html"

esc + '/' + Directory

<Directory "/app/apache/htdocs">를  <Directory "/home/httpd/html">로 수정

 

- Apache 서버 구동
# /app/apache/bin/apachectl start 

 

- rc.local 파일에 자동실행 설정

# vi /etc/rc.d/rc.local

mount --bind /home/httpd/ /home/webmaster/httpd/ 추가

/app/apache/bin/apachectl start 추가

 


3. PHP 설치 

- 필수 패키지를 설치한다. 

# yum install -y sqlite-devel libxml2* libpng-devel, libjpeg-devel

 

- ph소스파일을 다운받고 압축을 푼다.

# wget https://www.php.net/distributions/php-7.4.30.tar.gz

# tar xvfz php-7.4.30.tar.gz

 

- php를 설치한다.

# cd php-7.4.30

# ./configure --with-apxs2=/app/apache/bin/apxs --enable-sigchild --with-oci8=instantclient,/usr/lib/oracle/19.19/client64/lib # make

# make install

# cp php.ini-development /usr/local/lib/php.ini

 

- Apache에 php 설정을 추가한다. (httpd.conf 파일 / apachectl파일 / php.ini/ 파일 수정)

# vi /app/apache/conf/httpd.conf 

esc + '/' + LoadModule

AddType application/x-httpd-php .php .html .htm .inc 

# vi /app/apache/bin/apachectl

# oracle setup
export TNS_ADMIN=/usr/lib/oracle/network/admin
export LD_LIBRARY_PATH=/usr/lib/oracle/19.5/client64/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

# vi /usr/local/lib/php.ini

esc + '/' + short_open_tag = 

short_open_tag = On

esc + '/' + default_charset =

default_charset = "UTF-8" 기본 설정(변경할 필요 없음)

esc + '/' + display_erros = 

display_erros = On 기본 설정(변경할 필요 없음) 

esc + '/' + include_path = 

include_path = ".:/usr/local/lib"

esc + '/' + upload_tmp_dir = 

upload_tmp_dir = /tmp

esc + '/' + error_reporting = 

error_reporting = E_ALL & ~E_NOTICE

 

- test page 생성

# vi /home/httpd/html/index.html

<?

       Welcome to st01.sec! 

?>

 

- 아파치 서버를 재실행한다.

# /app/apache/bin/apachectl stop

# /app/apache/bin/apachectl start 


너무 힘든  "Oracle,php 연동 Apache 웹 서버 구축" 여정이었다. 

이번 주 (05/03 - 05/7) 안에 위의 매뉴얼을 따라 실제로 구축해보는 것을 목표로 삼겠다.

너무 힘들다.............................. 너무 힘들어............. 4일 쉬고 오니까........ 숨을 쉬는 것조차 힘이 든다..................... 

 

'인프라 7기 > Network' 카테고리의 다른 글

리눅스 서버 보안 Firewall  (1) 2023.05.16
방화벽 실습  (0) 2023.05.02
패킷의 이해 -1 [Ethernet, IP]  (0) 2023.04.10
OSPF(Open Shortest Path First)  (0) 2023.03.30
TCP segment 구조  (0) 2023.03.30