아마존 웹 서비스의 경우, 스타트업 부터 엔터프라이지까지 개발자 및 인프라 운영 엔지니어들이 주로 사용하는 것으로 알려져 있습니다. 하지만, 블로거로서 일반인들도 AWS 서비스를 유용하게 사용할 수 있습니다. 본 자료는 4주 완성으로 알파 사용자들이 아마존 웹 서비스를 활용하는 방법을 스터디 길잡이 입니다.
대상: 워드 프레스를 자체 서버로 블로그를 운영하려는 블로거, 포트폴리오 사이트를 운영하는 웹 디자이너, 클라우드를 통한 안정적인 소규모 워드프레스를 운영하려는 스타트업 등
얻을 수 있는 것:
1. 클라우드 컴퓨팅의 개념과 AWS 서비스에 대한 이해
2. AWS의 도메인 관리, 스토리지 및 동영상 인코등, 이메일 전송 서비스 활용 지식 습득
3. 복잡한 서버 운영 (콘솔 및 커맨드)과 DB 관리 없이도 안정적인 워드 프레스 운영 노하우 습득
주차별 스터디 내용:
<1주> AWS 소개 및 처음 할 일
1. 클라우드 컴퓨팅 및 AWS 서비스 소개
2. AWS 가입 및 빌링 알람 설정(CloudWatch)
3. AWS Activate 프로그램 가입 및 사용 방법
<2주> 서버 없이 웹 사이트 호스팅하기
1. S3에 파일 서버 구축하기(S3 지원 FTP 클라이언트 사용법)
2. AWS 사용자 및 크리덴셜 만들기(IAM)
3. S3에 정적 웹 사이트 운영하기
4. CloudFront로 콘텐츠 배포하기
5. 도메인 네임 관리 및 설정하기(Route53)
<3주> Elastic Beanstalk으로 워드프레스 운영하기
1. AWS 아키텍쳐 이해하기 (EC2/ELB/RDS/AutoScaling)
2. 5분만에 확장 가능한 워드프레스 구성하기(CloudFormation)
3. Elastic Beanstalk으로 워드프레스 운영하기
4. WordPress 로컬 서버 및 GIT 레포지터리 설치하기
<4주> 유용한 AWS 서비스 활용하기
1. Elastic Beanstalk 설정 및 배포하기
2. Elastic Transcoder를 통한 자동 동영상 인코딩 하기
3. SES를 통해 대용량 이메일 보내기
2. 여러분께 매우 유용한 정보가 될 것입니다!
만약 여러분이 개발자나 엔지니어는 아니지만,
작은 웹 사이트나 블로그를 운영하는 알파유저라면
본 세션을 통해 아실 수 있는 것:
1. 클라우드 서비스의 개념과 AWS 서비스 소개
2. AWS 가입 및 요금 알람 설정
3. AWS 사용자 설정 및 온라인으로 쉽게 저장하고 공유하는 방법
4. 간단한 정적 웹 사이트를 운영하는 방법
5. 서버에 대한 지식 없이도 WordPress 웹 사이트 운영 방법
6. 글로벌 웹 서비스를 손쉽게 하는 방법
7. 쉽게 동영상 인코딩이나 대량 이메일 전송을 하는 방법
3. 복습해 볼까요?
• Amazon S3의 정적 웹 호스팅이란?
• AWS 보안을 강화하기 위한 다섯 가지 주요 가이드라인?
• 왜 Amazon CloudFront를 사용해야 할까요?
• Amazon Route 53의 주요 기능은?
• 각자 자신의 홈페이지 만들어서 인터넷에 올려 보셨나요?
5. WordPress란?
• 전 세계에서 가장 인기 있는 웹 서비스 제작 도구
• Automattic의 CEO인 Matt Mullenweg이 시작
• 오픈 소스 소프트웨어로 제작 되고 있으며, 누구나 참여 가능
• 한 회사에 종속적이지 않아 생태계와 커뮤니티가 풍부함
• 주요 공헌 회사인 Automattic에서 WordPress.com도 운영 중
• 플러그인 및 테마가 풍부해서 다양한 웹 사이트로 변신 가능
• 국내에서 블로그 도구로 각광 받기 시작
• 현재 회사 홈페이지, 쇼핑몰, 커뮤니티 등으로 활용 가능
6. 워드 프레스를 해보려면?
• 워드 프레스 프로그램 다운로드
• http://ko.wordpress.org
• 설치하는 방법
• 내 윈도우에 워드프레스 설치하기
• 내 맥 컴퓨터에 워드프레스 설치하기
• 국내 무료 호스팅에 워드프레스 설치하기
• 배울 수 있는 곳
• 한국 워드프레스 커뮤니티 http://kopress.kr
• 주간 미트업 https://facebook.com/groups/kopress
10. AWS CloudFormation
• AWS 내부 자원(서버 데이터베이스 네트워크
등)을 서로 조립하여 원하는 서비스 구
조로 만들어 낼 수 있음
• 레고 블럭 조립 설명서와 비슷한 템플
릿(Template)을 활용하여 바로 찍어
낼 수 있음
• 인프라 구조를 프로그램 코드 기반으로
설정할 수 있어, Elastic Beanstalk,
OpsWorks 등의 기반이 됨
11.
12. AWS CloudFormation 시작하기
CloudFormation 서비스를 선택
하고, “Create New Stack”을 선
택합니다.
도움말
Stack은 AWS 서비스 자원을 묶어서
한방에 세팅할 수 있는 단위입니다. 예를
들어, 서버 및 데이터 베이스 그리고 설치
하는 프로그램 등을 원하는 방식으로 만
들 수 있고, 원한다면 한방에 지울 수도
있습니다.
13. 단계 1. 템플릿 선택
먼저 Stack 이름을 입력하고,
WP 템플릿을 다운로드 하시
고, 파일을 선택해서 템플릿
업로드 해 주시면 됩니다!
도움말
템플릿 선택을 하면, Multi-AZ
WordPress Blog의 경우, 여러 데이터
센터에 다수의 서버를 띄워서 로드 분산
및 장애 방지를 하는 샘플입니다. 우선 하
나의 서버에 워드프레스와 별도 데이터
베이스를 함께 동작시켜 봅니다.
http://bit.ly/awseb-wp-template
WP 템플릿
14. 단계 2. 데이터베이스 및 인스턴스 선택
WordPress에서 이용할 데이터
베이스 이름, 암호 및 사용자를 입
력합니다. 그런 다음 Instance
Type에서 무료로 쓸 수 있는
“t2.micro”를 선택합니다.
주의사항: DB 암호는 숫자와 영문자를 섞어서 8
자 이상으로 해주세요.
도움말
기본 템플릿을 선택하면, KeyName 및
SSHLocation이 필요한데 만약 서버에 직
접 접속하는 경우 필요하며, 우선 가상서버
에 위드프레스만 설치 및 사용해볼 예정이
므로 바로 “NEXT”를 누릅니다.
15. 단계 3. Stack 생성하기
“Options” 단계는 그대로 진행하
고 나면, 전체 Stack을 리뷰하고
마지막으로 Create를 선택합니다.
웹 서버 및 DB 세팅, 프로그램 설치에 몇 분
정도 걸리니 커피 한잔의 여유를 가지시길…
16. 단계 4. 워드프레스 설치 완료 및 접속하기
도움말
Output 탭에 눌러 적혀 있는 링크를 클릭하면 워드프레
스 설치 화면이 나타납니다. 로그인 계정 설정 후 로그인
하시면 워드프레스를 바로 사용하실 수 있습니다.
17. CF 템플릿이 무엇을 하는 걸까요?
① 사용자로 부터 받을
입력 항목 설정
② 원하는 구성을 하고,
필요한 SW 설치
③ 완료된 구성에 대한
정보를 제공
18. CF로 만든 AWS 자원 삭제하기
• Delete Stack을 누르면 기존에 만들어진 자원을 모두 삭제합니다.
• 복구되지 않으니 데이터 백업 등을 주의하고 실행해야 합니다.
• 혹시 과금이 될 수도 있으니, 테스트로 만든 CF Stack은 바로 삭제하시는 것이 좋습니다.
19. 참 쉽죠잉?
…
근데 업데이트는 어떻게 하나요?
테마 설치는? 플러그인은?
AWS의 가장 장점인 자동 확장(Auto Scaling)은?
…
그래서 우리는 좀 더 쉬운 관리형 서비스를 활용합니다!
20. AWS Elastic Beanstalk
• 단계1. 앱 플랫폼 선택
§ Ruby/PHP/Node.js 등 서버환경
§ DB, 로드밸런싱 및 오토스케일링
• 단계2. 소프트웨어 업로드
§ WordPress 업로드 및 설치
• 단계3. 앱 실행 및 지속적 배포
§ 업데이트 사항 손쉽게 배포 가능
AWS 자원을 활용하여 손쉽게 웹 서비스를 구성 및 배포할 수 있는 무료 관리형 서비스
21.
22. AWS Elastic Beanstalk 시작하기
Elastic Beanstalk 서비스를 선택
하고, 오른쪽 상단의 “Create New
Application”을 선택합니다.
도움말
여러분이 PHP, Ruby, Python 및
Node.js 기반 프로그램이 있는 경우 서버
구성이나 설정에 신경쓰지 않고 손쉽게 프
로그램을 업데이트하고 운영할 수 있는 관
리 도구로 서버 및 DB 사용료, 데이터 전송
료만 내고 별도 서비스 이용료는 없습니다.
23. 단계 1. 앱 이름 및 환경 선택
앱 정보에 애플리케이션 이름을
넣습니다.
앱 환경에서는 Create Web
Server를 선택합니다.
24. 단계 2. 앱 형식 및 프로그램 소스 업로드
워드프레스를 운영하므로, 환경 설
정에 PHP를 선택하고, 환경은
Load balancing, auto scaling
을 선택합니다.
애플리케이션 버전은 Sample
application을 선택합니다.
도움말
Single Instance는 웹 서버 1대만 띄우고,
Load balancing, auto scaling은 사용자
트래픽에 따라 서버를 자동으로 확장합니
다. 기본 설정은 CPU 사용량에 따라 1대
~4대까지입니다.
25. 단계 3. 도메인명 설정 및 DB 선택
구성을 완료하고 나면, 우리가 손
쉽게 접속할 수 있는 도메인 명을
설정할 수 있습니다.
워드프레스는 DB가 필요하므로
Create RDS DB을 선택!
26. 단계 4. 웹 서버 설정
웹 서버 인스턴스 타입을 무료 사
용 가능한 t2.micro를 선택하고
나머지는 기본 설정 그대로 두시
면 됩니다.
도움말
본 설정으로 생성되는 웹서버는
CloudFormation을 통해 자동으로 생
성하며, 나중에 Elastic Beanstalk 환
경 설정을 통해 손쉽게 변경 가능합니다.
잠깐! 이제 Next를 누른후,
Environment Tags는
그냥 Next만 한번 더 누릅니다.
27. 단계 5. 데이터베이스 설정
데이터베이스 인스턴스 타입을 무료
사용 가능한 db.t2.micro를 선택
하고 DB username 및
password만 입력하고, 나머지는
기본 설정 그대로 두시면 됩니다.
도움말
본 설정으로 생성되는 DB는 AWS에서 관리
형으로 백업, 업데이트 등을 제공하는 RDS라
는 서비스를 통해 생성하며, 나중에 환경 설
정을 통해 손쉽게 변경 가능합니다.
28. 단계 6. IAM 퍼미션 설정하기
Create a new role 상태에서
Next를 누르시면, IAM에서 새로운
Role과 정책을 설정하는 화면이 나
오는데, 이때 Allow를 누르면 자동
생성 후 다시 되돌아 옵니다.
도움말
앞에서 배웠듯이 Elastic Beanstalk만을 관
리하는 역할 및 정책을 별도로 생성하여 안전
하게 보안 관리를 할 수 있습니다.
32. 서양 속담에 이런게 있습니다...
Don't put all your eggs in one basket!
계란을 한 바구니에 담지 마라!
위험을 분산하고 투자하라는 재테크 격언이기도 합니다.
이미지출처: 계란을 한 바구니에 담지 마라
http://sabbunhi555.tistory.com/62
33. 웹 서비스도 분산 해야 합니다!
파일
프로그램 데이터
우리는 몇 가지 AWS 서비스를 활용
하여 효율적인 성능과 손쉬운 확장이
가능하면서도 비용 효율적인 서비스
가 되도록 몇 가지 빌딩 블럭을 조립
합니다.
AWS 활용 = Building Block 조립
이미지 출처: 한국은행 경제교육 청소년 경제나라, 계란은 한 바구니에 담지 말라구요?
http://youth.bokeducation.or.kr/ecostudy/columnList.do?
bbsId=6&mode=view&contentId=200003943
34. 애플리케이션 데이터
웹서버
EC2 instance
IP주소
Elastic IP
사용자 요청 도메인
도메인 네임
Amazon
Route 53
DB서버
RDS Instance
Availability Zone
부하 분산
Elastic Load
Balancing
AWS로 우리가 만든 웹 서비스 구조
정적 파일
Amazon S3
글로벌 분산
Amazon
CloudFront
서비스 관리
및 배포
AWS Elastic
Beanstalk
35. • 사용자 트래픽에 따라 웹 서버 사이의 부하를 분산해 주는 서비스
• 오토 스케일링 지원 및 스스로 자동으로 확장 가능
주요 기능
상세 정보
Available
멀티 Availability Zone 기반의
인스턴스 로드 분산 서비스
Health
checks
자동으로 인스턴스가 서비스 중
인지 아닌지 체크 가능
Secure
sockets layer
SSL 보안 트래픽 처리 가능 및
다양한 암호 알고리즘 지원
Monitoring
CloudWatch를 통해 로그 제공
및 모니터링 가능
Elastic Load
Balancing
(자동 확장)
Elastic Load Balancing(ELB)
36. Amazon Relational Database
Service (RDS)
• 관계형 데이터베이스(RDB)에 대
한 관리형 서비스
• 제공 가능 데이터베이스
§ Aurora, MySQL, Microsoft SQL,
Oracle, PostgreSQL
• 업데이트, 보안 패치, 백업 등 지원
• 상용 라이센스 선택적 이용 가능
37. 오토 스케일링 – Auto Scaling
• 사용자 트래픽(CPU 용량 혹은 데이터 전송량)에 따라 EC2
인스턴스 숫자를 자동으로 증가 혹은 감소
• 트래픽에 따라 사용된 인스턴스에 따라 시간단위로 과금
하므로 비용 효율적
인스턴스
갯수
9AM 12PM 6PM 12AM 6AM
59 Small @
$0.08/hr
= $4.72
38. 이제! 워드 프레스 설치하기
https://ko.wordpress.org/
wordpress-‐4.3-‐ko_KR.zip
① 워드프레스 최신 버전을
Zip 형식으로 다운로드
② Upload and Deploy를
선택합니다.
③ Browse… 를 선택하고
Zip 파일 업로드
39. DB 연결 정보 가져오기
워드프레스 설치를 위해서는 데이
터베이스 서버 주소가 필요합니다.
Configuration을 선택하면,
Data Tier의 RDS 설정의
Endpoint 서버명을 복사합니다.
도움말
RDS 서버 설정에서 접속 보안 설정을 바꾸
면, 로컬 PC에서도 접속 가능하며, 로컬 웹
서버를 구성해서 테스트 가능합니다.
40. 이제 설치해 봅시다!
자신의 서버 주소로 접속!
예) https://channyblog-‐oxo.elasticbeanstalk.com
41. Amazon Web Services 플러그인 설치!
이제 AWS 플러그인 및 테마 설정 혹은 DB 이전 등 원하는 대로 할 수 있습니다!
42. AWS 플러그인 사용하기
Amazon Web Service 플러그인
을 설치하고, S3 사용시 발급한
Access Key 및 Secret Key를 입
력합니다.
IAM에서 만들었던 S3 접근 권한이
가능한 그 임시키 잊지 않으셨죠?
43. S3 and CloudFront 기능 설정하기
AWS 플러그인을 설치하고, 워드프
레스로 올리는 모든 이미지 및 파일
을 S3 혹은 CloudFront로 업로드
및 배포할 수 있습니다.
1. S3 Bucket 설정
2. 이미지 URL 설정
3. 필요시, CloudFront 사용
도움말
Amazon Route 53 혹은 여러분의 DNS 서
비스에서 CNAME 설정으로 맞춤형 이미지 서
버 도메인을 구성할 수 있습니다.
44. 이미지 업로드 해보기
워드프레스 글 쓰기 혹은 미디어 메
뉴에서 이미지를 올려 보시면,
Amazon S3 버킷으로 이미지가 직
접 올라가는 것을 보실 수 있습니다.
이제 여러분은 별도의 이미지 서버
를 가지시게 되었습니다!
도움말
테마에 있는 JS/CSS/Image 파일 등도 S3
와 CloudFront로 서비스하면, 웹 서버 부담
을 더욱 줄일 수 있습니다.
45. 여기서 중요! WP 백업하기
여러분이 서버에서 직접 추가 및 수
정한 워드프레스 변경 사항은 꼭 백
업하셔야 합니다.
최신 버전의 WP 백업 ZIP 파일은
“backupwordpress” 플러그을
통해 받을 수 있습니다.
도움말
플러그인 설치 후 “도구”에서 Backups 에서
Complete Weekly 를 선택하신 후, “Run
Now”를 누르면 ZIP 파일로 받을 수 있습니다.
46. 중요! WP 백업하기
여러분이 서버에서 직접 추가 및 수
정한 워드프레스 변경 사항은 꼭 백
업하셔야 합니다.
최신 버전의 WP 백업 ZIP 파일은
“backupwordpress” 플러그을
통해 받을 수 있습니다.
도움말
플러그인 설치 후 “도구”에서 Backups 에서
Complete Weekly 를 선택하신 후, “Run
Now”를 누르면 ZIP 파일로 받을 수 있습니다.
47. 중요! WP 업데이트하기
백업한 ZIP 파일은 Upload and
Deploy를 통해 계속 재배포해 주
셔야 합니다.
오토스케일링으로 서버가 추가 될
때, 최신 버전의 앱 버전을 사용하
기 때문입니다.
도움말
사용자 혹은 관리자가 업로드 하는 이미지 파일
은 서버에 없기 때문에 워드프레스 버전 업데이
트, 테마 및 플러그인 만 있으므로 파일은 크지
않습니다.
48. 과거 업데이트 앱 버전 보기기
• 여러분이 변경 사항을 Upload and Deploy를
통해 계속 배포하는 경우, 과거 배포 기록을 보실
수 있습니다.
• 필요한 경우, 특정 시기의 워드프레스 버전을 다운
로드 하실 수도 있습니다.
49. Q: PHP 설정 변경은 어디서 하나요?
여러분의 앱에 Configuration에서
다양한 설정을 하실 수 있습니다.
1. Web Tier: 오토스케일링, 가상 서버
및 PHP 프로그램 환경 설정 변경 등
을 하실 수 있습니다.
2. Data Tier: RDS에서 DB서버 설정
을 변경할 수 있습니다.
3. Network Tier: 로드밸런싱 설정이
가능합니다.
도움말
향후에 각 설정에 해당되는 내용을 익히시
고, 조금씩 변경 해 보시기 바랍니다.
50. Q: 파일 업로드 사이즈가 2M 이상 되나요?
files:
"/etc/php.d/project.ini"
:
mode:
"000644"
owner:
root
group:
root
content:
|
upload_max_filesize
=
128M
post_max_size
=
128M
Wordpress 폴더에 .ebextensions 라는
디렉토리를 만들고 project.config라는
파일을 만들고 아래의 내용처럼 원하는
php.ini 변경 설정을 추가로 넣어줍니다.
ZIP파일로 묶은 다음, Upload and Deploy를
한번 더 해주시면 됩니다.
51. Q: 기본 요금은 얼마나 나올까요?
AWS 간단계산기를 통해
Elastic Beanstalk을 사용하는
경우, 프리티어 포함 시 금액을
확인하실 수 있습니다!
• EC2 t2.micro x 2대
1대는 20% 피크시에만 사용 및 10GB 송신
• ELB 15GB/월 전송
• RDS t2.micro x 1대
• CloudFront 3GB/일 전송
52. 개발자가 있는 경우, 제대로 운영하기
• Deploying WordPress to Amazon Web Services AWS
EC2 and RDS via ElasticBeanstalk by Michael Averto
1. Elastic Beanstalk으로 인프라 구성하기
2. 로컬 웹 서버에 워드프레스 설치하기 및 RDS 연결 하기
3. 버전 콘트롤(GIT)을 활용하여 워드프레스 수정하기
4. 로컬 웹 서버에서 수정 사항 테스트하기
5. Elastic Beanstalk으로 배포하기
6. 이를 반복
§ https://www.otreva.com/blog/deploying-wordpress-amazon-web-services-aws-ec2-rds-
via-elasticbeanstalk/
53. AWS에서 원하는 프로그램을 설치해 보세요!
Drupal PHPBBDiscourse
워드프레스 뿐만 아니라 다양한 국내외 오픈 소스 기반 콘텐츠 SW를 활용할 수 있습니다.