반응형

개요

Web server 에서는 하나는 인터넷 통신용 나머지 하나는 DB server 통신용으로 두 개의 랜카드를 설치해준다. 

 

DB server 에서는 웹서버랑 통신용 또는 웹 메일 서버랑 통신용으로 해서 내부 통신만 되는 어댑터만 설치함

DBMS 설치를 위해 인터넷으로 구성시킨다.

 

APM : Apache, PHP, MySQL 의 약자이다. Apache 와 PHP 는 웹서버에 설치하고 MySQL 은 DB 서버에 설치해준다.

 

Web Server

web server 에 centos 8버전을 깔아주고 네트워크 설정에서 어댑터 1은 어댑터에 브리지

두번째 어댑터는 DB 서버랑 통신하는 용도로 내부만 통신하기 위해 호스트 전용 어댑터로 설정해준다.

 

#ip a      // ip 설정 확인

여기서 enp0s3 은 어댑터에 브리지로 설정한 네트워크 랜카드

enp0s8 은 DB랑 내부로 통신하기 위한 네트워크 랜카드이다.

 

#vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

고정 ip 로 설정해 준다.

 

#BOOTPROTO=dhcp    // #으로 주석처리 해준다

DEVICE=enp0s3

NAME=enp0s3

ONBOOT=yes     // 컴퓨터가 부팅되면서 실행

IPADDR=192.168.XXX.XXX

NETMASK=255.255.255.0

GATEWAY=192.168.XXX.1

DNS1=8.8.8.8

 

wq로 vi편집기 저장 후 종료

#ifdown enp0s3

#ifup enp0s3

#ip a

ip a로 확인해보면 ip가 변경되있다.

 

#netstat -nr       // Gateway 를 확인해준다.

 

Gateway와 DNS, www.google.com 에  핑을 날려 통신 테스트를 해준다. 

 

두번째 랜카드를 설정해준다.

두번째 랜카드는 Windows - cmd 에서 ipconfig /all 을 해주고

"이더넷 어댑터 VirtualBox Host-Only Network: " 이 부분을 보고 설정 해줘야 한다.

 

#vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

 

#BOOTPROTO=dhcp    // #으로 주석처리 해준다

DEVICE=enp0s8

NAME=enp0s8

ONBOOT=yes     // 컴퓨터가 부팅되면서 실행

IPADDR=192.168.XXX.XXX

NETMASK=255.255.255.0

 

wq로 vi편집기 저장 후 종료

#ifdown enp0s8

#ifup enp0s8

#ip a

ip a로 확인해보면 ip가 변경되있다.

 

Apache 설치

#yum list httpd                // 설치 가능한지 목록 확인

 

#yum -y install httpd        // 설치해준다.

 

#netstat -lnt                   // 80 포트가 안열려 있다.

 

#systemctl start httpd      // 실행 시켜준다.

 

#systemctl enable httpd   // 웹 서버이기 때문에 껐다 켜도 자동으로 실행되도록 해준다.

 

#systemctl enable httpd  // 실행이 정상적으로 되는지 확인

 

#firewall-cmd --permanent --zone=public --add-port=80/tcp     // 방화벽 허용

 

#firewall-cmd --reload

 

실제 windows 웹 브라우저에서 웹 서버 ip 주소를 치면 Apache 홈페이지가 뜬다

 

#cd /var/www/html

 

#vi index.html

여기에 html 소스를 작성해서 넣으면 웹 브라우저에서 Apache 홈페이지가 아닌 자신이 작성한 홈페이지가 나온다.

 

DNS Server 를 키고 ip 와  www.khsec.edu  를 쳤을 때 자신이 작성한 홈페이지가 나와야 한다.

 

 

 

DB Server

DB server 에 fedora32 를 깔아주고 네트워크 설정에서 NAT 로 설정해준다. DBMS를 깐 후 호스트 전용으로 바꿔준다.

 

 

MySQL 설치

 

아래 홈페이지를 들어가면 MySQL Repository 주소가 나온다.

