728x90

데이터베이스란


데이터베이스란

- 데이터를 체계적으로 저장/관리 하기 위한 서비스

- 관계형 데이터베이스를 많이 사용함 (2차원 테이블)

- NoSQL 방식의 데이터베이스도 많이 사용함 => 빅데이터 처리 등의 용도로 사용

- MariaDB는 관계형 데이터베이스 중 하나 (Mysql에서 파생)

 

 

데이터베이스 실습 개요


1. 패키지 설치 (mariadb-server)

2. 설정 파일 수정 (/etc/my.cnf)

3. 서비스 활성화 (mariadb)

4. 서비스 기본 보안 설정 (mysql_secure_installation)

 - 루트 사용자 암호 설정 및 불필요한 정보 제거

5. 방화벽 설정 (firewall-cmd --add-service=mysql)

 - 원격 접근이 필요할 경우만 설정

 

* xml 설정 파일: /usr/lib/firewalld/services/

xml 파일을 이용하여 설정 가능

 


DB 서버 이중화 구성 실습 개요


백업 및 복원

- 백업 및 복원의 필요성: 데이터베이스에 저장한 데이터를 안전하게 유지하기 위함

- 백업 특징

  물리적 백업 논리적 백업
속도 빠름 느림
제약 사항 같은 시스템(서비스) 관계 없음

 

이중화 구성

- 이중화 구성의 필요성: 서비스 제공을 원활하게 하기 위해 장애 발생에 대한 대비

- 이중화 구성의 특징: 마스터(쓰기 가능)와 슬레이브(읽기만 가능)

 

이중화 구성 방법

1. 기본 서비스가 구성된 두 대 이상의 서버 준비

2. 마스터 역할의 서버에서 설정

 1) 시스템을 구분할 ID 지정 (설정 파일)

 2) 사용자 설정 (생성/권한)

 3) 방화벽 설정 (mysql) > 슬레이브 접근을 위한 설정

 4) 데이터베이스 백업

3. 슬레이브 역할의 서버에서 설정

 1) 시스템을 구분할 ID 지정 (설정 파일)

 2) 마스터를 지정 및 슬레이브 상태로 설정 (mysql 실행 후)

 3) 마스터의 백업 데이터를 이용해 복원

 


 

실습 환경

 

  DB-Master DB-Slave
IPv4 10.0.2.10/24 10.0.2.20/24
GW 10.0.2.1
DNS 8.8.8.8
HOSTNAME master.goorm.com slave.goorm.com
OS CentOS 7

 


 

사전 작업-시스템 환경 설정


 

네트워크 설정

# 마스터
[root@localhost ~]# nmcli con add type ethernet ifname enp0s3 con-name nat ipv4.addresses 10.0.2.10/24 ipv4.gateway 10.0.2.1 ipv4.dns 8.8.8.8 ipv4.method manual
[root@localhost ~]# nmcli con up nat
[root@localhost ~]# hostnamectl set-hostname master.goorm.com
[root@localhost ~]# bash
[root@master ~]#

# 슬레이브
[root@localhost ~]# nmcli con add type ethernet ifname enp0s3 con-name nat ipv4.addresses 10.0.2.20/24 ipv4.gateway 10.0.2.1 ipv4.dns 8.8.8.8 ipv4.method manual
[root@localhost ~]# nmcli con up nat
[root@localhost ~]# hostnamectl set-hostname slave.goorm.com
[root@localhost ~]# bash
[root@slave ~]#

 

패키지 설치

yum install -y mariadb-server

 

서비스 활성화

systemctl enable --now mariadb

 

보안 구성

mysql_secure_installation

 

방화벽 구성

firewall-cmd --add-service=mysql
firewall-cmd --add-service=mysql --permanent

 

 


SQL 구문


1. SELECT
데이터 확인 (모든 유저)


2. DML
INSERT  - 데이터 삽입(행 추가)
UPDATE - 데이터 수정(값 변경)
DELETE - 데이터 삭제(행 삭제)


