본문으로 바로가기

[AWS 실습] EC2, VPC를 이용하여 워드프레스 만들기

category AWS 2021. 1. 3. 03:56
반응형

(실습 진행은 프리 티어로 진행한다.)

저번 시간에 만든 MY-VPC를 이용하여 EC2 인스턴스를 2개 만든 후 각각 웹서버, 데이터베이스로 구축하고

워드프레스를 만들어본다.

 

퍼블릭 서브넷 안에 웹서버를 두고, 프라이빗 서브넷 안에 데이터베이스를 배치한다.

 

1) EC2 인스턴스 생성하기

서비스 메뉴 -> EC2 -> 왼쪽 메뉴의 인스턴스 클릭 -> 인스턴스 시작 클릭

 

1-1 웹서버 인스턴스 생성

웹서버용 AMI은 Amazon Linux 2를 선택한다.

 

인스턴스 유형은 t2.micro를 선택한다.

 

VPC는 default VPC가 아닌 저번 시간에 만든 MY-VPC를 이용한다.

MY-SUBNET01을 퍼블릭 서브넷으로 구성했으므로 MY-SUBNET01을 선택한다.

 

웹서버이므로 아파치 설치하는 명령을 사용자 데이터 안에 넣어준다.

#!/bin/bash

yum -y install httpd

systemctl start httpd && systemctl enable httpd

echo 'WEBSERVER' > /var/www/html/index.html

 

스토리지는 기본 설정 그대로 내버려 둔다.

 

Name 태그를 추가하고 인스턴스의 이름을 WEBSERVER로 해준다.

 

보안 그룹의 이름과 설명을 SG-WEB으로 해주고

조금의 보안 강화를 위해 SSH의 Source를 내 IP로 지정해준다.

규칙 추가 버튼을 클릭 후 HTTP를 선택하고 웹서버이므로 위치 무관을 선택한다.

 

시작하기 버튼을 누르면 키 페어 선택이 나오는데 저번 시간에 생성했었던 TEST-KEY를 사용한다.

 

 

1-2 데이터베이스 인스턴스 생성

 

데이터베이스의 AMI는 Ubuntu 16을 사용한다.

 

마찬가지로 t2.micro를 선택한다.

 

마찬가지로 MY-VPC를 선택하고 서브넷은 인터넷 게이트웨이가 연결되지 않은 MY-SUBNET02를 선택한다.

 

 

스토리지는 기본으로 두고 넘어간다.

 

데이터베이스의 이름은 DATABASE로 설정한다.

 

데이터베이스의 보안 그룹 이름은 SG-DB로 설정하고

보안 강화를 위해 SSH의 Source를 웹서버의 보안 그룹인 SG-WEB으로 설정한다.

SG-WEB이라는 보안 그룹에 소속되어 있는 인스턴스가 출발지가 되어 SG-DB라는 보안 그룹에 소속되어 있는 인스턴스로 오는 트래픽만 SSH 접속을 허용하겠다는 의미이다.

 

 

만들려는 데이터베이스는 MySQL이기 때문에 포트는 3306을 사용한다. MySQL 역시 SG-WEB 보안 그룹에 속한 인스턴스만 접속할 수 있게 한다.

 

 

키 페어는 물론 새로 생성하여 사용하면 보안을 강화되겠지만 여기서는 기존의 키 페어를 사용하도록 한다.

 

웹서버, 데이터베이스로 구성한 인스턴스 2개가 생성된 것을 볼 수 있다.

 

 

 

2) SSH 접속 및 구성하기

 

SSH 하기 위해 사용하는 프로그램은 mobaxterm을 사용하였다.

https://mobaxterm.mobatek.net/

 

 

현재 네트워크 구성은

인터넷 - 인터넷 게이트웨이 - 퍼블릭 서브넷(웹서버) - 프라이빗 서브넷(데이터베이스) 

이렇게 되어 있다.

 

데이터베이스로 지정한 인스턴스에 접속해서 DB를 설치해야 하는데 다이렉트로 DB 인스턴스에 접속할 수가 없는 상황이다.

그래서 퍼블릭 서브넷에 있는 웹서버를 통해서 DB로 접속해야 한다.

 

웹서버의 퍼블릭 ip를 입력하고 체크 부분을 체크 후 웹서버의 호스트네임을 입력한다.

그리고 Advanced SSH settings를 클릭 후 Use private key를 체크 후 TEST-KEY를 넣어준다.

 

 

데이터베이스에 접속하기 위해서 SFTP를 통해 TEST-KEY를 웹서버에 내려받는다.

 

TEST-KEY가 받아졌다.

하지만 권한이 너무 높아서 접속할 수가 없으므로 권한을 400으로 낮춰준다.

 

이제 ssh -i 명령어를 통해서 데이터베이스에 접속해본다.

 

