AWS Cloud Club

[ACC] Amazon EC2 동적 웹사이트

rec-of 2025. 1. 21. 14:41
  • 기존 EC2 인스턴스의 AWS Cloud9 IDE에 연결
  • EC2 인스턴스 환경을 분석하고 웹 서버에 액세스할 수 있는지 확인
  • 웹 애플리케이션을 AWS Systems Manager Parameter Store를 사용하는 EC2 인스턴스 설치
  • 웹 애플리케이션 테스트
  • AMI 생성
  • 웹 애플리케이션의 두 번째 사본을 다른 AWS 리전에 배포

챌린지 #1 웹사이트를 호스팅할 EC2 인스턴스 준비

1단계: 기존 EC2 인스턴스 분석

  1. Services 옆 검색창에 EC2 검색 후 선택하여 EC2 콘솔로 이동, 그 다음 Instances 선택.

2단계: EC2 인스턴스에서 IDE에 연결하기

AWS Cloud9은 EC2 인스턴스에서 실행할 수 있는 서비스. 코드 편집기, 디버거, 터미널 같은 기능이 포함된 통합 개발 환경(IDE) 제공.
AWS Cloud9 환경을 사용하면 키 페어를 다운로드할 필요 없이 PuTTY나 비슷한 SSH 소프트웨어로 EC2 인스턴스에 연결 가능. 또 AWS Cloud9에서는 Linux 인스턴스 파일을 편집하려고 vi나 nano 같은 명령줄 텍스트 편집 도구를 쓸 필요 없음.

  1. Services 옆 검색창에 Cloud9 검색 후 선택하여 AWS Cloud9 콘솔로 이동. Environments 페이지에서 CafeWebServer 환경을 볼 수 있음. 유형이 EC2 인스턴스라고 표시돼 있음.
  2. Open 선택하면 EC2 인스턴스에서 실행 중인 AWS Cloud9 IDE에 연결됨.

3단계: LAMP 스택 환경 분석하고 웹 서버에 접근할 수 있는지 확인하기

  1. OS 버전 확인:
    AWS Cloud9 bash 터미널에서 cat /proc/version
  2. 웹 서버, 데이터베이스, PHP 세부 정보와 서버 상태 살펴보기:
    sudo httpd -v
    sudo yum -y install httpd php-mbstring
    service httpd status
    php --version

  3. 웹 서버와 데이터베이스를 시작하고, 나중에 EC2 인스턴스를 다시 시작하면 자동으로 시작되도록 설정:
    sudo chkconfig httpd on
    sudo service httpd start
    sudo service httpd status
    #install database
    sudo yum install -y mariadb-server
    sudo mariadb --version
    sudo systemctl enable mariadb
    #
    sudo chkconfig mariadb on
    sudo service mariadb start
    sudo service mariadb status


  4. AWS Cloud9 편집기로 웹 서버 파일을 수정할 수 있게 EC2 인스턴스 설정
    ln -s /var/www/ /home/ec2-user/environment
    sudo chown ec2-user:ec2-user /var/www/html
  5. 간단한 테스트 웹 페이지 제작
  6. 인터넷에서 이 웹사이트에 접속할 수 있게 제작 (웹 서버에 호스팅되는 엡 페이지를 인터넷에서 접속할 수 있게 하는 설정을 확인하고 업데이트 해야 함)

챌린지 #2 EC2 인스턴스에 동적 웹 사이트 애플리케이션 설치하기

4단계: 카페 애플리케이션 설치

  1. 웹 서버 애플리케이션 파일을 다운로드하여 추출
    cd ~/environment
    wget https://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/ILT-TF-200-ACACAD-20-EN/mod4-challenge/setup.tar.gz
    tar -zxvf setup.tar.gz
    wget https://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/ILT-TF-200-ACACAD-20-EN/mod4-challenge/db.tar.gz
    tar -zxvf db.tar.gz
    wget https://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/ILT-TF-200-ACACAD-20-EN/mod4-challenge/cafe.tar.gz
    tar -zxvf cafe.tar.gz


  2. 카페 파일을 웹 서버 문서 루트에 복사
    unzip cafe.zip -d /var/www/html/
  3. 애플리케이션의 작동 방식 관찰
  4. AWS Systems Manager Parameter Store에서 애플리케이션 파라미터를 구성
    cd setup
    ./set-app-parameters.sh
  5. AWS 관리 콘솔의 Services 메뉴에서 Systems Manager를 선택
  6. 왼쪽 패널에서 Parameter Store를 선택
  7. 카페 애플리케이션을 지원하도록 MySQL 데이터베이스를 구성
    cd ../db/
    ./set-root-password.sh
    ./create-db.sh
  8. 생성된 데이터베이스 테이블을 관찰
    mysql -u admin -p

    오류로 인해 명령어 앞에 sudo 를 붙임

    데이터베이스의 콘텐츠(특히, 카페 웹 애플리케이션을 지원하는 테이블)를 관찰하려면 다음 명령을 입력
    show databases;
    use cafe_db;
    show tables;
    select * from product;
    exit;

  9. PHP에서 시간대 구성을 업데이트
    sudo sed -i "2i date.timezone = "America/New_York" " /etc/php.ini
    sudo service httpd restart
  10. 카페 웹 사이트가 제대로 작동하고 인터넷에서 웹 사이트에 액세스할 수 있는지 테스트
  11. 웹 사이트 문제를 해결

