서버가 언제나 요청에 응답하려면
서버 컴퓨터가 항상 켜져있어야하고,
접근가능한 IP주소를 가지고 있어야 합니다.
하지만 로컬환경에서 작업을 해왔기 때문에
내 컴퓨터를 계속 켜둘수는 없겠죠😅
하지만, AWS(Amazon Web Service)의
클라우드 환경 리눅스 컴퓨터 EC2(Elastic Compute Cloud)를 사용하면
내 컴퓨터가 꺼져도 서버를 항상 켜놓을 수 있다는 사실!
01. AWS EC2서버 구매하기
https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2
https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2
ap-northeast-2.console.aws.amazon.com
OS(운영체제)로 ubuntu를 사용할거기 때문에 ubuntu server 18.04 혹은 20.04를 구매합니다.
Launch 버튼을 차례로 클릭하면 완료!
아래와 같은 key pair 창이 뜨면 create a new key pair 로 설정한 뒤
download - Launch 버튼 클릭!
02. AWS EC2 접속하기
EC2는 SSH(Secure Shell Protocol)프로그램으로 접속하는데
22번 포트가 열려있어야 접속이 가능합니다. EC2에서는 기본적으로 열려있답니다🤩
리눅스 컴퓨터는 '쉘 명령어'만으로 작동가능하기 때문에 몇가지 명령을 터미널에 입력해야 합니다.
sudo chmod 400 키페어드래그앤드롭
ssh -i 키페어드래그앤드롭 ubuntu@인스턴스퍼블릭IP주소
이렇게 하면 EC2 컴퓨터에 접속가능한 상태가 됩니다.
03. EC2 서버 세팅하기
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
04. FileZilla 로 EC2서버에 파일 업로드하기
FileZilla의 new site 를 클릭하면 아래와 같은 화면이 나오는데,
프로토콜 : SFTP
호스트 : 인스턴스의 퍼플릭 IP 주소
포트 : 22
로그온 유형 : 키 파일
사용자 : ubuntu
키 파일 찾아서 등록하면 내 컴퓨터와 EC2 서버 컴퓨터와의 연동이 완료됩니다👍
왼쪽이 내 컴퓨터, 오른쪽이 서버 컴퓨터 입니다. 드래그 앤 드롭하여 파일을 업로드 할 수 있습니다.
05. 크롬으로 접속하기
터미널에 아래 명령으로 EC2와 연동을 시킨 후
ssh -i 키페어드래그앤드롭 ubuntu@인스턴스퍼블릭IP주소
내 컴퓨터와 서버 컴퓨터의 환경을 동일하게 하기 위해
파이썬 라이브러리 세가지를 설치 해봅시다.
pip install pymongo dnspython flask
EC2에 폴더를 생성한 뒤 아래 명령을 실행하면
python app.py
정상적으로 실행이 되는 것을 확인할 수 있습니다🌈
자, 이제 서버는 구동이 되었습니다.
생성된 IP를 가지고 크롬에서 실행하기 위해서는 EC2 인스턴트 포트를 추가로 열어주어야 합니다.
생성된 인스턴스를 클릭하면 아래 화면이 뜹니다.
화면 아래쪽의 보안을 클릭하고 보안그룹 - 인바운드규칙편집 을 차례로 클릭합니다.
포트번호 5000번과 80번을 추가해주고 Anywhere IP로 지정한 뒤 규칙저장을 하면 포트 설정이 완료됩니다.
이제 크롬에서 생성된 IP 주소로 웹페이지를 출력할 수 있습니다👏
http://[내 EC2 IP]:5000/
서버 컴퓨터도 계속 켜져있고, 접근가능한 IP 주소도 생성을 하였는데
내 컴퓨터의 터미널이 종료되면 SSH는 효력을 잃고 맙니다...😰
그렇다면 서버 컴퓨터가 제 역할을 할 수가 없겠죠?
터미널이 꺼져도 SSH가 살아있게 하는 방법! 바로 'nohup' 입니다.
nohup python app.py &
파일에 변동사항이 있는 경우, 자동으로 업데이트 되지 않습니다.
이런 경우는 1) 강제종료 2) FileZilla 파일삭제 후 재업로드 3) nohup 재시작 하여 업데이트 합니다.
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill # 강제종료 명령어
06. 가비아 도메인 연결하기
도메인 구입 후 My가비아 - 서비스관리 - DNS관리툴에 접속합니다.
도메인을 선택하고 DNS 설정을 클릭!
호스트 : @
값/위치 : EC2의 인스턴스 퍼플릭 IP 주소 를 입력합니다.
저장을 누르면 IP주소와 도메인 연결 완료💜
10분 ~ 1시간 정도 기다리면,
크롬에서 도메인 주소로 접속할 수 있습니다!
대장정 끝에 배포가 완료되었습니다🙌