3. DDL
CREATE - 테이블(객체)를 생성
ALTER - 테이블의 구조 / 객체의 특성을 변경
DROP - 테이블(객체)를 삭제


4. DCL
GRANT - 권한 추가
REVOKE - 권한 제거


5. TCL
COMMIT - 변경 사항을 적용
ROLLBACK - 이전 상태로 되돌리기

 


MariaDB의 COMMIT 방식


- 기본적으로 설치 시 AUTO-COMMIT 방식으로 구성

- 설정 시 오류가 발생하면 복구하기 어려움

- 활성/비활성 설정 시에는 세션(일시적) 설정과 설정 파일(영구) 설정

 

세션 설정

# 현재 설정 값 확인
MariaDB [testdb]> show variables like 'autocommit';

# 현재 설정 값 변경(일시적)
MariaDB [testdb]> set autocommit = 1;

# (1/0 , true/false , on/off)
# 비활성화 시에는 COMMIT / ROLLBACK 구문 사용 가능

 

 

영구 설정

- /etc/my.cnf 파일 (/etc/my.cnf.d)

- autocommit=0

 

vi /etc/my.cnf
autocommit=0

# 설정 파일을 변경했으므로 서비스 재시작
systemctl restart mariadb

 

/etc/my.cnf 파일의 [mysqld] 영역에 autocommit 추가

 

 

 

 

 

728x90
728x90

iSCSI TARGET 설정


네트워크 설정 및 호스트 네임 설정

# 네트워크 설정
nmcli con add type ethernet con-name nat ifname enp0s3 ipv4.addresses 10.0.2.100/24 ipv4.gateway 10.0.2.1 ipv4.dns 8.8.8.8 ipv4.method manual
nmcli con up nat
nmcli con show
ifconfig

# 호스트 네임 설정
hostnamectl set-hostname target.goorm.com
bash
# @localhost에서 @target으로 호스트 네임 변경

ip


스토리지 구성: 하드 디스크 추가

 

 

디스크가 추가된 것을 확인할 수 있음


패키지 설치

yum install -y targetcli

디스크 파티셔닝

1GB 크기의 파티션 3개 생성

 


Backstore 생성

- block: 물리 장치(HDD, SSD, DVD 등) + 논리 장치(LVM, RAID)

- fileio: 현재 시스템에서 사용 중인 파일 시스템의 일부 공간 제공

- pscsi: 모든 유형의 로컬 SCSI 장치들을 모두 공유할 수 있게 지원되는 유형

- ramdisk: 시스템에 램디스크 장치를 만들어 저장

 

1. block 생성

/> backstores/block create dev=/dev/sdb1 name=part1
Created block storage object part1 using /dev/sdb1.


iSCSI 연결 설정

1. IQN 설정

타겟 이름 설정: 서비스 설정 시기 + 호스트 네임

IQN을 생성하면 TPG가 자동 생성되고 portals 항목에 0.0.0.0:3260 값이 기본으로 설정됨

/> iscsi/ create iqn.2022-05.com.goorm:target
Created target iqn.2022-05.com.goorm:target.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

 

 

2. ACL 설정

해당 시스템에서 사용하는 이름이 아닌 연결을 허용할 초기자의 IQN 지정

/> iscsi/iqn.2022-05.com.goorm:target/tpg1/acls create iqn.2022-05.com.goorm:initiator
Created Node ACL for iqn.2022-05.com.goorm:initiator

 

3. LUN 설정

LUN 생성 시에는 backstore에서 생성했던 저장 객체를 사용하여 맵핑

add_mapped_luns 옵션 생략 시

 1) 기본 값=true

 2) acls 자동 맵핑

 3) 읽기-쓰기 권한 부여 (쓰기 권한을 원하지 않는다면 false로 설정할 것)

/> iscsi/iqn.2022-05.com.goorm:target/tpg1/luns create /backstores/block/part1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2022-05.com.goorm:initiator

 