역할을 부여했음에도 불구하고 아직 웹사이트 문제가 발생 26:53

5단계: 웹 애플리케이션 테스트

  1. 주문을 넣어 테스트
  • http://<public-ip>/cafe 페이지가 열려 있는 브라우저 탭에서 Menu를 선택
  • 표시된 메뉴 품목 중 하나 이상에 대한 주문을 제출
    • 참고: Submit Order 버튼을 찾으려면 아래로 스크롤해야 할 수도 있음
  • 메뉴 페이지로 돌아와 다른 주문을 제출한 다음 Order History 페이지로 이동하여 제출한 모든 주문에 대한 주문 세부 정보를 확인

    챌린지 #3 여러 AWS 리전에 개발 및 프로덕션 웹사이트 만들기

    6단계: AMI 생성 및 다른 EC2 인스턴스 시작

  1. 정적 내부 호스트 이름을 설정하고 EC2 인스턴스에서 새 키 페어를 생성
    sudo hostname cafeserver
    ssh-keygen -t rsa -f ~/.ssh/id_rsa
    암호를 입력하라는 메시지가 두 번 나타나는데, 이때마다 Enter 키를 누릅니다.
    SSH 유틸리티에서 새 키를 사용할 수 있도록 하기 위해 Bash 터미널에서 다음 명령을 실행
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  2. AWS 관리 콘솔에서 EC2 서비스 영역을 찾아 인스턴스 선택
  3. Actions > Image and templates > Create Image를 차례대로 선택

    6-1단계: AMI 딥다이브

  4. AWS 관리 콘솔로 돌아와 Create Image 화면에서 새 AMI를 생성
  5. 탐색 메뉴에서 AMIs를 선택하고 이미지 상태가 Available이 될 때까지 기다립니다. 이 프로세스는 일반적으로 2분 정도 걸립니다. AMIs를 찾으려면 Images를 확장해야 할 수도 있음
  6. 다른 AWS 리전에 AMI 생성
  7. AMI에서 새로운 카페 인스턴스 생성. 생성하는 새 인스턴스는 다음 조건을 충족해야 함
  • Region: Oregon
  • Instance Size: t2.small
  • Network: Lab VPC Region 2, Public Subnet
  • IAM Role: CafeRole
  • Tag:
    • Key: Name
    • Value: ProdCafeServer
  • Security Group:
    • TCP 포트 22를 모두에게 개방하는 cafeSG라는 새 보안 그룹 생성
    • TCP 포트 80도 모두에게 개방되도록 설정
  • Proceed without a key pair(필요한 경우 이 랩에서 이전에 생성한 키 페어로 연결할 수 있음)
  1. 인스턴스의 상태가 Available로 바뀌지 않더라도 새 인스턴스에 Public DNS 값이 할당될 때까지 기다림
  2. Public DNS 값을 복사
  3. 새 AWS 리전에 필요한 AWS Systems Manager 파라미터를 생성하려면 다음 단계를 완료해야 함
  • 버지니아 북부(us-east-1) 리전의 AWS Cloud9 IDE로 돌아갑니다.
  • 텍스트 편집기에서 CafeWebServer/setup/set-app-parameters.sh 파일을 엽니다.
  • 다음 설정과 일치하도록 파일의 12행을 편집합니다.
    region="us-west-2"
  • 다음 설정과 일치하도록 18행을 편집합니다. 여기서 는 ProdCafeServer 인스턴스의 실제 DNS입니다.
    publicDNS=""
  • File > Save를 선택하여 변경 사항을 저장합니다.
  • 스크립트를 실행하려면 IDE의 맨 위로 이동하여 Run 버튼을 선택합니다.