본문 바로가기
Infra & Security Eng/Database Engineering

오라클 클라이언트(Client), 아파치(Apache), PHP, 삼바(Samba) 서버 설치, 설정, 연동까지 완벽 가이드

by 엔지니어 E 2026. 3. 27.
반응형

1차

2차 (실제 네트워크 재설정으로 인해 db 서버 다시 연결함)

오라클 클라이언트(Client) 설치


패키지 다운과 설치 
1) # dnf install -y wget unzip
Basic 패키지 (핵심 라이브러리)
# wget https://download.oracle.com/otn_software/linux/instantclient/1926000/oracle-instantclient19.26-basic-19.26.0.0.0-1.x86_64.rpm

Devel 패키지 (개발용 헤더 파일)
wget https://download.oracle.com/otn_software/linux/instantclient/1926000/oracle-instantclient19.26-devel-19.26.0.0.0-1.x86_64.rpm

SQL*Plus 패키지 (접속 도구)
wget https://download.oracle.com/otn_software/linux/instantclient/1926000/oracle-instantclient19.26-sqlplus-19.26.0.0.0-1.x86_64.rpm

SDK (PHP 연동 시 필수)
wget https://download.oracle.com/otn_software/linux/instantclient/1926000/instantclient-sdk-linux.x64-19.26.0.0.0dbru.zip

* 명령어로 파일들이 잘 설치되었는지 꼭 확인 한다
# ls -lh oracle-instantclient* instantclient-sdk*

2)
RPM 패키지 설치
# dnf install -y oracle-instantclient19.26-basic-19.26.0.0.0-1.x86_64.rpm
# dnf install -y oracle-instantclient19.26-devel-19.26.0.0.0-1.x86_64.rpm
# dnf install -y oracle-instantclient19.26-sqlplus-19.26.0.0.0-1.x86_64.rpm
압축 풀기
# unzip instantclient-sdk-linux.x64-19.26.0.0.0dbru.zip 
폴더 이동
# mv instantclient_19_26/sdk /usr/lib/oracle/19.26/client64/

* 잘 옮겨졌는지 확인 
# ls -d /usr/lib/oracle/19.26/client64/sdk
---> /usr/lib/oracle/19.26/client64/sdk 경로가 그대로 출력되면 성공

2. sqlnet.ora 파일과 tnsnames.ora 파일을 생성
1) 디렉토리 생성
# mkdir -p /usr/lib/oracle/network/admin/

2) sqlnet.ora 생성 (이름 해석 방식 설정)
# echo 'NAMES.DIRECTORY_PATH= (TNSNAMES)' > /usr/lib/oracle/network/admin/sqlnet.ora

# 이거 입력할 때 한줄로 반드시 입력 (챗 gpt에 명령어 한줄로 입력해달라고 할것)
echo "oracle=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.11)(PORT=1521))(CONNECT_DATA=(SID=DB119)))" > /usr/lib/oracle/network/admin/tnsnames.ora

* 명령어로 확인
# cat /usr/lib/oracle/network/admin/sqlnet.ora (sqlnet.ora 내용 확인)
# cat /usr/lib/oracle/network/admin/tnsnames.ora (tnsnames.ora 내용 확인)

3. 접속 환경 설정과 접속 테스트
환경 변수 파일에 주소록 경로와 언어 설정 추가
# echo 'export TNS_ADMIN=/usr/lib/oracle/network/admin' >> /etc/profile
# echo 'export NLS_LANG=AMERICAN_AMERICA.AL32UTF8' >> /etc/profile
추가한 설정을 시스템에 즉시 적용
# source /etc/profile

*** tnsnames.ora(주소록) 위치를 인식하고, 한글 등 문자 깨짐을 방지하기 위함

 

아파치(Apache)  설치


1. 사전 작업 패키지 설치
아파치는 C언어로 작성되어 있다. 따라서 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 번역(컴파일)할 도구들과 통신/이미지 처리에 필요한 라이브러리들이 미리 깔려 있어야 한
# dnf config-manager --set-enabled powertools

컴파일 도구(gcc, make) 및 각종 라이브러리 한꺼번에 설치
# dnf install -y apr apr-devel apr-util apr-util-devel autoconf bison bzip2 bzip2-devel cmake \
expat-devel freetype-devel gcc gcc-c++ gmp-devel libaio libcurl-devel libedit-devel \
libjpeg-devel libjpeg-turbo-devel libnsl libnsl2 libnsl2-devel libpng-devel libtool libxml2 \
libxml2-devel libxslt-devel libzip-devel make oniguruma-devel openssl-devel pcre-devel perl \
re2c sqlite sqlite-devel systemd-devel zlib-devel