4. Portal 설정

IP 주소와 포트 번호 설정

* 설정 시 0.0.0.0:3260 설정이 존재한다면 새로운 설정 추가 불가

 

 

/> iscsi/iqn.2022-05.com.goorm:target/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260

/> iscsi/iqn.2022-05.com.goorm:target/tpg1/portals/ create 10.0.2.100 3260
Using default IP port 3260
Created network portal 10.0.2.100:3260.

 

 

5. 종료

/> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json

방화벽 설정 및 서비스 활성화

systemctl enable target

firewall-cmd --add-service=iscsi-target --permanent
firewall-cmd --add-service=iscsi-target

 


iSCSI INITIATOR 설정

 


네트워크 설정

# 네트워크 설정
nmcli con add type ethernet con-name nat ifname enp0s3 ipv4.addresses 10.0.2.200/24 ipv4.gateway 10.0.2.1 ipv4.dns 8.8.8.8 ipv4.method manual
nmcli con up nat
nmcli con show
ifconfig

# 호스트 네임 설정
hostnamectl set-hostname initiator.goorm.com
bash
# @localhost에서 @initiator로 호스트 네임 변경

도구 설치

대부분 기본적으로 설치되어 있음

yum install -y iscsi-initiator-utils

IQN 설정

타겟과 연결하기 위해서 타겟의 acls 항목에서 지정한 IQN과 같은 이름으로 IQN 설정 필요

ls -l /etc/iscsi/initiatorname.iscsi
-rw-r--r--. 1 root root 49 Sep 12  2021 /etc/iscsi/initiatorname.iscsi

cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:5d7f19268f2	# acls 항목에서 지정한 이름과 다름

vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2022-05.com.goorm:initiator	# 변경

cat /etc/iscsi/initiatorname.iscsi                
InitiatorName=iqn.2022-05.com.goorm:initiator

 


서비스 활성화

systemctl start iscsi
systemctl enable iscsi

연결

1. 검색 (Discovery)

# 검색-discovery
iscsiadm -m discovery -t st -p 10.0.2.100
10.0.2.100:3260,1 iqn.2022-05.com.goorm:target

* 오류 발생 시 네트워크 연결 혹은 방화벽 확인

 

 

2. 로그인

1) node: 동작 모드 - 연결 시도

2) 검색한 타겟의 iqn

3) -l: 로그인 옵션

iscsiadm -m node -T iqn.2022-05.com.goorm:target -l
Logging in to [iface: default, target: iqn.2022-05.com.goorm:target, portal: 10.0.2.100,3260] (multiple)
Login to [iface: default, target: iqn.2022-05.com.goorm:target, portal: 10.0.2.100,3260] successful.

* 인증 오류 발생 시 /etc/iscsi/initiatorname.iscsi 파일에 설정한 IQN 과 타겟에서 설정한 ACL 과 일치하는지 확인

 

 

3. 세션 확인

1) session: 연결한 대상의 정보 및 제공받는 장치에 대한 정보 확인

2) -P: 세션 확인 시 지정하는 등급

iscsiadm -m session -P 3

sdb 장치와 연결된 것을 확인할 수 있음

 

* 연결 오류 발생 시 *

1. 연결 삭제
2. iscsid 서비스 중지
=> 타겟과 이니시에이터의 연결을 완전히 제거 후 재연결 시도

 

연결 해제

iscsiadm -m node -T iqn.2022-05.com.goorm:target -u

 

검색 기록 제거

iscsiadm -m node -T iqn.2022-05.com.goorm:target -o delete

 

리로드(재검색)

iscsiadm -m node -T iqn.2022-05.com.goorm:target -R

장치 사용

# 디스크 파티셔닝 
fdisk /dev/sdb
partprobe /dev/sdb

# 파일 시스템 생성
mkfs -t xfs /dev/sdb1

# 마운트
vi /etc/fstab
/dev/sdb1	/mnt	xfs	_netdev	0	0