Repository 주소는 설치파일이 어디서 다운로드 되는지 알려주는 파일이다.

우리는 Fedora32 에 MySQL 을 설치하기 때문에 Fedora32 버전을 다운로드 눌러준다.

로그인을 하면 Download Now 라는 버튼이 있는데 마우스 우클릭 링크주소 복사를 해준다.

 

https://dev.mysql.com/downloads/repo/yum/

 

#wget 복사한 주소

 

#rpm -Uvh 다운받은 rpm 파일

 

#yum repolist |grep mysql      // MySQL 이 설치가 가능한지 목록 확인

 

#yum repolist enable |grep mysql    // 활성화된 목록이 있는지 확인

 

#yum -y install mysql-server

 

#netstat -lnt          // :3306 포트가 있는지 확인 (설치만 하고 실행 안했으니 없음)

 

#systemctl start mysqld      // MySQL 실행

 

#systemctl enable mysqld   // 서버를 껐다 켰을 때 자동으로 실행

 

#systemctl status mysqld    // MySQL 서버가 실행 중 인지 확인

 

#netstat -lnt

 

#firewall-cmd --permanent --zone=public --add-port=3306/tcp      // 방화벽 열어주기

 

#firewall-cmd --reload

 

#mysql        // 권한이 없다고 나옴

 

#init 0        // 종료

 

 

IP 설정

네트워크 설정을 호스트 전용 어댑터로 바꾼다.

 

Windows - cmd 에서 ipconfig /all 을 해주고

"이더넷 어댑터 VirtualBox Host-Only Network: " 이 부분을 보고 설정 해줘야 한다.

 

#vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

 

#BOOTPROTO=dhcp       // #으로 주석처리 해준다

DEVICE=enp0s3

NAME=enp0s3

ONBOOT=yes           // 컴퓨터가 부팅되면서 실행

IPADDR=192.168.XXX.XXX

NETMASK=255.255.255.0

 

wq로 vi편집기 저장 후 종료

#ifdown enp0s3

#ifup enp0s3

#ip a

ip a로 확인해보면 ip가 변경되있다.

 

 

root 계정 PuTTY 로 접속 가능하게 하기

#vi /etc/ssh/sshd_config

 

아무 곳에 PermitRootLogin yes 를 추가해준다.

 

:wq로 vi편집기 저장 후 종료

 

#systemctl restart sshd        //sshd 데몬 재시작

 

이제 PuTTY 로 접속이 가능하다.

 

 

MySQL 실행

MySQL 설치할 때 프로그램이 패스워드를 자동으로 부여한다.

그 패스워드는 로그에 있다.

 

#cd /var/log

 

#grep "password" mysqld.log        // 난수로 된 비밀번호 나옴

 

#mysql -u root -p             // password 입력하라고 나오면 복사한 비밀번호 복붙

 

mysql> ALTER USER USER() IDENTIFIED BY '변경할 비밀번호';            // 비밀번호 변경 , OK 가 뜨면 변경 완료

반응형
반응형

상위 N 개의 레코드만 검색 (정렬과 함께 사용)

Top N : select 절에 사용

 

select top 5 필드리스트 from 테이블명 where 조건 order by 정렬기준

 

ex) emp 테이블에서 상위 5명만 검색하세요.

select top 5 * from emp

 

ex) emp 테이블에서 sal 순으로 내림차순 정렬 후 상위 5명의 데이터를 모두 검색하세요.

select top 5 * from emp order by sal desc

 

- 동순위 데이터가 있는 경우 (Top 5 한 경우 5위 6위 데이터가 동일한 경우)

top 5 with ties

 

 

 

검색 시 날짜 처리

날짜 처리 함수 getdate() : 현재 시스템의 날짜 시간을 얻어오는 함수

 

year() : datetime 타입의 필드를 대상으로 (예) 2020-07-22 를 정수로 연도만 반환해줌

          year(2020-07-22)  --> 2020

 

