AWS 서버 구매
AWS EC2를 사용해 리눅스 우분투 운영체제 컴퓨터를 빌릴 수 있다.
프리 티어 계정(무료)은 두 대 이상 동시 사용이 안되고 한 대만 사용 가능하다.
새로 발급하고 싶을 경우 인스턴스 중지가 아니라 인스턴스 종료를 눌러야 기존 컴퓨터가 반납된다.
서버 세팅
Window 기준 Git Bash를 켜서 아래와 같이 입력해 준다.
ssh -i keypair경로 ubuntu@퍼블릭IPv4주소
ssh는 secure shell protocol을 의미하는데, 다른 컴퓨터에 접속할 때 쓰는 프로그램으로 보안이 뛰어난 편이다.
keypair 경로는 인스턴스 생성할 때 만들어진 keypair 파일을 Git Bash에 가져다 놓으면 경로가 자동으로 들어가고,
퍼블릭 IPv4주소는 EC2 인스턴스 대시보드 하단에서 복사해 붙여넣을 수 있다.
Git Bash에서 붙여넣기 단축키는 Ctrl + V
가 아니라 Shift + Insert
를 이용하면 된다. (또는 우클릭 Paste)
나는 관리자 모드로 Git Bash를 열지 않아서 sudo 명령어를 앞에 같이 입력해 주었다.
key fingerprint 관련 메시지는 continue connecting에서 Yes를 입력해 준다.
그러면 ubuntu 서버에 정상적으로 접속된 것을 확인할 수 있다.
아래 5줄의 커맨드를 입력힌다.
# python3 -> python 으로 사용
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
# pip3 설치 -> pip 로 사용 (패키지 마법사)
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# port forwarding (80 포트 요청을 5000 포트로 리다이렉트)
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
HTTP 요청에서는 80 포트가 기본이기 때문에, :80을 붙이지 않아도 자동으로 연결된다. 따라서 포트 번호를 입력하지 않아도 5000 포트로 자동으로 접속하려면, 리눅스에서 기본으로 제공하는 포트 포워딩을 사용해 80 포트 요청을 5000 포트로 전달해 주면 된다.
이제 FileZilla를 실행하고 사이트 관리자 열기를 누른다.
우측에 입력을 마치고 연결을 누르면 된다.
호스트는 퍼블릭 IPv4 주소를 사용하고, 포트는 22를 입력해 준다. (22로 고정됨)
키 파일을 추가할 때는 확장자를 pem으로 바꾸면 보인다.
이제 만든 프로젝트를 EC2 서버에서 구동하기 위해 필요한 파일들을 업로드 한다.
Flask 서버 실행
app.py를 실행해 보면 flask 모듈을 찾을 수 없다고 한다.
pip install flask
아까 커맨드로 설치했던 pip 패키지 마법사를 사용하면 간단하게 설치할 수 있다.
이런 식으로 필요한 패키지들을 모두 설치해 주고 다시 app.py를 실행시킨다.
AWS EC2에서 인바운드 요청 포트를 열기 위해 인스턴스 대시보드에서 보안 탭 - 보안 그룹에 들어간다.
인바운드 규칙 편집(Edit inbound rules)을 누르고,
규칙 추가를 눌러서 아래처럼 5000번 포트와 80번 포트를 열어 준다.
소스는 Anywhere-IPv4를 선택한 뒤, 규칙 저장을 누른다.
이제 퍼블릭 IPv4 주소로 접속하면 프로젝트를 볼 수 있다.
SSH 원격 접속을 종료하더라도 서버를 실행시키려면 아래 명령어를 입력해 준다. (Ctrl + C
로 빠져나간 뒤)
nohup python app.py &
반대로 계속 돌아가는 서버를 강제 종료 하려면 아래 명령어를 입력한다.
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill
Reference >
- [스파르타코딩클럽] 웹개발 종합반 (항해99 사전 강의 수강 중)