1. Oracle Client 설치
dnf install -y https://download.oracle.com/otn_software/linux/instantclient/1925000/oracle-instantclient19.25-basic-19.25.0.0.0-1.x86_64.rpm
dnf install -y https://download.oracle.com/otn_software/linux/instantclient/1925000/oracle-instantclient19.25-devel-19.25.0.0.0-1.x86_64.rpm
dnf install -y https://download.oracle.com/otn_software/linux/instantclient/1925000/oracle-instantclient19.25-sqlplus-19.25.0.0.0-1.x86_64.rpm
2. Oracle 설정파일 생성
mkdir -p /usr/lib/oracle/network/admin/
echo 'NAMES.DIRECTORY_PATH= (TNSNAMES)' > /usr/lib/oracle/network/admin/sqlnet.ora
echo 'oracle = (DESCRIPTION = (ADDRESS = (PROTOCOL = tcp) (HOST = 192.168.10.11) (port = 1521)) (CONNECT_DATA = (SID = DB19)))' > /usr/lib/oracle/network/admin/tnsnames.ora
확인:
cat /usr/lib/oracle/network/admin/sqlnet.ora
cat /usr/lib/oracle/network/admin/tnsnames.ora
3. Oracle 접속 환경변수 설정
echo 'export TNS_ADMIN=/usr/lib/oracle/network/admin' >> /etc/profile
echo 'export LD_LIBRARY_PATH=/usr/lib/oracle/19.25/client64/lib' >> /etc/profile
echo 'export NLS_LANG=AMERICAN_AMERICA.AL32UTF8' >> /etc/profile
적용:
source /etc/profile
확인:
echo $TNS_ADMIN
echo $LD_LIBRARY_PATH
echo $NLS_LANG
정상 예:
/usr/lib/oracle/network/admin
/usr/lib/oracle/19.25/client64/lib
AMERICAN_AMERICA.AL32UTF8
4. Oracle 접속 테스트
sqlplus sb4/sb4@oracle
접속되면 성공.
종료:
exit
참고로 tnsping은 현재 설치 구성에서는 없었으니까 생략해도 돼.
Apache 설치
5. Apache 관련 패키지 설치
dnf install -y wget gcc gcc-c++ cmake apr apr-util zlib-devel expat-devel perl
6. Apache 다운로드
cd /usr/local
wget https://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz
7. 압축 해제
tar xvfz httpd-2.2.34.tar.gz
cd httpd-2.2.34
8. Apache 컴파일 및 설치
./configure --prefix=/app/apache --enable-rewrite --enable-so
make -j$(nproc)
make install
확인:
ls -l /app/apache/bin/apachectl
PHP 설치
9. PHP 관련 패키지 설치
cd /usr/local
dnf config-manager --set-enabled powertools
dnf install -y sqlite-devel libxml2* libpng-devel libjpeg-devel libnsl libnsl2-devel
10. PHP 다운로드
wget https://www.php.net/distributions/php-7.4.33.tar.gz
11. 압축 해제
tar xvfz php-7.4.33.tar.gz
cd /usr/local/php-7.4.33
12. PHP Configure
./configure --with-apxs2=/app/apache/bin/apxs \
--enable-sigchild \
--with-oci8=instantclient,/usr/lib/oracle/19.25/client64/lib
정상적으로 끝나면:
make -j$(nproc)
make install
13. php.ini 생성
cp php.ini-development /usr/local/lib/php.ini
확인:
ls -l /usr/local/lib/php.ini
Apache 설정
14. httpd.conf 수정
vi /app/apache/conf/httpd.conf
아래 내용 확인 또는 추가.
ServerName localhost
LoadModule php7_module modules/libphp7.so
AddType application/x-httpd-php .php .html .htm .inc
기존:
DirectoryIndex index.html
을:
DirectoryIndex index.html index.htm index.php
로 수정.
그리고:
<Directory "/app/apache/htdocs">
블록 안에 추가:
IndexOptions Charset=UTF-8
예:
<Directory "/app/apache/htdocs">
Options Indexes FollowSymLinks
IndexOptions Charset=UTF-8
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Apache에 Oracle 환경변수 적용
15. apachectl 수정
vi /app/apache/bin/apachectl
아래 추가:
# oracle setup
export TNS_ADMIN=/usr/lib/oracle/network/admin
export LD_LIBRARY_PATH=/usr/lib/oracle/19.25/client64/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
PHP 설정
16. php.ini 수정
vi /usr/local/lib/php.ini
아래 값으로 설정:
short_open_tag = On
default_charset = "UTF-8"
display_errors = On
include_path = ".:/usr/local/lib"
upload_tmp_dir = /tmp
error_reporting = E_ALL & ~E_NOTICE
PHP 모듈 확인
17. libphp7.so 확인
ls -l /app/apache/modules/libphp7.so
정상 예:
-rwxr-xr-x ... /app/apache/modules/libphp7.so
없다면 PHP를 다시 빌드:
cd /usr/local/php-7.4.33
make clean
./configure --with-apxs2=/app/apache/bin/apxs \
--enable-sigchild \
--with-oci8=instantclient,/usr/lib/oracle/19.25/client64/lib
make -j$(nproc)
make install
Oracle 연결 테스트 페이지
18. index.html 작성
이번에는 vi보다 아래 방식이 더 확실해.
cat > /app/apache/htdocs/index.html <<'EOF'
<?php
$server = "oracle";
$user = "sb4";
$passwd = "sb4";
$conn = @oci_connect($user, $passwd, $server) or die('Could not connect:');
echo "Oracle 19c \$conn : $conn<br>";
$st = oci_server_version($conn);
echo "$st<br><hr><br>";
?>
EOF
확인:
cat /app/apache/htdocs/index.html
Apache 문법 검사 및 실행
19. 설정 문법 확인
/app/apache/bin/apachectl configtest
정상:
Syntax OK
20. Apache 실행
/app/apache/bin/apachectl start
또는 이미 실행 중이면:
/app/apache/bin/apachectl restart
21. 프로세스 확인
ps -ef | grep httpd
22. 80 포트 확인
ss -lntp | grep :80
정상이면:
LISTEN ... *:80 ...
이 나옴.
방화벽 설정
23. 방화벽 상태 확인
firewall-cmd --state
running이면 HTTP 허용:
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
확인:
firewall-cmd --list-services
예:
cockpit dhcpv6-client http ssh
최종 테스트
24. 서버 내부에서 확인
curl http://192.168.10.145
정상이라면 PHP 코드가 그대로 나오면 안 되고 Oracle 결과가 나와야 함.
25. 브라우저에서 확인
http://192.168.10.145
정상 화면:
Oracle 19c $conn : Resource id #2
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
이게 나오면 최종 성공.
전체 구조
192.168.10.145
Linux
├─ Oracle Instant Client
├─ SQL*Plus
├─ Apache 2.2.34
├─ PHP 7.4.33
└─ OCI8
│
│ TCP 1521
▼
192.168.10.11
Oracle Database 19c
SID = DB19
계정 = sb4 / sb4