2. Apache 2.4 의 소스파일을 /usr/local/에 다운받기
# cd /usr/local 로 이동 
학원 내부 서버에서 아파치 및 보조 라이브러리(APR) 다운로드
# wget http://192.168.10.11/data/down/apm/httpd-2.4.63.tar.gz
# wget http://192.168.10.11/data/down/apm/apr-1.6.5.tar.gz
# wget http://192.168.10.11/data/down/apm/apr-util-1.6.3.tar.gz
압축 해제 (묶인 파일들을 풀어줌)
# tar -xvf httpd-2.4.63.tar.gz
# tar -xvf apr-1.6.5.tar.gz
# tar -xvf apr-util-1.6.3.tar.gz
APR(Apache Portable Runtime): 아파치가 OS에 상관없이 잘 돌아가게 돕는 라이브러리를 아파치 소스 폴더 안으로 이동
# mv apr-1.6.5 httpd-2.4.63/srclib/apr
# mv apr-util-1.6.3 httpd-2.4.63/srclib/apr-util


3. 환경 설정 및 컴파일 설치 (핵심)
# cd httpd-2.4.63
# ./configure --prefix=/app/apache --enable-rewrite --enable-so --with-included-apr
# make -j$(nproc)
# make install

참고ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
# --prefix: 설치될 경로 지정 (/app/apache)
# --enable-rewrite: URL 주소를 깔끔하게 바꿔주는 기능 활성화
# --enable-so: 동적 모듈 로딩 가능하게 설정 (나중에 PHP 연동 시 필수)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

* 명령어로 확인 
# ls -l /app/apache/bin/httpd (설치 경로 및 파일 확인)
# /app/apache/bin/httpd -v (아파치 버전 및 컴파일 옵션 확인) - Server version: Apache/2.4.63이라고 출력
# /app/apache/bin/apachectl start (아파치 서비스 실행)
# ps -ef | grep httpd (프로세스 실행 여부 확인 (매우 중요)) - root와 daemon 사용자로 실행된 httpd 프로세스들이 여러 줄 나오면 성공

 

PHP 설치

아파치(웹 서버)**와 **오라클(DB)**을 서로 연결할 수 있도록 **다리(OCI8)**를 놓는 과정이 포함

1. PIE(Position Independent Executable) 형식으로 빌드를 위해 환경변수를 설정
실행 파일이 메모리의 어느 주소에 올라가더라도 상관없이 실행 가능하게 만드는 기술

export 명령으로 빌드 환경 변수 설정
# export CFLAGS="-fPIC -fPIE"
# export LDFLAGS="-pie"

2. PHP 8.4 기본 설치
# cd /usr/local 로 이동
PHP 소스 다운로드 및 압축 해제
# wget https://www.php.net/distributions/php-8.4.4.tar.gz
# tar -xvzf php-8.4.4.tar.gz
# cd php-8.4.4

환경 설정 (아파치 경로 지정 필수)
# ./configure --with-apxs2=/app/apache/bin/apxs --enable-mbstring --with-pear

컴파일 및 설치
# make -j$(nproc)
# make install

설정 파일 복사
# cp php.ini-development /usr/local/lib/php.ini

* 명령어로 확인 
# /usr/local/bin/php -v - PHP 8.4.4 (cli) ... 라고 출력

3. OCI8 확장 모듈 설치 (오라클 연동의 핵심)
PHP 8 버전부터는 오라클 연결용 라이브러리(oci8)를 별도로 빌드해서 붙여줘야 한다. 이 과정이 없으면 PHP에서 오라클 데이터를 불러올 수 없다

오라클 라이브러리 경로 인식
# export LD_LIBRARY_PATH=/usr/lib/oracle/19.26/client64/lib
# export ORACLE_HOME=/usr/lib/oracle/19.26/client64
# export PATH=$ORACLE_HOME/bin:$PATH

오라클 라이브러리 경로 OCI8 소스 다운로드 및 압축 해제
# wget https://pecl.php.net/get/oci8-3.4.0.tgz
# tar -xvzf oci8-3.4.0.tgz
# cd oci8-3.4.0

PHP 모듈 빌드 준비 (phpize)
# phpize - PHP 소스 코드가 아닌 외부 확장 모듈(OCI8 등)을 현재 설치된 PHP 환경에 맞춰 컴파일할 수 있게 준비해 주는 도구

오라클 경로를 포함하여 설정 및 설치
# ./configure --with-oci8=shared,instantclient,$ORACLE_HOME/lib - 오라클 클라이언트를 동적 라이브러리(Shared) 방식으로 연결하겠다는 의미
# make -j$(nproc)
# make install

 

Apache와 PHP 설정 

1. 스크립트 파일과 환경 설정 파일을 설정
# vi /app/apache/conf/httpd.conf

ServerName 설정
ServerName 을localhost 로 수정


PHP 모듈 빌드 준비 (phpize)httpd.conf 내 모듈 설정 (LoadModule)
LoadModule php_module modules/libphp.so 를 / 으로 찾고, 주석처리 되어있다면 주석을 제거 한다 