Ubuntu의 호스트 네임은 ec2-user가 아닌 ubuntu이다. 그러므로

ssh -i TEST-KEY.pem ubuntu@DB의 프라이빗 ip를 입력하면 데이터베이스에 접속한 것을 볼 수 있다.

 

하지만 현재 데이터베이스는 프라이빗 서브넷에 있으므로 인터넷 연결이 안 되어있다.

그래서 DB를 설치할 수 없는 상태이다.

(우분투는 특이한 게 내가 설치하려고 하는 패키지의 저장소가 어디에 있는지 선언을 해야 한다. 그래서 우분투는 

apt-get update를 설치하기 전에 먼저 해줘야 한다.)

 

물론 인터넷 접속이 되게 할 수 있는 방법은 NAT gateway를 이용하면 된다.

 

 

3) NAT gateway 생성하기

 

NAT gateway를 생성하기 위해서는 탄력적 IP(EIP)가 하나 필요하다.

 

VPC -> 탄력적 IP 클릭 -> 탄력적 IP 주소 할당 클릭 -> 할당 버튼 클릭

 

이렇게 탄력적 ip가 할당되었다.

 

 

 

 

vpc 메뉴에서 NAT 게이트웨이를 선택 후 NAT 게이트웨이 생성을 클릭한다.

 

NAT gateway이름을 MY-NGW로 하고 퍼블릿 서브넷을 선택 후 할당받은 EIP를 선택한다.

NAT gateway 생성 버튼을 누른다.

(NAT gateway는 igw를 통해서 나가야 하기 때문에 프라이빗 서브넷이 아닌 퍼블릭 서브넷에 위치해야 한다.)

 

MY-NGW가 생성된 걸 볼 수 있다.

 

NAT gateway는 프라이빗 서브넷의 라우팅 테이블에 등록해야 한다.

 

 

라우팅 편집에 들어가서 0.0.0.0/0과 MY-NGW를 선택한다.

10.0.0.0/16이 아닌 모든 것들은 NAT gateway로 가도록 설정한다.

 

 

 

라우팅 테이블 편집 후 서브넷을 연결해줘야 한다.

서브넷은 프라이빗 서브넷을 연결한다.

 

데이터베이스의 인터넷 통신이 되는 것을 확인할 수 있다.

이제 DB를 설치하고 구성하도록 한다.

 

 

5) DATABASE 인스턴스 구성하기

//MariaDB 설치

sudo apt-get -y update

sudo apt-get -y install mariadb-server

sudo mysql_secure_installation (보안 구성)

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address               = 127.0.0.1 --> 이 부분을 #으로 주석처리

 

sudo systemctl restart mysql

sudo mysql -u root -p

CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wppass'; // wpuser라는 이름의 id와 wppass라는 pw를 정의

CREATE DATABASE IF NOT EXISTS wordpress; // wordpress라는 이름의 데이터베이스를 생성한다. 이 안에서 wpuser 사용자가 작업을 할 수 있다.

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%'; // wpuser에게 wordpress의 모든 권한을 부여한다.

quit

 

위의 명령을 DATABASE 인스턴스에 입력하면 된다.

 

 

6) WEBSERVER 인스턴스에 워드프레스 설치하기

// 워드프레스 설치

wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip

sudo yum -y install php php-mysql php-gd php-mbstring unzip

cd /var/www/html

sudo unzip /home/ec2-user/wordpress-4.8.2-ko_KR.zip

chown -R apache:apache wordpress

sudo systemctl restart httpd // restart 반드시 해줄 것

 

위의 명령을 WEBSERVER 인스턴스에 입력한다.

 

 

7) 설치된 워드프레스 설정하기

웹브라우저 주소창에다가 http://웹서버 퍼블릭 ip/wordpress를 입력해준다.

입력하면 다음과 같은 화면이 나올 것이다. Let's go! 클릭

 

DATABASE 인스턴스에서 구성한 데이터베이스 이름, 사용자명, 비밀번호를 입력하고

데이터베이스 호스트에는 DATABASE 인스턴스의 프라이빗 ip를 넣어주고 저장하기를 누른다.

(테이블 접두어는 그대로 둔다.)

 

저장하기를 누르면 다음과 같은 화면이 나온다.

설치 실행하기를 누른다.

 

사용자명은 한글 입력이 안되므로 한글 입력은 하지 않는다.

입력해야 하는 것들을 다 입력 후 워드프레스 설치하기 버튼을 누른다.

 

 

설치가 잘 되었다. 이제 워드프레스에 로그인을 한다.

 

로그인을 하면 이렇게 대시보드가 나온다.

공부만이살길을 클릭해본다.

 

이렇게 성공적으로 워드프레스가 설치된 것을 확인할 수 있다.

 

반응형