EC2 동적 사이트 구축
EC2 동적 사이트 구축
- 이번 장에서는 EC2와 WordPress, RDS를 활용해 동적 사이트를 구축해보겠습니다.
이 장에서는 RDS 복제본 사용시 과금이 청구될 수 있습니다.
이를 원치 않는 분들은, RDS 설정 시, Multi-AZ 설정을 하지 않고, 1개의 Master RDS만 생성 후 진행하세요.
EC2 동적 사이트 구축
- VPC
VPC 이름 IPv4 CIDR VPC-WordPress 10.0.0.0/16
- Subnet
Subnet 이름 VPC AZ IPv4 CIDR WordPress-Public-Subnet VPC-WordPress ap-northeast-a 10.0.1.0/24 WordPress-Public-Subnet2 VPC-WordPress ap-northeast-c 10.0.2.0/24 RDS-Private-Subnet VPC-WordPress ap-northeast-a 10.0.11.0/24 RDS-Private-Subnet2 VPC-WordPress ap-northeast-c 10.0.12.0/24
- Routing Table
Routing Table 이름 VPC Subnet Public-rt VPC-WordPress WordPress-Public-Subnet, WordPress-Public-Subnet2 Private-rt VPC-WordPress RDS-Private-Subnet, RDS-Private-Subnet2
- 보안 그룹
보안 그룹 이름 VPC 인 바운드 규칙 아웃 바운드 규칙 WordPress-sg VPC-WordPress SSH : 22/TCP : 0.0.0.0/24, HTTP : 80/TCP : 0.0.0.0/24 모든 트래픽 : 0.0.0.0/0 RDS-sg VPC-WordPress WordPress-sg, 3306/TCP : WordPress-sg 모든 트래픽 : 0.0.0.0/0
- 먼저 위의 아키텍처와 표와 같이 VPC와 서브넷을 생성해주세요.
- 인터넷 게이트 생성 후, VPC에 연결하세요.
- 모든 라우팅 테이블의 게이트웨이는 인터넷 게이트웨이로 지정해주세요.
- VPC 사용자 정의 VPC 생성
EC2를 활용한 동적 사이트 구축
- 기본적인 설정을 끝마치셨다면, 이제 동적 사이트 아래의 순서에 맞춰 구현해보겠습니다.
1. RDS 생성
2. 인스턴스 생성
3. ELB 생성
1. RDS 생성
- 먼저 RDS 서브넷의 생성을 위해, RDS > 서브넷 그룹 > DB 서브넷 그룹을 위와 동일하게 생성합니다.
- 아래의 형식에 맞춰 RDS를 생성합니다.
- RDS 설치 참고
- 기본설정
설정 항목 값 License Model genral-publicl-license DB Engine Version 5.7.28 DB Instance Class db.t2.micro Multi-AZ Deployment General Purpose ( SSD ) Allocated Storage 20 GB DB 인스턴스 식별자 WordPressDB 마스터 사용자 ID, PW root/qwer1234
- 네트워크 설정
설정항목 값 VPC VPC-WordPress Subnet Group rds-private Publicly Accessible no AZ ap-northeast-2a VPC Security Groups RDS-sg
- 백업 설정
설정항목 값 백업 보존 기간 1일 백업 기간 기본 설정 없음
- 유지 관리설정
설정항목 값 마이너 버전 자동 업그레이드 사용 유지 관리 기간 기본 설정 없음 삭제 방지 삭제 방지 활성화 X
- 개인 설정 및 이 이외 값을 기본 값을 유지합니다.
2. 인스턴스 생성
- 다음의 값으로 인스턴스를 생성합니다.
설정 항목 값 AMI Amazon Linux AMI Instance Type t2.micro Network VPC-WordPress Subnet WordPress-Public Auto-asstign Public Enable Name WordPress-a Security Group Wordpress-sg
- 생성이 완료되면 아래의 미들웨어들을 설치합니다.
- 유저 이름은 ec2-user입니다.
$ sudo yum install -y php php-mysql php-gd php-mbstring
# 관련 미들웨어를 설치합니다.
$ sudo yum install -y mysql
# mysql을 설치합니다.
$ wget -O /tmp/wordpress-4.1-ja.tar.gz https://ko.wordpress.org/wordpress-4.6.1-ko_KR.tar.gz
# wordpress-4.6.1...의 파일을 wordpress-4.1-ja.tar.gz의 이름으로 다운받습니다.
$ sudo tar zxf /tmp/wordpress-4.1-ja.tar.gz -C /opt
# wordpress 압축파일을 /opt에 압축을 해제합니다.
$ sudo ln -s /opt/wordpress /var/www/html
# 심볼릭 링크를 생성합니다.
$ sudo chown -R apache:apache /opt/wordpress
# wordpress의 소유 권한을 apache로 수정합니다.
$ sudo chkconfig httpd on
# httpd가 정상적으로 작동하는 지 체크합니다.
$ sudo service httpd start
$ httpd 서비스를 시작합니다.
- 설치가 완료되면 DB 접속을 위한 계정을 생성합니다.
$ mysql -u root -p -h [ RDS Endpoint ]
$ password : qwer1234
mysql> create user 'wordpress-user'@'%' identified by 'wordpress';
mysql> create database wordpress;
mysql> grant all privileges on wordpress.* to "wordpress-user"@"%";
mysql> flush privileges;
- 계정 생성이 완료되었으면, http://인스턴스의 Public IP/wordpress/wp-admin/install.php로 접속합니다.
- 데이터베이스, 사용자명, 비밀번호에 위에서 생성한 값들을 입력 후, 데이터베이스의 호스트에는 RDS의 엔드포인트 값을 입력합니다.
- 설치를 실행합니다.
- 사이트의 제목과 관리자명 등을 설정합니다.
- 설정이 완료되면, 설정한 계정을 통해 로그인합니다.
- Wored Press의 설치가 완료되었습니다.
- 생성이 완료되면 AMI 이미지를 생성합니다.
- AMI 이미지를 통해 동일한 인스턴스를 다른 가용영역에 생성합니다.
3. ELB 생성
- 80/tcp 외부로 ALB를 생성해주세요.
- ELB 생성 참고
- ELB의 DNS로의 접속이 확인되면, 대상그룹 또한 확인합니다.
- 다음으로는 WordPress의 접속 IP를 변경해보겠습니다.
- WordPress의 관리자로 접속하여 설정 -> 워드프레스 주소, 사이트 주소를 변경합니다.
- 워드프레스 주소 : http://[ ALB DNS ]/wordpress
- 사이트 주소 : http://[ ALB DNS ]
- ALB에서 Desciption -> Edit stickiness에서 로드밸런서의 쿠키 값을 사용하도록 설정 후, 시간은 1800초로 설정합니다.
- 이제 마지막으로 WordPress-sg의 80/tcp 포트의 대상을 0.0.0.0/0이 아닌, ALB를 대상으로 설정 및, SSH 접속을 해제하면 모든 설정이 완료됩니다.
Marketplace를 사용
- 위 처럼 직접 구현하는 방법 외에도 이미 구현되어 있는 AMI를 구입하여 사용하는 방법도있습니다.
- 위 그림과 같이 Markplace에서 구입이 가능합니다.
- Marketplace로 구현을 할 경우, 이미 구축되어진 인프라를 사용하는 만큼, 간편하고 빠르게 사용할 수 있지만, 세부적인 사항에 대해서는 설정이 어렵다는 단점이 있습니다.
마지막 수정일자