httpd.conf 내 파일 형식 설정 (AddType)
아파치가 어떤 확장자를 PHP로 처리할지 정하는 설정임. 이 내용은 파일 중간쯤 AddType이 모여 있는 곳에 직접 타이핑해서 추가하면 됨

AddType application/x-httpd-php .php .php3 .php4 .php5 .html .htm .inc
* 아파치가 어떤 확장자이 설정 덕분에 .php 파일뿐만 아니라 교안에 적힌 .html, .htm 파일 안에서도 PHP 코드가 작동하게 된다. PHP로 처리할지 정하는 설정이다. 이 내용은 파일 중간쯤 AddType이 모여 있는 곳에 직접 타이핑해서 추가하면 된다

Index 옵션 추가

/ 검색어로 DirectoryIndex를 찾고, 기존에 DirectoryIndex index.html 만 있던 내용에서 index.htm과 index.php를 추가한다

2. 아파치 실행 스크립트(apachectl) 수정
아파치가 실행될 때 달서버의 오라클 라이브러리를 항상 들고 있게 만든다 
# vi /app/apache/bin/apachectl
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
export LD_LIBRARY_PATH=/usr/lib/oracle/19.26/client64/lib
export ORACLE_HOME=/usr/lib/oracle/19.26/client64
export TNS_ADMIN=/usr/lib/oracle/network/admin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export PATH=$ORACLE_HOME/bin:$PATH
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
* 위의 5개 명령어를 # !/bin/sh 바로 아랫줄에 넣는다 

3. PHP 설정 (php.ini) 수정
오라클 연동 모듈(oci8.so)을 활성화하고 세부 옵션을 잡는다

# vi /usr/local/lib/php.ini
아래 내용을 /검색어로 검색해서 주석처리 되어있으면 주석풀어준다!
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
short_open_tag = On
include_path = ".:/usr/local/lib"
upload_tmp_dir = /tmp
extension=oci8.so
error_reporting = E_ALL & ~E_NOTICE
default_charset = "UTF-8" 
display_errors = On
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
* 맨 마지막에 해당 내용을 insert 한다 (파일 맨 끝으로 이동 Shift+g)

4. test page를 생성하고 아파치서버를 실행

# vi /app/apache/htdocs/index.html
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
<?php
$conn = oci_connect("st15", "st15", "192.168.10.11/db19");

if (!$conn) {
    $e = oci_error();
    echo "연결 실패: " . $e['message'];
} else {
    echo "달서버(dal) 연결 성공! <br>";
    $st = oci_server_version($conn);
    echo "오라클 버전: " . $st . "<br><hr>";
    oci_close($conn);
}

phpinfo();
?>
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
* 해당 내용을 insert 한다 


# /app/apache/bin/apachectl stop
# /app/apache/bin/apachectl start

* 웹 페이지 안되면 chmod -R 755 /app/apache/htdocs/ 권한 부여 확인 하기

* chmod -R 755 /usr/lib/oracle/network/admin - 권한 부여 확인 

 

삼바(Samba) 서버 설치

삼바(Samba) 서버는 리눅스에 있는 파일을 윈도우에서 **'내 컴퓨터의 폴더'**처럼 바로 열어보고 수정할 수 있게 해주는 도구 지금까지 vi 편집기로 검은 화면에서 코드를 치느라 오타도 나고 복사 붙여넣기도 힘들어서 불편 했을 수 있지만 삼바를 설치하면 윈도우 메모장이나 VS Code로 리눅스 파일을 직접 수정하고 저장할 수 있어 게시글 관리나 코드 수정이 훨씬 편해진다

삼바 설치 및 계정 생성 
# dnf install -y samba
# smbpasswd -a root - 리눅스 계정(root)과는 별개로 삼바 전용 비밀번호를 만들어야 윈도우에서 접속 가능

설정 파일 수정(smb.conf)
# vi /etc/samba/smb.conf 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
[web_root]
   comment = Apache Web Root
   path = /app/apache/htdocs
   public = no
   writable = yes
   browseable = yes
   valid users = root
   create mask = 0777
   directory mask = 0777
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
shift + g 키로 내용 맨 아래로 이동해서 해당 내용을 insert 한다 

권한 및 보안 설정 (가장 중요)
# chmod -R 777 /app/apache/htdocs - 폴더 권한을 '누구나 읽고 쓰기' 가능하게 변경

방화벽 열기
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload

SELinux 즉시 끄기
# setenforce 0 

삼바 서비스 시작
# systemctl start smb nmb
# systemctl enable smb nmb



명령어로 확인하기 (윈도우)
윈도우 로고키+R 
입력창에 \\192.168.10.174 치고 엔터
아이디, 비밀번호 입력 (삼바서버 만들때 생성한 비밀번호 입력) root / 3으로 시작함
web_root 폴더가 보이면 성공