month() : datetime 타입의 필드를 대상으로 (예) 2020-07-22 를 정수로 월만 반환해줌

          year(2020-07-22)  --> 7

 

day() : datetime 타입의 필드를 대상으로 (예) 2020-07-22 를 정수로 일만 반환해줌

          year(2020-07-22)  --> 22

 

 

 

Between A and B 구문

where 절에 사용, A이상 B이하

select 필드리스트 from 테이블명 where 필드명 between A and B

 

ex) 월급이 200이상 300이하인 사람의 모든 값을 검색하세요.

select * rom emp where sal between 200 and 300

 

 

 

IN 연산자 (목록)

where 절에 사용

select 필드리스트 from 테이블명 where 필드명 in (값1, 값2, 값3....)

 

ex) 부서번호가 10, 20 인 사람의 모든 데이터를 검색

select * from emp where deptno in (10,20)

 

ex) 부서번호가 10도 아니고 20도 아닌 모든 데이터 검색

select * from emp where deptno not in (10,20)

 

 

 

문자열 비교

like 연산자

select 필드리스트 from 테이블명 where 필드명 like '문자+와일드카드 조합'

 

와일드 카드

_(underscore) : Any one character

 

% : Any zero or more

 

[ ] : [ ]안에 있는 글자들 중 한 문자

 

[^ ] : ^다음에 있는 글자를 제외한 다른 한 문자

 

 

예)

book_  : books / booka / booky  가능

            book / booked 불가능

 

book%  : book / books / booked 가능

             abook / adbooks / acbooked 불가능

 

%book%  : abook / abooks / book 가능

                brook / brooks 불가능

 

[st]ing  : sing / ting 가능

            ving / king / k / v / vin 불가능

 

[b-f]ing  : bing / cing / ding / eing / fing 가능

              Aing / b / f / ging 불가능

 

M[^c]%  : Mike / many / mickey 가능

              Mcdonald / mcatur / m / mc 불가능

 

 

ex) emp 테이블에서 이씨 사람의 ename 을 찾으세요

select * from emp where ename like '이%'

 

ex) emp 테이블에서 ename에 '성' 이 포함되 사람의 ename 을 찾으세요

select ename emp where ename like '%성%'

 

ex) emp 테이블에서 이름의 두번째 글자는 '성' 이고 그 뒤는 무엇이든 관계 없는 사원의 모든 정보를 찾으세요

select * from where ename like '_성%'

반응형

'<DB>' 카테고리의 다른 글

[SQL] Create 문, Insert 문  (0) 2020.07.29
[SQL] Select 문 (3)  (0) 2020.07.23
[SQL] Select 문 (1)  (0) 2020.07.21
DataBase 정의와 DBMS 정의  (0) 2020.07.20
반응형

DNS 서비스 설치

#yum list bind

 

#yum -y install bind         //DNS 서비스 설치

 

#systemctl start named     //DNS 서비스 실행

 

#systemctl status named   //DNS 서비스 동작 확인

 

#netstat -lntup |grep :53   //53번포트 열려 있는지 확인

 

 

DNS 서비스 설정

#netstat -lntu 을 해줬을 때 state 부분에 LISTEN 이라고 되어 있다.이 LISTEN 뜻은 프로그램이 실행을 해서 다른 사용자가 나한테 들어올 수 있도록 문을 열고 기다리는 상태를 뜻한다.

 

#netstat -lntup 을 해줬을 때 Local Adress 부분에 127.0.0.1 이거나 0.0.0.0 이다. 

 

0.0.0.0 는 모든 ip를 의미한다. 즉 모든 컴퓨터가 포트를 통해 들어올 수 있다는 뜻이다.

 

하지만 127.0.0.1 은 루프백 ip로 나 자신만 접속할 수 있는 상태이다.

 

DNS 서비스는 컴퓨터가 인터넷을 할 때 www.khsec.edu 로 통신을 할 수 없으니 이거에 해당하는 ip를 알려주는 역할이다. 그러므로 다른사람도 접속해야 하기 때문에 바꿔줘야한다.

 