# 마운트 확인
lsblk

 

 

 

728x90
728x90

스토리지란


스토리지란

- 데이터를 저장하는 공간

 

스토리지 제공 방식

 

1. DAS: 케이블을 통한 직접 연결 (시스템과 스토리지)

 - Direct Attached Storage

 - 장점: 편리하고 일반적인 방식

 - 단점: 거리적인/공간적인 제약

 

2. NAS: 네트워크로 시스템과 스토리지 연결

 - Network Attached Storage

 - 사용 가능한 구성(파일 시스템)을 완료하고 네트워크로 제공

 - 장점: 거리적인 제약이 사라짐

 - 단점: 속도가 느림, 보안 취약

 

3. SAN: 네트워크로 시스템과 스토리지 연결

 - Storage Area Network

 - 스토리지 자체를 제공함 > 클라이언트가 직접 포맷 후 사용 

 - FC-SAN: 광섬유 장비들을 이용한 네트워크 구성 > 속도 향상, 비용 증가

 - IP-SAN: TCP 프로토콜을 이용한 SAN 연결 방식 제공 > 속도 향상, 비용 유지, 대표 서비스: iSCSI

 

스토리지 구성 방식 비교

  DAS NAS SAN
  FC-SAN IP-SAN(iSCSI)
구성 요소 서버 시스템 스토리지 파일서버 스토리지
+일반서버시스템
서버 시스템 스토리지
접속 장치 없음 이더넷 스위치 FC 스위치, HBA 이더넷 스위치
파일 시스템 클라이언트에서 직접 설정 파일 서버에서 공유 클라이언트에서 직접 설정
속도결정요소 채널 속도 채널 속도 + LAN 연결 속도 채널 속도
프로토콜 SCSI TCP/IP FCP TCP/IP
전송 단위 블록 파일 블록
데이터 공유 불가능 가능 불가능
확장성 나쁨 좋음

 

블록 스토리지

1) 파일 기반 스토리지: 사용자는 대상의 계층 구조 안에서 추가적인 파일 검색 및 전송 등의 작업을 할 수 있음

2) 블록 기반 스토리지: 제공 받은 블록 스토리지를 파티셔닝하고 파일 시스템을 생성하여 사용할 수 있음

 

스토리지별 용도

오브젝트 스토리지: 단순히 파일 자체를 제공하기 위한 용도

파일 스토리지: 스토리지를 제공하기 위한 용도, 사용 중인 스토리지에서 일부 영역 공유, 파일도 함께 공유

블록 스토리지: 단순히 스토리지만 통째로 제공

 

 

iSCSI 용어

[기본 용어]

1. 타겟(Target): 스토리지 장치를 제공하는 시스템, 서버 역할

2. 초기자(Initiator): 타겟에서 제공하는 스토리지 장치에 연결해서 블록 스토리지를 제공받음, 클라이언트 역할

3. IQN(iSCSI Qualified Name): 타겟과 초기자의 이름

 

[타겟]

1. TPG(Target Portal Group): 대상 포털 그룹, ACL/LUN/Portal 세 항목을 하나의 그룹으로 만든 연결에 대한 설정 집

2. ACL(Access Control List): 접근 제어 리스트, 타겟에 의해 제공되는 스토리지에 연결할 수 있는 초기자 지정

3. LUN(Logical Unit Number): 초기자에게 제공할 스토리지 장치에게 부여된 논리 장치 번호

4. Portal: 초기자가 타겟에 연결할 때 사용하는 IP 주소와 포트 번호

 

[초기자]

1. Discovery: 초기자에서 연결하려는 대상을 검색하는 단계

2. Login: Discovery에서 발견한 대상으로 연결하는 단계

 


iSCSI 구성 과정


기본 서비스 구성 과정

1. 패키지 설치 (도구/서비스)

2. 서비스 활성화

3. 서비스 설정 (설정 파일/명령어/파일/사용자/스토리지)

4. 서비스 활성화 혹은 재시작

