[AWS] EC2 배포

Mark·2022년 8월 5일
1
post-thumbnail

미니 프로젝트를 진행함에 있어, 게시판 CRUD 구현과 서버 배포도 맡게 되었다. 사실 서버 배포 경험이 아예 없다고 해도 무방할 정도로 무지했었기 때문에 이 기회에 제대로 내 것으로 만들어보고 싶었다.

1. 서버 준비

  • 기존에 aws로 실습한 계정이 있어서, 서버를 이미 발급받은 상태였다.

2. 프로젝트와 연결

1) 발급받은 퍼블릭 IP 주소에 접속한다.

$ ssh -i [key페어 파일 넣기] ubuntu@[퍼블릭 ip주소]

2) 서버 세팅

  • 접속 전에 5000 포트 열어주기
    • EC2 관리 콘솔 → 보안그룹 → launch-wizard-1 클릭
  • 두 가지 포트 추가 (둘 다 Anywhere-IPv4로 설정)
    • 80포트 : HTTP 접속을 위한 기본 포트
    • 5000포트 : Flask 기본 포트
  • 아래 명령어 터미널에 입력(5000포트로 넘겨주기 위한 명령어)
**# port forwarding : 80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어(꼭 해야함 중요!!)**
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

3) 프로젝트 파일 가져오기

  • 처음에 file zilla로 실행할 프로젝트를 가져왔는데, 파일 용량도 크고 중간에 서버 연결이 끊겨서 진전이 없었다. 그래서 팀장님의 도움으로 다음과 같이 진행했다.

  • clone repository

    git clone [프로젝트 주소]
  • into repository

    cd [레포지토리]
  • package install

    • 실행하는데 필요한 패키지 설치

    • 메모! pip install dotenv로 했다가 에러가 발생했는데, pip install python-dotenv로 해야 한다!

      pip install pymongo
      pip install python-dotenv
      pip install dnspython
  • .env(gitignore되어있는) 파일을 넣어준다.

    • 중요 정보가 있기 때문에 비공개로 설정되어 있고, 따로 가지고 있던 .env파일을 repository에 넣어주었다.
  • 이렇게 진행하고 해당 주소로 들어갔는데도 해당 주소로 안들어가졌다.

  • 그래서 다음과 같이 진행

    • 아래 코드를 입력해주니까 실행 됨!
flask run --host=0.0.0.0

3. nohup 설정

1) 서버가 계속 실행되도록 설정

  • 실행할 프로그램이 있는 파일 경로가 맞는지 꼭 확인!
  • flask run --host=0.0.0.0 : 모든 퍼블릭 ip를 수신하도록 지시
nohup flask run --host=0.0.0.0

2) nohup시, 강제 종료 시켜줘야 함

  • 강제 종료 시, 해당 경로가 맞는지 다시 확인!

  • 이 명령어를 못 찾아서 포드님의 도움을 받았다…그저 갓……👍🏻

kill $(pgrep -f flask)

aws는 공부가 많이 필요한 것 같다. 이번 미니 프로젝트를 준비하면서 덕분에 좋은 경험과 공부가 됐지만 배포하는 과정에서 너무 헤맸기때문에 앞으로 aws에 대해서도 더 공부해야 할 필요성을 느꼈다.

profile
개인 공부 정리

0개의 댓글