[5주차_웹개발] 개발일지 (서버에 올리기) AWS, EC2

Coastby·2022년 6월 28일
0

[5주차 목표]
1. Flask 프레임워크를 활용해서 API를 만들 수 있다.
2. '마이 페이보릿 무비스타'를 완성한다.
3. EC2에 내 프로젝트를 올리고, 자랑한다!

  • 웹 서비스 런칭
  • AWS 서버 구매하기
  • 서버 세팅하기
  • flask 서버 실행해보기
  • AWS에서 포트 열어주기
  • 쇼핑몰 업로드해보기
  • 포트포워딩
  • nohub 설정하기
  • 도메인 구입하기
  • og 태그

👉 웹 서비스 런칭


웹 서비스 런칭?
내가 만든 프로젝트를 배포하는 것이다. 배포는 누구나 내 서비스를 사용할 수 있게 하기 위한 작업이다.

웹 서비스를 런칭하기 위해서는 클라이언트의 요청에 항상 응답해줄 수 있는 서버가 필요하다.

언제나 요청에 응답하려면,
1) 컴퓨터가 항상 켜져있고, 프로그램이 실행되어야 한다.
2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소 (public IP Address)로 나의 웹 서비스에 접근할 수 있어야 한다.
서버에 프로젝트를 실행시키고, 외부 접속이 가능하게 하여 내 컴퓨터로 서버를 관리할 수 있다.

AWS라는 클라우드 서비스에서 EC2 (Elastic Compute Cloud) 사용권을 구입하여 서버로 이용한다.
(옛날에는 서버실이 있었는데 요즘은 거의 그런 회사는 없고 대부분 클라우드를 활용한다.)

✋ IP주소와 포트
우리가 접속하는 컴퓨터는 숫자로 되어있는 주소 (IP주소)가 붙어있다. 우리가 아는 URL은 알아보기 쉽게 하는 등의 이유로 IP 주소를 알파벳으로 바꾼 것이다. 이렇게 변환해주는 시스템을 DNS라고 한다.

  • IP 주소
    : 컴퓨터가 통신할 수 있도록 컴퓨터마다 가지는 고유한 주소. 정확히는 네트워크가 가능한 모든 기기가 통신할 수 있도록 가지고 있는 특수한 번호. 서버는 하나의 주소를 가지고 있다.
  • 포트 (port)
    : 하나의 IP에 여러 포트가 있다. 하나의 포트에 하나의 프로그램을 실행시킬 수 있다.

👉 AWS 서버 구매하기


0) EC2 콘솔페이지

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2

1) Launch Instance

  • 서버역할을 하는 컴퓨터 하나하나를 aws에서는 인스턴스라고 한다.
  • 리눅스는 오픈소스 (무료) : 여러 컴퓨터를 사용해야 하므로 라이센스 비용이 따로 없는 리눅스를 사용한다.
  • 리눅스도 여러 계열이 있는데 보편적인 Ubuntu를 사용한다. : 보편적인 것을 사용해야 나중에 찾아보기 편함
  • 키페어 : 원격접속하러 들어갈 수 있는 키. 잃어버리면 aws에서도 안 찾아줌.
    (키페어이름 : spartakeypair)

2) EC2 서버 종료

  • 대상 인스턴스에 마우스 우클릭 > 인스턴스 상태 > 중지 또는 종료

3) AWS EC2에 접속하기 (Mac OS 기준)

SSH (Secure SHell protocol)

  • 다른 컴퓨터에 접속할 때 쓰는 프로그램. 다른 것들보다 보안이 상대적으로 뛰어나다.
  • 접속할 컴퓨터가 22번 포트가 열려있어야 접속가능하다. AWS EC2의 경우, 이미 22번 포트가 열려있다.
  • Mac OS는 ssh가 있어서 명령어로 터미널에서 바로 접근가능!
    : 맥 os는 ubuntu와 서버가 유사해서 헷갈릴 수 있음 ubuntu@~$로 되어있으면 원격접속 되어있는 것이다.


  • 내 keypair의 접근 권한을 바꿔주기
sudo chmod 400 받은키페어를끌어다놓기 
  • ssh로 접속하기
ssh -i 받은키페어를끌어다놓기 ubuntu@[퍼블릭 IPv4 DNS]

💡 연결하는 방법이 헷갈리면 참고

  1. 인스턴스 요약 페이지의 우측 상단에 연결 버튼을 클릭한다.

  2. SSH 클라이언트 탭 클릭한다. terminal에서 3번 4번 실행한다.

# 간단한 리눅스 명령어
ls: 내 위치의 모든 파일을 보여준다. (list)

pwd: 내 위치(폴더의 경로)를 알려준다.

mkdir: 내 위치 아래에 폴더를 하나 만든다. (make directory)

cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다. (change directory)

cd .. : 나를 상위 폴더로 이동시킨다.

cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기

rm -rf [지울 것]: 지우기

sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다. (superduser do)
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)

chmod : 파일 또는 폴터의 권한을 변경할 때 사용 (change mode)

👉 서버 세팅하기


1) filezilla로 업로드하기

  • filezilla 실행 및 설정
  • 왼쪽이 내 컴퓨터, 오른쪽이 원격 컴퓨터
  • test.py 만들어서 업로드 후 실행해보기
# home 디렉토리로 이동
cd ~

# 실행. 콘솔창에 hellow world!가 뜨는 것을 확인 할 수 있습니다.
python3 test.py

2) 서버환경 통일하기

지금 막 컴퓨터를 구매한 상태로 세팅 (업그레이드, DB설치, 명령어 통일 등)을 해줘야 이용할 때 편하다.

  • 세팅할 파일 initial_ec2.sh (shell script)을 filezilla로 업로드 후 터미널에서 실행
sudo chmod 755 initial_ec2.sh
./initial_ec2.sh

✋ 실제 업무에서는 아래 내용을 인프라 엔지니어 또는 개발 팀장님이 해두는 경우가 많다.

1) 한국시간 세팅
2) 파이썬 (python3 → python)
3) pip (pip3 → pip)
: 패키지 설치할 때 파이참에서는 클릭으로 했는데 이를 대신할 것
4) mongoDB 설치
mongo 명령어로 mongodb에 명령을 내리는 상태로 됨 (거의 안씀)
exit으로 끝냄
5) 포트포워딩 (80포트 → 5000포트)
: 80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어

  • Robo3T에서 "내 컴퓨터에서" → "서버에 있는 mongoDB"에 접속하기
    connectcreate → 접속 정보 세팅

    Authentication 탭에서
  1. Perform authentication 체크
  2. 앞서 세팅 시 설정한 아이디, 비밀번호 입력

초기 세팅 망한 것 같으면 인스턴스 종료하고 다시 하는 것이 빠름

profile
훈이야 화이팅

0개의 댓글