Practice (web이랑 db 연동 부분 잘못됨. 참고 하지 마세요. 아직 수정전 ***************)
<Linux vm settings>
# LocalRouter
Memory 1GB
Hard Disk 30GB
* partition: /boot 500, /swap 1024, / -
LAN 카드 3개 : Network Adapter NAT
ens32
- IP주소:192.168.11.254
- 서브넷 마스크: 255.255.255.0
- 디폴트 라우트: 192.168.11.1
- DNS:192.168.10.11 (혹은 8.8.8.8)
ens33
- IP주소: 192.168.12.1
- 서브넷 마스크: 255.255.255.0
ens34
- IP주소: 192.168.0.1
- 서브넷 마스크: 255.255.255.0
# Web Server
Memory 1GB
Hard Disk 30GB
* partition: /boot 500, /swap 1024, / -
LAN 카드 1개 : Network Adapter NAT
ens32
- IP주소:192.168.12.11
- 서브넷 마스크: 255.255.255.0
- 디폴트 라우트: 192.168.12.1
- DNS:192.168.10.11 (혹은 8.8.8.8)
# DNS Server
Memory 1GB
Hard Disk 30GB
* partition: /boot 500, /swap 1024, / -
LAN 카드 1개 : Network Adapter NAT
ens32
- IP주소:192.168.12.13
- 서브넷 마스크: 255.255.255.0
- 디폴트 라우트: 192.168.12.1
- DNS:192.168.10.11 (혹은 8.8.8.8)
# Oracle Server
Memory 2GB
Processors 2 (Number of cores per processor: 2)
Hard Disk 40GB
* partition: /boot 500, /swap 2048, / -
LAN 카드 1개 : Network Adapter NAT
ens32
- IP주소:192.168.0.11
- 서브넷 마스크: 255.255.255.0
- 디폴트 라우트: 192.168.0.1
- DNS:192.168.10.11 (혹은 8.8.8.8)
<VM ware 설치 후 공통으로 수행해야 하는 작업>
1) 방화벽 끄기
ntsysv > firewalld.service off
* ntsysv 설정사항은 다음 시작부터 적용되므로 reboot 해야 함.
2) chmod u+x /etc/rc.d/rc.local
/etc/rc.d/rc.local 파일은 소유자에게 실행 권한이 없으므로 chmod 명령어로 실행 권한을 부여해야 한다.
3) vi /etc/rc.d/rc.local
rdate -s time.bora.net 추가
4) vi /etc/selinux/config
SELINUX=disabled로 수정
5) FTP 설치
# yum install -y ftp
<Manual>
1. LocalRouter
- /etc/sysconfig/network-scripts/ifcfg-ens32 파일 설정 변경
- /etc/sysconfig/network-scripts/ifcfg-ens33 파일 설정 변경
- /etc/sysconfig/network-scripts/ifcfg-ens34 파일 설정 변경
**** ONBOOT=yes
- 패킷 포워딩 기능 활성화
way1) sysctl -w net.ipv4.ip_forward=1
way2 ) /etc/sysctl.conf /etc/sysctl.conf 파일에 ‘net.ipv4.ip_forward = 1’을 수정(추가)한다.
파일 추가 후 sysctl –p 명령을 실행한다.
- 정적 라우팅 (Windows CMD, # route print)
11.##에서 192.168.12.*로의 네트워크 접속 설정
route –p add 192.168.12.0 MASK 255.255.255.0 192.168.11.254
11.##에서 192.168.0.*로의 네트워크 접속 설정
route –p add 192.168.0.0 MASK 255.255.255.0 192.168.11.254
2. Web Server
- Apache 서버 설치
1) yum install -y gcc gcc-c++ cmake apr apr-util zlib-devel wget net-tools expat-devel
* 만약 yum 명령어가 실행되지 않는다면(cannot find a valid baseurl for repo: base/7/x86_64),
DNS 및 네트워크 설정 문제이므로, DNS 서버가 설정되어 있는지, 네트워크가 연결이 잘 되어 있는지 확인해야 한다.
2) httpd-2.2.34.tar.gz down (* path: /usr/local)
# cd /usr/local
# ftp 192.168.10.11
# cd /home2/data/down/apm
# get httpd-2.2.34.tar.gz.down
# tar xvfz httpd-2.2.34.tar.gz
5) # cd ./httpd-2.2.34
6) # ./configure --prefix=/app/apache --enable-so
7) # make
8) # make install
- 웹 서비스 관리 그룹 및 사용자 생성
1) groupadd -g 1800 web
2) useradd -g web webmaster
- 웹서버 홈 디렉터리(DocumentRoot) 생성
# mkdir -p /home/httpd/html
- 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">로 수정
# /app/apache/bin/httpd -t (httpd.conf 파일 구문 점검)
- 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 서버 구동
# /app/apache/bin/apachectl start
- PHP 패키지 설치
1) yum install -y sqlite-devel libxml2* libpng-devel, libjpeg-devel
2) php-7.4.27.tar.gz down
# cd /usr/local
# wget https://www.php.net/distributions/php-7.4.27.tar.gz
# tar xvfz php-7.4.27.tar.gz
# cd php-7.4.27
# ./configure --with-apxs2=/app/apache/bin/apxs --enable-sigchild
# make
# make install
# cp php.ini-development /usr/local/lib/php.ini
- httpd.conf 파일 수정
# vi /app/apache/conf/httpd.conf
esc + '/' + LoadModule
AddType application/x-httpd-php .php .html .htm .inc
- php.ini 파일 수정
# 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!
?>
- Apache 서버 재구동
# /app/apache/bin/apachectl stop
# /app/apache/bin/apachectl start
- rc.local 파일에 자동실행 설정
# vi /etc/rc.d/rc.local
/app/apache/bin/apachectl start 추가
mount --bind /home/httpd/ /home/webmaster/httpd/ 추가
3. DNS Server
- DNS 서버 설치
# yum install -y bind - Bind 서버 시작
# systemctl start named.service - resolv.conf 파일 수정
vi /etc/resolv.conf
nameserver 192.168.12.13로 변경
* nameserver [Local DNS 서버 IP]
resolv.conf 파일은 reboot시 설정값이 원래대로 돌아오므로
/etc/sysconfig/network-scripts/ifcfg-ens32 파일에서 DNS1의 설정값을 바꿔줘야 한다.
DNS1="192.168.12.13"로 변경 - named.conf 파일 수정
vi /etc/named.conf
------- 아래 내용만 적고 나머지 다 지우기 -------
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "st01.sec" {
type master;
file "st01.sec.zone";
}; - Zone 파일 생성 (st01.sec.zone)
vi /var/named/st01.sec.zone
------- 아래 내용만 적고 나머지 다 지우기 -------
$TTL 1D
@ IN SOA ns.st01.sec. root.st01.sec. (
1 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
; Name Server
IN NS ns.st01.sec.
; Host address
IN A 192.168.12.13
ns IN A 192.168.12.13
gw IN A 192.168.12.1
www IN A 192.168.12.11
; - name 서버 시작
# systemctl [start | stop | restart | status] named.service - DNS 서버 작동 여부 확인
# nslookup www.google.com
* nslookup [도메인]
4. Oracle Server
- Oracle 관리 계정/그룹/디렉터리 생성
# groupadd -g 1900 dba
# useradd -g dba -u 1900 ora19c
# passwd ora19c
# mkdir -p /app/ora19c/19c
* $ORACLE_HOME = /app/ora19c/19c
# mkdir -p /app/oraInventory
# chown -R ora19c.dba /app/ora19c
# chown -R ora19c.dba /app/oraInventory
# chgrp -R dba /app
# chmod -R 755 /app - hosts 파일 설정
# vi /etc/hosts
192.168.0.11 DB19.itclass.co.kr DB19 추가 - 추가 패키지 설치
# yum -y install ksh libaio-devel compat-libcap1 compat-libstdc++-33 glibc-devel libstdc++-devel gcc-c++
# yum install -y https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm - .bash_profile 파일 설정
*** ora19c 계정으로 수행
# su - ora19c
# vi .bash_profile
---- 아래 내용 추가 ----
# oracle setup
export ORACLE_OWNER=ora19c
export ORACLE_BASE=/app/ora19c
export ORACLE_HOME=/app/ora19c/19c
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_SID=DB19
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_HOSTNAME=DB19.itclass.co.kr
export TMP=/tmp
export TMPDIR=$TMP
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME:/usr/bin:.
ora19c 계정으로 재로그인 후 설정 확인
# env | grep ORACLE - Oracle 원본 파일 다운로드
*** 오라클 원본 파일은 $ORACLE_HOME(/app/ora19c/19c)에
소유자 ora19c 소유그룹 dba로 저장되어야 한다.
# cd /app/ora19c/19c
# ftp 192.168.10.11
# cd /home2/data/down/DB/DBMS/19c
# get LINUX.X64_193000_db_home.zip
# unzip LINUX.X64_193000_db_home.zip
# ./runInstaller (단, runInstaller은 x리눅스에서만 가능하다. putty에선 작동x)
- 리스너 구동
# lsnrctl start listener
*********************************************
ORACLE_OWNER : ora19c
ORACLE_HOME : /app/ora19c/19c
TNS_ADMIN : $ORACLE_HOME/network/admin
ORACLE_SID: DB19
- 인스턴스 클라이언트 설치 (root ? ora19c? help me emperor hyun)
# cd /usr/lib
# ftp 192.168.10.11
# cd /home2/data/down/DB/client
# get oracle-instantclient19.5-basic-19.5.0.0.0-1.x86_64.rpm
# get oracle-instantclient19.5-sqlplus-19.5.0.0.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient19.5-basic-19.5.0.0.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient19.5-sqlplus-19.5.0.0.0-1.x86_64.rpm
*** 리눅스 환경 그룹이 [최소 설치]인 경우 libaio 패키지 설치가 필요하다.
# yum install -y libaio - Oracle DB 자동 실행 설정하기
# vi /etc/oratab
DB19:/app/ora19c/19c:N을 DB19:/app/ora19c/19c:Y로 변경 - rc.local 파일에 자동실행 설정
su - ora19c -c /app/ora19c/19c/bin/"lsnrctl start"
su - ora19c -c /app/ora19c/19c/bin/dbstart - listener.ora 파일 확인 (자동 생성)
# vi /app/ora19c/19c/network/admin/listener.ora
------ 아래의 내용이 들어있음 -------
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DB19.itclass.co.kr)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = DB19)
(ORACLE_HOME = /app/ora19c/19c)
)
)
- sqlnet.ora 파일 확인 (자동 생성)
# vi /app/ora19c/19c/network/admin/sqlnet.ora
------ 아래의 내용이 들어있음 -------
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
- 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))
)
- Windows의 tnsnames.ora 파일 편집
경로: D:\app\ora19c\client\network\admin
dal =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.10.11)(port = 1521))
(CONNECT_DATA = (SID = DB19))
)
oracle =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = 192.168.0.11)(port = 1521))
(CONNECT_DATA = (SID = DB19))
) - 오라클 사용자 계정 생성
*** 계정 생성 전에 DB 구동부터 한다.
SQL> STARTUP
***php tablespace생성
# sqlplus / as sysdba
SQL> create tablespace php
datafile '/app/ora19c/oradata/DB19/php01.dbf' size 200M;
** php 계정 생성
create user php
identified by php
default tablespace php
quota unlimited on php;
*** 권한 부여
GRANT execute ON dbms_crypto TO resource;
GRANT connect, resource TO php;
- Windows와 Oracle 서버 연결 확인(CMD)
# ping 192.168.0.11 - Windows용 sqlplus를 이용하여 DB 접속(CMD)
# sqlplus php/php@oracle
5. Web Server와 Oracle DB 연동 (PHP와 DB 연동)
- Web 서버에 webmaster 계정으로 접속 후 홈 디렉터리 이동
# cd /home/webmaster/httpd/html - 실습에 필요한 html, php 파일 준비 (*** dal 서버에 있으므로 ftp로 get해야 한다.)
# ftp 192.168.10.11
ftp> cd html/20230407
ftp> get school.zip
# unzip school.zip
*** conn.php 파일에 접속하는 oracle server명, 계정명, 계정패스워드를 알맞게 설정해줘야 한다. - Oracle 서버에 ora19c 계정으로 접속 후 홈 디렉터리 이동
# cd /app/ora19c/19c - 실습에 필요한 sql 파일 준비 (*** dal 서버에 있으므로 ftp로 get 해야 한다.)
# ftp 192.168.10.11
ftp> cd /home2/data/class
ftp> get school.sql - sqlplus 접속 후 school.sql 실행
# sqlplus / as sysdba
SQL> @school.sql
(단, school.sql 파일이 저장되어 있는 경로에서 sqlplus에 접속해야 한다.)