5. 방화벽 설정

 

타켓 구성 순서

1. targetcli 패키지 설치 (iSCSI 타겟 설정 도구)

2. 서비스 설정

 1) 스토리지 준비 (v-box에서 추가 + LVM/파티션 구성)

 2) targetcli 도구 설정

3. target 서비스 활성화 (설정 값을 불러오는 작업)

4. 방화벽 설정 (Portal에서 설정하는 포트에 따라 추가) > 기본값: 3260/tcp

 

이니시에이터 구성 순서

1. 패키지 설치

2. 연결 설정

3. 사용

 


실습 환경 구성


1. 디스크 추가: VDI, 8GB, 동적 할당

 

2. 네트워크 설정

  TARGET INITIATOR
IPv4 10.0.2.100/24 10.0.2.200/24
GW 10.0.2.1 10.0.2.1
DNS 8.8.8.8 8.8.8.8
Hostname target.goorm.com initiator.goorm.com

 


실습 개요


TARGET 구성

1. target 시스템 네트워크 구성

2. 디스크 장치 추가 및 준비

 1) 8기가 장치의 경우 1기가 크기의 파티션 3개 생성

 2) 추가 실습: 2개로 볼륨 그룹 생성 > 1기가 크기의 논리볼륨 생성

3. targetcli 구성

 1) block: 이름-exam, 장치이름-논리볼륨이름

 2) IQN: iqn.2022-05.com.goorm:target > 타겟 이름

 3) ACL: iqn.2022-05.com.goorm:initiator > 이니시에이터 이름

 4) LUN: 기본 값으로 (lun0)

 5) PORTAL: IP-10.0.2.100 port-3260/tcp

4. 서비스/방화벽 설정

 

 

INITIATOR 구성

1. 이니시에이터 이름 수정

2. 검색/로그인

3. 파티셔닝 후 xfs로 파일 시스템 포맷

4. /etc/fstab에 등록 후 재부팅

 

추가 실습: 타켓에서 볼륨 그룹/논리 볼륨 확장 해보고 확장된 크기로 이니시에이터에서 제대로 인식되는지 확인

728x90
728x90

NFS란


NFS란

- Network File System

- 서버의 리소스를 클라이언트 상에서 마치 자신의 리소스를 사용하는 것처럼 사용할 수 있도록 제공

- 네트워크가 가능한 곳이면 리눅스, 유닉스 등의 운영 체제에서 NFS를 사용하여 파일 시스템 공유 가능

 


실습 환경


  Server 1 Client 2
IPv4 (enp0s3) 10.0.2.5 10.0.2.4
IPv4 (enp0s8) 192.168.56.101 192.168.56.102
OS CentOS 7 CentOS 7

 

 

실습 개요


NFS 서버의 공유 디렉토리에 클라이언트가 마운트하여 파일 생성 및 삭제가 가능한 것을 확인할 수 있음

 


NFS 서버 구성


 

NFS 패키지 설치 확인

rpm -qa nfs-utils

 

NFS 공유 디렉토리 설정 파일 구성

/etc/exports

vi /etc/exports
/share 10.0.2.*(rw,sync)

 

NFS 공유 디렉토리 생성

mkdir /share
chmod 777 /share
touch /share/file1

 

NFS 설정 적용

systemctl restart nfs-server
systemctl enable nfs-server

exportfs -v
# /share 10.0.2.*(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

 

방화벽 설정

firewall-cmd --permanent --add-service mountd
firewall-cmd --permanent --add-service rpc-bind
firewall-cmd --permanent --add-service nfs
firewall-cmd --reload

 


NFS 클라이언트 연결 1

- 수동 마운트 -


 

NFS 패키지 설치 확인

rpm -qa nfs-utils

 

 

마운트 포인터 생성

mkdir /nfs_share

 

마운트

Server 1의 /share 공유 디렉토리에 마운트

mount -t nfs 10.0.2.15:/share /nfs_share

 

