아마존 웹서비스

EC2와 웹서버 (apache)

EC2를 이용해서 웹서비스를 하는 방법에 대해서 알아본다.

EC2와 웹서버

EC2의 인스턴스는 한대의 독립적인 컴퓨터에 해당하기 때문에 컴퓨터로 할 수 있는 일이라면 EC2를 이용해서 무엇이든지 할 수 있다.   하지만 아마존 웹서비스는 웹서비스를 위해서 고안된 인프라 서비스이고, AWS에서 제공하는 서비스 중에 웹서버의 역할을 할 수 있는 상품은 EC2 밖에 없기 때문에 EC2의 가장 중요한 기능은 역시 웹서버라고 할 수 있다. 이번 시간에는 인스턴스에 웹서버를 설치하고, 웹서비스를 하는 방법에 대해서 알아본다. 운영체제는 Ubuntu, 웹서버는 Apache를 사용할 것이다. 웹서버에 대한 개념을 잘 모르겠다면 '웹서비스 만들기'편을 참고한다. 

웹서버 설치

웹서버인 Apache를 설치하기 위해서는 우선 SSH를 이용해서 인스턴스에 접근해야 한다. 이 방법은 이전 수업인 인스턴스의 생성에 있다. 터미널에서 아래와 같이 입력한다.

sudo apt-get update;

이해를 돕기 위해서 그림을 첨부했다. 

sudo apt-get install apache2;

이제 Apache 웹서버가 설치 됐다. 

Security Group (방화벽)

웹서비스가 설치되면 웹페이지를 브라우저에게 서비스 할 준비가 된 것이다. 하지만, AWS EC2는 방화벽이라는 것을 기본적으로 제공하기 때문에 웹서비스를 하려면 방화벽의 설정을 변경해야 한다.  

우선 인스턴스의 Security Group 이름을 알아야 한다. 인스턴스 목록 중에 Security Group 항목의 내용을 확인한다. 아래 데모에서는 Security Group이 quicklaunch-4로 되어있다. 

이제 Security Group의 방화벽 설정을 변경해보자. 사이드 바에 Security Group 항목을 선택한다. 

위의 그림을 참고하면서 순서대로 설정한다. 각각에 대한 설명은 아래와 같다. 

3. 생성한 인스턴스의 목적은 웹서버이다. 웹서버는 HTTP라는 통신규약을 이용해서 웹페이지와 같은 정보를 브라우저에게 전송한다. 인스턴스는 인터넷에 연결되어 있기 때문에 다양한 방법으로 접속이 시도되는데 이 중에 HTTP를 허용하겠다는 의미다. 

4. 컴퓨터를 방으로 비유하면 이 방으로 들어오는 여러개의 문이 있는데, 문에 따라서 대기하고 있는 프로그램들이 다르다. 이를테면 80번째 문은 웹서버가 대기하고 있고, 22번째 문은 SSH 서버가 대기하고 있다. 따라서 HTTP로 통신을 하려면 80번 포트를 열어놔야 한다. 각 프로그램별로 사용하는 포트의 번호는 정해져있다. (이 값은 변경 가능하다)

5. 인스턴스에 접속하는 클라이언트를 제한하는 기능이다. 만약 0.0.0.0/0으로 이 값을 지정하면 HTTP의 포트인 80번 포트로 접근하는 모든 컴퓨터를 허용하는 것이고, 74.125.128.113/32를 값으로 주면 IP가 74.125.128.113인 컴퓨터만 인스턴스에 접근이 가능하다. 이것을 CIDR(사이더)라고 하는데, 이 숫자를 지정하는 것에 따라서 접속을 허용하는 대역을 정의 할 수도 있다. 또 다른 Security Group의 접근을 허용할수도 있는데, Security Group은 sg-f0e985f1라는 형식을 가진 Security ID 값을 가지고 있다. 이 값을 입력하면 해당 Security Group에 속해있는 인스턴스의 접근이 허용 된다. 

웹서버와 랑데뷰

인스턴스를 만들었고, 거기에 운영체제를 설치했다. 그리고 Apache를 설치한 후에 인스턴스에 접속 할 수 있도록 Security Group을 변경했다. 이제 실제로 웹서버에 접속해보자. 

웹브라우저를 열고 주소 표시창에 인스턴스의 Public DNS을 입력하자. 그럼 아래와 같은 화면이 보여야 한다. 

댓글

