장고 - EC2에 웹 서버 설정

  • 웹서버 프로그램은 대표적으로 Apache와 Nginx가 있다.
  • 장고 웹 서비스를 구축할 때는 Nginx를 더 많이 사용하는 추세이다.

EC2 웹 서버 설정 방법

  1. EC2에 SSH로 접속
    1
    $ ssh -i ~/.ssh/[키 페어 파일 이름; django-wps.pem] ubuntu@[퍼블릭 DNS 또는 IP]
  1. 패키지 최신 업데이트

    1
    $ sudo apt-get update
  2. Nginx 설치

    1
    $ sudo apt-get install nginx
  3. 서버 잘 동작하고 있는지 상태 확인

    1
    $ systemctl status nginx
  4. EC2 인스턴스 주소로 접속하여 웹 서버 잘 동작하는지 확인

    • 웹브라우저에 퍼블릭 DNS 주소 혹은 IP 주소 입력
    • Welcome to nginx! 라는 문구 표시되면 정상 동작중인 상태
  5. Nginx 사용하면 스태틱 웹 서버 생성하여 사용 가능

    • Nginx 사용할 때는 한 서버 컴퓨터에서 여러 사이트를 운영할 수 있다.
    • 사이트 별 설정파일 생성하여 수정필요

      1
      2
      $ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/staticweb
      $ sudo vim /etc/nginx/sites-available/staticweb
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      server {
      listen 80;
      listen [::]:80;

      root /var/www/staticweb
      index index.html index.htm index.nginx-debian.html;
      server_name [퍼블릭 DNS 주소 혹은 IP 입력]
      location / {
      try_files $uri $uri/ =404;
      }
      }
  1. 설정 파일이 올바른지 확인(문법적인 오류인지, 이 옵션이 정상 작동되는건지 확인)

    1
    $ sudo nginx -t
  2. 해당 설정파일을 Nginx에 활성화

    1
    sudo ln -s /etc/nginx/sites-available/staticweb /etc/nginx/sites-enabled/
  3. /var/www 경로로 이동하여 staticweb 폴더 생성

    1
    $ sudo mkdir /var/www/staticweb
  4. 브라우저 화면에 표시될 내용 작성

    1
    $ sudo vim /var/www/staticweb/index.html
    1
    2
    3
    4
    5
    <html>
    <body>
    hello nginx!
    </body>
    </html>
  5. Nginx 재실행

    1
    $ sudo systemctl restart nginx
    • 설치를 마치면, EC2 인스턴스 재시작해도 자동으로 Nginx가 실행되게 등록되어 있다.(아래 명령어 참고)
      • $ sudo systemctl stop nginx
      • $ sudo systemctl start nginx
      • $ sudo systemctl restart nginx
      • $ sudo systemctl status nginx
  1. 웹 브라우저에 퍼블릭 DNS 혹은 IP 주소 입력

    • index.html 에 작성한 내용이 정상적으로 표시되는지 확인
  2. 고정 IP 설정

    • EC2 > 네트워크 및 보안
    • 탄력적 IP 선택
    • 새 주소 할당 (새 주소 할당받고 인스턴스 선택안하면 과금될 수 있다.)
    • 목록에 있는 IP 우측 클릭
    • 주소 연결 > 인스턴스 선택 > 연결
    • IP 목록에서 Name 입력
    • IP 목록에 인스턴스 설정 확인
    • EC2 인스턴스 정보에서 탄력적 IP 표시는지 확인
  3. Route 53 이용하여 도메인 연결

    • 도메인 레코드 생성
    • 레코드 이름 설정 ex) staticweb.sample.wpsshool.site
    • 탄력적 IP 입력
    • 생성
  4. 도메인 이름 변경되었으므로, 사이트 설정파일 수정

    1
    $ sudo vim /etc/nginx/sites-available/staticweb
    1
    2
    ...
    server_name [고정 IP 설정한 도메인 이름 입력]
  5. Nginx 재실행

    1
    $ sudo systemctl restart nginx
  6. 웹 브라우저에 도메인 주소 입력하여 정상 작동하는지 확인


주의 사항

  • 설정 파일 수정했다면 테스트해야 하고, 설정파일이 올바르다면 nginx 재실행해야 설정 파일 반영된다.
  • 웹서버 구동시킬 때는 필요한 최소한의 권한만 부여한 계정을 생성하여 해당 계정의 권한으로 구동한다.
  • 도메인 설정 필요가 있어서 고정 IP를 설정한다.(도메인 설정 필요가 없을 경우, 고정 IP 설정 불필요)
  • 도메인 elastic ID 사용은 무료이나, 발급받고 아무 행위도 하지 않으면 과금될 수 있다.
  • 새 주소 할당받고 인스턴스 선택안하면 과금될 수 있다.