마운트 확인

# Client 2에서 작업
# 마운트 포인트로 이동하여 file2 파일 생성
cd /nfs_share/
touch file2

# Server 1에서 file2 파일 확인
ls /share


AutoFS


 

AutoFS 파일 시스템과 맵(Map)

- 맵: autofs 모듈이 동작하는 데 필요한 정보가 저장된 설정 파일

 

 

Map의 세 가지 종류

1. master map

- AutoFS 파일 시스템에서 가장 기준이 되는 맵

- /etc/auto.master.d/ 에 이름 .autofs 파일에 설정 저장

- direct map이나 indirect map의 이름이나 포인터를 정의하는 역할 담당

 

2. direct map (직접 맵 마운트)

- /etc/auto. 이름으로 파일을 만들어 설정 저장

- 맵 내부의 마운트 포인터로 절대 경로 명 사용

 

3. indirect map (간접 맵 마운트)

- /etc/auto. 이름으로 파일을 만들어 설정 저장

- 맵 내부의 마운트 포인터로 상대 경로명 사용

 


NFS 클라이언트 연결 2

- 자동 마운트 -


직접 맵 마운트


autofs 패키지 설치

# 앞에서 작업했던 마운트 해제
umount /nfs_share

# autofs 패키지 설치
yum install -y autofs

 

direct.autofs 파일 생성

vi /etc/auto.master.d/direct.autofs

# /-: 직접 맵 마운트를 사용하겠다
/-      /etc/auto.direct

 

직접 맵 파일 생성

vi /etc/auto.direct
/nfs_share      -rw,sync        10.0.2.15:/share

 

autofs 설정 적용

systemctl start autofs.service
systemctl enable autofs.service

 

마운트된 것을 확인할 수 있음

 


NFS 클라이언트 연결 3

- 자동 마운트 -


간접 맵 마운트


실습 환경 정리

systemctl stop autofs

# autofs 서비스를 중지하면 자동으로 마운트 해제
umount /nfs_share

# autofs 관련 파일 삭제
rm -rf /etc/auto.direct
rm -rf /etc/auto.master.d/direct.autofs

 

설정 파일 생성

# /indirect 파일 생성
vi /etc/auto.master.d/indirect.autofs
/indirect	/etc/auto.indirect

# /etc/auto.indirect 파일 생성
vi /etc/auto.indirect
share	-rw,sync	10.0.2.15:/share

 

디렉토리 생성

mkdir /indirect
mkdir /indirect/share

 

설정 적용

systemctl start autofs
systemctl enable autofs

 

마운트 성공

 

Clinet 2의 /indirect/share 디렉토리에서 file3 파일 생성

 

Server 1의 /share 디렉토리에서 file3 파일 확인

728x90
728x90

PHP 설치


php7을 설치할 remi 저장소 사전 구축

yum -y install epel-release
wget https://rpms.remirepo.net/enterprise/remi-release-7.rpm --no-check-certificate
rpm -Uvh remi-release-7.rpm

 

php 설치 및 웹 페이지 생성

yum install httpd -y

# yum-config-manager 설치
yum install -y yum-utils

# php7.3 설치가능한 remi repo 활성화
yum-config-manager --enable remi-php73

# php 설치
yum install -y php

# php 웹 페이지 생성
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

 

서비스 시작 및 방화벽 설정

systemctl restart httpd
systemctl enable httpd

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

 

Win 7에서 php 웹 페이지 확인

192.168.56.101/phpinfo.php

 

 

 

 

MariaDB 구축


DB  설치

yum install mariadb-server mariadb -y

systemctl enable mariadb
systemctl restart mariadb

 

 

DB  보안 설정

mysql_secure_installation

Set root password? [Y/n] y
New password: qwer1234
Re-enter new password: qwer1234

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

 

DB와 php를 연동하는 패키지 설치

yum install php-mysql -y
systemctl restart httpd

 

DB 설정

# 패스워드: qwer1234
mysql -u root -p