댓글 본문
  1. 재동
    2020-12-14 (월)

    실습시작 l 과제시작 ㅜㅜ
  2. 서재성
    clear
  3. PHP123
    123123
    대화보기
    • thomas
      와 생활코딩님 짱이네요 ㅋㅋ
    • Devwhale
      http 랑 https 랑 햇갈려서 잘못 https 넣었다가 안되서 애먹었네요.

      다른분들 안되시면 체크 해보시길.

      그리고 아마존 웹서비스 디자인 면으로 조금 변해서 했갈리실수도 있겟네요. 하지만 내용면으로 변한게 별로 없어 괜찬을 듯
    • leejee
      2016.11.22 해본 결과
      var/www/html/index.html로 해보면 되네요
      다른 분들 참고하시라고 남겨요.
      대화보기
      • misary
        생활코딩님 정말 감사합니다.
        목소리도 좋으시고 하루종일 찾던거 5분만에 해결했네요 ㅠㅠ
      • ecomming
        처음 instance 만들때 key를 안 만들었으면 설치후에 key 만드는것도 강의에 넣어주면 좋을것 같습니다.
        따라하긴 했는데 중간에 화면 메뉴 등등이 강의하고 많이 달라요. 그동안에 좀 바뀌었는지??
        처음에 key 안만들고 instance 생성했다가 접속 안돼서 다시 instance 모두 삭제하고 겨우 key 생성 어쩌구 했는데
        ..
      • ecomming
        접속 방법은 좀 자세하지가 않아서 인터넷 찾아서 겨우 성공.. 아마존에서 기존 제공하는 연결 프로그램 쓰니까 안돼서 맥에서 절대경로 넣기가 쉽지 않네요. 초보자의 입장에서 .. 다른 이유로 접속 안되는지 아무튼 안됨. 그래서 인터넷 삽질..

        이렇게.....
        맥 terminal 에서 ssh 하고 치고 난다음 .. 에러없이 어쩌구 하면 성공!
        그다음에....
        ssh -i 자기가 생성한 키이름.pem ec2-user@퍼블릭 아이피주소 인터넷 보니까 요렇게만 되어 있어서 또 삽질..
        우분투에서는 저걸 ubuntu로 바꿔줘야 되더라구요.

        ssh -i [~~.pem] [ ubuntu@60.**.**.63] 요렇게 = Public DNS 아래 보니까 Public IP 가 있는데 이걸 넣어줌.
        요렇게 땅하고 접속 성공해서 아파치까지 설치 성공..^^
      • TRVL
        이것도 문제없이 통과했습니다. :)
      • 왜 저걸 다 했는데도 public dns 접속이 안될까요..

        페이지를 찾을수 없다고 뜨네요
      • hhhh
        mac에서 하는데 타임아웃이떠요... 이유가 뭘까요...

        port 22: Operation timed out
      • Young-en An
        안녕하세요 ㅠㅠ궁금한게 있어요
        aws로 jsp개발하고싶어서 톰캣깔으려고 했는데 안되더라구요..
        apache2 저걸 깔고 해도 되는건가요..?
        어제부터 삽질중이에요 ㅠㅠ
      • egoing
        개편되서 그렇구요./var/html/www/html에서 작업하셔야 합니다~
        대화보기
        • sayme
          안녕하세요~ 저 같은 사람이 여기까지 따라하고 있다는게 정말 놀랍습니다! (생활코딩만세!)

          그런데.. 한가지 It works! 는 뜬것 같은데 페이지 모양이 조금다릅니다.
          http://ec2-54-77-191-219.eu-west-1.compute.amazonaws.com <--확인해 보시면..
          그래서 그런지.. 터미널에서 var/ www 로 접근이 되질 않습니다. 위 it works 페이지엔 어떤 파일은 리플레이스를 해야한다고 적혀있긴 한데.. 이것 때문인지..
        • 잉여잉여
          생활코딩 페이스북 그룹에 글을 올렸었는데
          문제가 해결되지 않아 여기에 글을 남겨봅니다...ㅠㅠ

          http://kldp.net......rl/
          사이트를 참고해서 아파치 한글 인식 모듈인 mod_url을 설치해봤는데
          한글로 이루어진 폴더경로에는 접근할 수 있는데 정작 한글 파일은 인식이 되지 않네요..
          예를 들면, '123.456.789.1/테스트' 라는 주소로는 접속이 가능한데,
          '123.456.789.1/테스트/예제.html'이란 주소로 접근하면 테스트, 예제 라는 문자가
          아예 다 깨져서 웹서버에서 인식을 못하더라고요...;;

          설치한 mod_url파일은 mod_url-apache2-1.21.tar.bz2 이고,
          설치 방법대로 차근차근 설치를 수행했는데도 되지가 않네요... 왜그런걸까요?
          사용하고 있는 환경은 아마존 웹서비스에 아파치2를 설치하였습니다. (ubuntu 12.04 LTS , apache 2.2.22)
        • starter
          so cool!
        • AWS를 이렇게 자세히 설명해 주셔서 감사합니다. 질문이 있는데요. EC2 인스턴스를 AMi(이미지파일) 이용해 생성했는데, 인스턴스가 'stop'이 활성화 안되어있더라고요. (reboot, terminate는 활성화가 되어있고요) 혹시 왜 그런지, 어떻게 활성화 하는지 알아볼 수 있을까요?
        • minyh519
          it work! 까지 완료되면 압타나 에디터를 다운받아서 진행하면 되는건가요?? 그런데 압타나 에디터 다운받아서 hello world 해볼려고 해도 안되더군요....답답하네요. php 프로젝트에서 프로젝트이름과 로케이션 설정한다음에 피니시누르면 에러나고 뜨네요...
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기