#vi /etc/named.conf

 

:set nu 로 vi 편집기 행 번호를 보이게 한다.

 

11행에 listen-on prot 53 { 127.0.0.1; };  로 되어있는 것을 { any; }; 로 바꿔준다.

 

 

19행에 allow-query    { localhost; };      //누군가가 www.khsec.edu 를 물어보는데 localhost 에게만 허가해줬다는 뜻

 

{ localhost; }; 부분을 { any; }; 로 바꿔준다.

 

 

31행 recursion yes;  //보안상 중요한 옵션이다.

 

재귀쿼리라고 해서 "다른 dns 서버랑 통신을 맘대로 막 할거냐" 라고 물어보는 뜻이다.

 

보안상 recursion no; 로 바꿔준다.

 

 

도메인 주소 설정

 

52행에 zone "." IN { 이 있다. 

여기서 . 은 루트 디렉토리 dns 서버를 의미한다.

dns 는 항상 . 부터 시작해서 내려온다.

만약 www.google.com. 이면 . com google www 순으로 내려온다. 

원래 도메인 뒤에 . 이 있는데 생략해서 쓸 뿐이다.

실제로 접속이 된다.

예)   www.google.com. 

       www.naver.com.

 

사진출처 : 한국인터넷정보센터

 

57행부터 내용을 추가해준다.

 

57 zone "khsec.edu" IN {

58         type master;

59         file "khsec.edu.zone";

60         allow-update {none;};

61 };

 

wq 로 저장하고 종료한다.

#named-checkconf /etc/named.conf       //틀린 오류 찾아줌

아무것도 안뜬다면 오류가 없다는 뜻이다.

 

 

#cd /var/named/

#ls

 

khsec.edu.zone 이름의 파일을 여기서 만들어줘야 한다.

여기에는 named.empty 라는 샘플 파일이 있다.

이 파일을 복사해서 적어주면 된다.

 

#cp named.empty khsec.edu.zone

#vi khsec.edu.zone

 

:set nu 로 vi 행번호를 출력해준다.

 

2행에서 SOA 는 관리 권한의 시작을 의미한다. 보통 이 DNS를 누가 관리하는지 관리자, 도메인 이름 형태로 쓴다.

rname.invalid. 을 지우고 root. 으로 써준다.

 

8행의 NS 는 네임 서버이다.

9행의 루프백 ip를 자기 서버 주소를 적어준다.

9행 밑에 MX        10      mail.khsec.edu. 를 추가시켜준다.

MX는 메일교환기라는 뜻이다. 만약 MX가 없다면 이메일을 보낼 수 없다.

 

13행부터 내용을 추가해준다.

 

13 www     A       192.168.XXX.XXX

14 mail    A       192.168.XXX.XXX

15 ftp     A       192.168.XXX.XXX

16 webmail A       192.168.XXX.XXX

 

:wq 로 저장하고 나와준다.

 

#ls -al

만들어준 khsec.edu.zone 권한이 root root 이다.

dns는 프로그램 권한으로 동작을 해야하기 때문에 그룹 권환을 바꿔준다.

 

#chown :named khsec.edu.zone

 

#ls -al

root named로 바뀐것을 확인 해준다.

 

#named-checkzone khsec.edu khsec.edu.zone

오류를 확인해준다. OK 가 뜨면 정상이라는 뜻이다.

 

설정 파일을 바꿨기 때문에 서비스 재시작을 해줘야 한다.

#systemctl restart named

 

 

방화벽 정책 설정

#firewall-cmd --permanent --zone=public --add-port=53/tcp

#firewall-cmd --permanent --zone=public --add-port=53/udp

#firewall-cmd --reload

 

 

동작 테스트

Windows 에서 cmd 실행해준다.

nslookup 을 쳐준다.

server 본인dns서버ip

 

www.khsec.edu

ftp.khsec.edu

mail.khsec.edu

 

위에 내용을 입력하면 Adress에 zone 파일에 설정된 내용이 나온다.

반응형

+ Recent posts