IT_Study/Web

Back-End (2) : AWS를 이용해 내가 원하는 웹페이지 띄우기

__Vivacé__ 2023. 3. 1. 00:15

 

 

 

mobaXterm

리눅스와 유닉스 시스템에서 사용되는 터미널 에뮬레이터(Terminal Emulator)

*터미널 에뮬레이터 : 컴퓨터와 다른 장치를 연결하여 컴퓨터에서 명령어를 입력하고 출력할 수 있도록 해주는 소프트웨어

 

 

mobaXterm으로 AWS instance에 접속 (방법은 생략)


AWS instance 접속 후, 한국 시간대인 KST로 변경

# sudo : 관리자 권한을 사용한다
$ sudo timedatectl set-timezone Asia/Seoul

 


웹 서버 소프트웨어

클라이언트에서 요청한 웹 페이지를 찾아서 해당 페이지를 응답으로 전송해주는 역할

 

 

웹 서버 소프트웨어의 여러 기능

  1. 포트 리스닝
    • 네트워크 상의 특정한 포트(일반적으로 80번 포트)를 리스닝하며, 클라이언트의 요청을 대기
  1. HTTP 요청 처리
    • 클라이언트가 요청한 HTTP 요청 메시지를 받아서 처리
  1. 웹 페이지 제공
    • 요청한 파일을 찾아서 클라이언트에게 전송
    • 웹 서버는 정적 파일이나 동적 콘텐츠를 제공할 수 있으며, 동적 콘텐츠의 경우 웹 애플리케이션 서버와 연동하여 처리 가능
  1. 로깅
    • 요청한 파일의 경로, IP 주소, 요청 시간 등의 정보를 로그로 기록
  1. 에러 처리
    • 클라이언트의 요청에 대해 오류가 발생한 경우, 적절한 에러 메시지를 전송
  1. 보안
    • SSL/TLS 인증서를 지원하여 암호화된 통신을 제공하거나, 웹 방화벽 등의 보안 기능을 제공

 


웹 서버 소프트웨어의 종류

 

  1. Apache HTTP Server
    • 가장 오래된 웹 서버 중 하나로, 오픈소스로 개발되어 있음
    • 모듈화된 아키텍처를 가지고 있어 필요한 모듈만 선택적으로 사용 가능
  1. Nginx
    • 경량 웹 서버로, 대규모 웹 애플리케이션에 많이 사용
    • 로드 밸런싱, 캐싱, 보안 등 다양한 기능을 제공
  1. Microsoft IIS
    • Microsoft에서 개발한 웹 서버로, Windows 운영 체제에서만 사용할 수 있음
    • ASP.NET 등의 Microsoft 플랫폼과 함께 사용되며, 윈도우 서버의 일부로 제공됨
  1. Lighttpd
    • 경량 웹 서버로, Apache나 Nginx와 비교하여 메모리 사용량이 적음
    • 정적 파일 서비스에 최적화되어 있으며, 다양한 웹 프레임워크와 함께 사용할 수 있음
  1. Caddy
    • 최근에 등장한 웹 서버로, HTTPS를 기본적으로 지원, SSL/TLS 인증서 발급 기관과의 연동도 간편
    • 간단한 설정으로 사용자 친화적인 기능을 제공

 


 

Nginx 다운로드

nginx를 설치 후 정적 서버를 EC2에 업로드할 예정

# apt : 리눅스에서 다운로드 시 쓰는 명령어
$ sudo apt update 

$ sudo apt install nginx # 이후 y 누르고 다운로드

이후 AWS의 Open IP Address를 웹 주소창에 넣으면 다음과 같은 창이 보임

 

 


리눅스와 유닉스 운영 체제에서 사용되는 텍스트 에디터

 

  1. vi: 리눅스와 유닉스 운영 체제에서 가장 오래된 텍스트 에디터 중 하나
    • 명령 모드, 입력 모드, 마지막 행 모드 등 세 가지 모드를 가지고 있음
  1. vim: vi의 향상된 버전
    • 다양한 확장 기능과 자동 완성 기능, 커스터마이즈 기능 등을 제공
  1. nano: 초보자에게 친숙한 인터페이스와 간단한 사용법으로 유명한 텍스트 에디터
    • 기본적인 편집 기능뿐만 아니라 검색, 치환, 복사, 붙여넣기, 라인 번호 표시 등 다양한 기능을 제공
  1. emacs: vi와 함께 리눅스와 유닉스에서 가장 많이 사용되는 텍스트 에디터 중 하나
    • 다양한 모드와 매크로 기능, 커스터마이즈 기능 등을 제공

$ cd /etc/nginx/sites-available
$ sudo nano default;

위의 명령어를 입력하면 다음과 같은 화면을 볼 수 있음

 

*listen

  • 클라이언트 요청을 받기 위한 IP 주소와 포트를 설정
    • 기본 문법 - listen address:port [options];
    • listen 80; : 모든 IP 주소에서 80번 포트로 들어오는 HTTP 요청을 처리해라
    • listen [::]:80; : IPv6 주소에서 80번 포트로 들어오는 HTTP 요청을 처리해라
    • listen 80 default_server; : 80번 포트로 들어오는 요청 중 기본 서버로 설정된 요청을 처리해라
    • listen 443 ssl; : 443번 포트로 들어오는 요청 중 SSL 인증서를 사용한 HTTPS 요청을 처리해라

 

*root

  • 서버에서 제공하는 파일의 기본 경로를 지정하는 지시자
  • 이 경로 아래에 있는 파일들이 클라이언트에게 제공됨

 

*location

  • 요청된 URL 경로와 일치하는 요청을 처리하기 위한 블록
  • HTTP 요청에 대한 경로(Route)를 설정하고, 이를 기반으로 요청을 처리하는 역할을 하기 때문에, **라우터(Router)**라고도 함
  • **/**경로에 대한 요청을 처리하기 위해 **location / { ... }**블록이 사용되고 있음
  • 이 블록에서 try_file 지시자를 사용
    • 요청된 파일을 찾아서 제공
    • 파일이 존재하지 않으면 404 Not Found 응답을 반환

 


 

아래의 명령어를 입력하면, 웹페이지의 HTML source를 확인 가능

$ cd /var/www/html
$ sudo nano index.nginx-debian.html
$ cd ~ # home으로 이동
$ mkdir nginx-test

# vscode에서 .html 파일 만들고, nginx-text 폴더에 넣음

# 그 후 default에 들어감

# root /var/www/html 을
# root /home/ubuntu/nginx-test 로 수정

# 디렉토리를 변경했으니, nginx를 리로드해주는 과정이 필요
$ sudo service nginx reload

이 작업 후, IP Address를 주소창에 검색하면, html 소스를 웹페이지 상에서 볼 수 있음


 

DNS(Domain Name System)

IP 주소(e.x. 12.345.678.90)를 도메인 이름(e.x. http://www.gongbuguichan.com)으로 매핑하는 과정

 

 

 

무료 도메인 적용하기

  1. 내도메인.한국 회원가입
  2. 원하는 키워드를 검색해보고, 원하는 사이트 선택
  3. 고급설정 (DNS) - [IP연결(A)] 에 ip 주소 삽입 후 수정하기 클릭
  4. mapping 완료