MariaDB [(none)]> CREATE DATABASE wordpress;

MariaDB [(none)]> CREATE USER wordpress@localhost IDENTIFIED BY "qwer1234";

MariaDB [(none)]> GRANT ALL ON wordpress.* TO wordpress@localhost;

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> exit

 

 

WordPress 구축


워드프레스 설치

cd /tmp && wget http://wordpress.org/latest.tar.gz

tar -xvzf latest.tar.gz -C /var/www/html

chown -R apache /var/www/html/wordpress

 

홈페이지 접속

192.168.56.101/wordpress

 

 

 

 

워드프레스 설정

 

임의의 값 입력 후 워드프레스 설치

 

로그인

 

워드프레스 페이지 확인

192.168.56.101/wordpress/wp-admin

 

 

192.168.56.101/wordpress

 

728x90
728x90

실습 환경


 

NAME Server 1 Win7
OS CentOS 7 Windows 7
IPv4 10.0.2.15 10.0.2.5
CPU 1 1
RAM 2048 MB 1024 MB

 

 

FTP


 

Win7에서 FileZilla 클라이언트 설치 및 연결


1. Server 1에서 vsftp 서비스가 실행 중인지 확인

2. Win 7에서 FileZilla를 통해 Server 1에 FTP 연결

3. Win 7에서 ftp-test.txt 파일을 생성하고 Server 1의 /home/user/Desktop 경로로 파일 복사

4. Server 1에서 복사된 파일 확인

 

Server 1에서 vsftp 서비스가 실행 중

 

 

Server 1에서 Win 7으로부터 복사된 ftp-test.txt 파일 확인

 

 

SFTP


sftp 접속


1. sftp-server 패키지 설치 확인

2. root 사용자로 sftp 접속

3. sftp 연결 확인

 

 

PC에서 Virtualbox로 sftp 연결 시 sftp://[Server 1의 IP]

 

728x90
728x90

FTP


FTP란?


- 파일 전송 프로토콜

- 암호화하여 전송하지 않기 때문에 보안에 취약

- TCP 기반으로 클라이언트/서버 관계로 동작

- 기본 사용 포트: 20번(데이터 포트: 데이터 전송), 21번(제어 포트: 클라이언트 접속 및 제어)

 

 

FTP 동작 모드


액티브 모드 (서버 > 클라이언트)


- 연결 과정

1) 클라이언트에서 서버로 연결 요청

2) 서버에서 클라이언트로 연결 시도

- 클라이언트의 방화벽에 의해 연결이 거부되는 경우 발생

- 외부에서의 접속, NAT를 이용한 통신은 사용할 수 없음

 

 

패시브 모드 (클라이언트 > 서버)


- 액티브 모드를 보완한 것

- 연결 과정

1) 클라이언트에서 서버로 연결 시도

2) 서버에서 클라이언트로 서버가 사용할 데이터 포트 정보 전달

3) 클라이언트에 데이터 포트로 연결 시도

 

 

vsftp 구성 및 관리


구성


패키지 설치

# vsftpd라는 이름의 패키지 설치

yum install -y vsftpd

# 기본 공유 디렉토리 /var/ftp/pub

 

서비스 시작

systemctl start vsftpd
systemctl enable vsftpd

 

방화벽 설정

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

 

관리


설정 파일 

/etc/vsftpd/vsftpd.conf

 

- 설정 파일에서 익명 계정 업로드 허용 (29, 33 라인) -> 보안에 취약! > 실무에서는 허용 X

No 항목 설명
12 anonymous_enable 익명사용자 접속허용
16 local_enable 로컬 계정 접속 허용
19 write_enable 로컬 계정이 접속한후에 디렉터리 만들기, 삭제, 생성 등 쓰기가 가능하게 허용
29 anon_upload_enable 익명사용자 업로드 허용
33 anon_mkdir_write_enable 익명사용자 디렉터리; 생성 허가 여부
  dirlist_enable 접속한 디렉토리 파일리스트 보기 허용
  download_enable 다운로드 허용
  listen_port ftp 서비스 포트번호

 

 

