전에 만들었던 팬명록 완성본을 filezilla로 EC2에 업로드해보자.
- 파일질라에서 homework 폴더 안에 app.py 파일, static, templates 폴더를 컨트롤키를 누른 상태에서 선택하고 드래그 드롭으로 EC2 인스턴스의 home/ubuntu/sparta 폴더에 업로드하자.
- 그리고 - 실행!!
폴더에 업로드
ls 입력해보면 업로드한 세 개가 나온다.
python app.py
flask가 깔려있지 않다는 메시지
pip로 패키지를 설치하기
file → setting →.. 에서 + 버튼 누르고 설치했던 작업을, 명령어로 하면 이렇게 된다.
pip install flask
flask 설치
pymongo가 깔려있지 않다는 메시지
다시 python app.py 입력해 보면 pymongo가 깔려 있지 않다는 메시지가 뜬다.
패키지들도 설치하기
pip install pymongo dnspython
pymongo와 dnspython를 설치한 모습
flask 서버를 실행해보기
아래 명령어로 flask 서버를 실행한다.
python app.py
서버 실행한 모습
서버 실행이 되면, 크롬 브라우저 창에 아래와 같이 입력한다.
http://[내 EC2 IP]:5000/
아직, 작동하지 않는 모습! → AWS에서 약간의 설정이 더 필요하다.
AWS에서 5000 포트를 열어주기
EC2 서버(=가상의 내 컴퓨터)에서 포트를 따로 설정하는 것 외에도, AWS EC2에서도 자체적으로 포트를 열고/닫을 수 있게 관리를 하고 있다.
→ 그래서 AWS EC2 Security Group에서 인바운드 요청 포트를 열어줘야 한다.
일단, EC2 관리 콘솔로 들어가서 보안 그룹(영문: Security Group)을 눌러 들어간다.
launch-wizard-1 이라고 쓰여 있다
해당 보안그룹을 클릭
Edit inbound rules를 선택
두 가지 포트를 추가해보자.
→ 80 포트: HTTP 접속을 위한 기본 포트
→ 5000 포트: flask 기본 포트
Anywhere-IPv4 를 클릭
브라우저에 드디어 나온다.
포트 번호 없애기 - 기본 개념
이미 포트 포워딩 세팅을 해뒀기 때문에, 여기서는 개념만!
- 지금은 5000 포트에서 웹 서비스가 실행되고 있다. 그래서 매번 :5000이라고 뒤에 붙여줘야 하는데 뒤에 붙는 포트 번호를 없애려면 어떻게 해야 할까?
- http 요청에서는 80 포트가 기본이기 때문에, 굳이 :80을 붙이지 않아도 자동으로 연결이 된다.
- 포트 번호를 입력하지 않아도 자동으로 접속되기 위해, 우리는 80 포트로 오는 요청을 5000 포트로 전달하게 하는 포트 포워딩(port forwarding)을 사용해보자.
- 리눅스에서 기본으로 제공해주는 포트 포워딩을 사용할 것이다. 그림으로 보면 아래와 같다.
리눅스 자체
다시 접속해보자.
- http://내 아이피 → 잘 작동하는 것을 확인할 수 있다.
- 이제 app.py 파일을 수정하고, 다듬어서 올리면 진짜 프로젝트가 된다.