사용 불가 계정 설정

/etc/vsftpd/ftpusers

 

 

소유자 소유그룹 변경

 

ftp 연결 확인


Client 2 서버에서 진행

 

ftp 클라이언트 설치

yum -y install ftp

 

 

ftp 접속

# Server 1(10.0.2.15)로 ftp 접속

ftp 10.0.2.15

 

user 계정으로 ftp 접속

 

익명 계정으로 ftp 접속

728x90
728x90

LAMP 구축


패키지 설치

- 아파치 웹 서버, MariaDB, PHP 설치


# 패키지 설치
# httpd, mariadb, mariadb-server php php-mysqlnd

yum -y install httpd mariadb-server mariadb php php-mysqlnd

 

설치가 성공적으로 완료됨

 

참고: 아파치 웹 서버 관련 주요 디렉토리(p.285)

경로 설명
/var/www 웹 페이지 콘텐츠 기본 디렉토리 위치
/etc/httpd/conf 웹 서버 주 설정 파일인 httpd.conf 파일 위치
/etc/httpd/conf.d 웹 서버의 추가 설정 파일 위치
/etc/httpd/conf.modules.d 웹 서버와 함께 설치된 모듈 설정 관련 파일 위치
/usr/share/httpd 테스트 페이지, 에러 페이지 등 기본 콘텐츠 위치
/usr/share/doc/httpd 웹 서버 관련 문서 파일 위치

 

 

서비스 시작 및 활성화


# httpd, mariadb 서비스 시작

systemctl start httpd
systemctl start mariadb

# 재부팅 후에도 서비스가 실행되도록 설정

systemctl enable httpd
systemctl enable mariadb

 

 

방화벽 설정


# http, https 방화벽 열기

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

 

사용자 페이지 생성 및 테스트


Apache


- 웹 브라저에서 IP 입력 후 아파치 기본 웹 페이지 확인

 

 

 

php


- php 웹 페이지 생성: /var/www/html 디렉토리에서 phpinfo.php 파일 생성

 

# /var/www/html 디렉토리로 이동
cd /var/www/html

# phpinfo.php 파일 생성
touch phpinfo.php
vi phpinfo.php

# 아래 소스 코드 입력
<?php phpinfo() ?>

 

시스템 정보 확인 코드

 

php 웹 페이지 확인

 



웹 사이트 구축-XE1


 

XE 다운로드 및 DB 구성


XE Core 다운로드


 

php-gd 설치


yum -y install php-gd.x86_64

 

httpd.conf 파일 설정


vi /etc/httpd/conf/httpd.conf

151   AllowOverride All       ->.htaccess

 

xe.zip 파일 압축 해제


# /var/www/html 디렉토리에서 압축 풀기

mv xe.zip /var/www/html
unzip xe.zip
chmod 707 xe
systemctl restart httpd

 

xe1에서 사용할 db 구축


# db 접속

mysql -u root -p

 

데이터베이스 계정 생성


# xeDB라는 데이터베이스에 슈퍼 권한을 가진 XE 계정 생성

GRANT ALL PRIVILEGES ON xeDB.* TO XE@localhost IDENTIFIED BY '1234';

 

생성한 계정으로 데이터베이스 로그인


mysql -u XE -p

 

 

데이터베이스 생성


CREATE DATABASE xeDB;

 

 

 

XE 설치


웹 브라우저에서 접속하여 XE 설치 진행

192.168.56.101/xe/index.php


 

한국어 선택

 

동의 후 다음

 

모두 설치 가능으로 되어있는지 확인

 

mysql 선택

 

앞에서 생성한 DB 정보 입력

 

서버 시간 설정

 

임의의 값 입력

 

XE가 설치 성공

192.168.56.101/xe 접속


Welcome Page 확인

 

 

728x90

+ Recent posts