지난주에는 내 컴퓨터를 서버로 만들어서 프로젝트를 올렸다면
이번주는 AWS 서버를 이용해서 프로젝트를 배포해보았다.
서버는 항상 켜져있어야 하고, 많은 사람들이 웹페이지에 드나들어야하기때문에 보안상으로도 현실적으로도 내 컴퓨터로 서버역할을 하는 것은 불가능!
이번주차에는 AWS라는 클라우드 서비스에서 편리하게 서버를 관리하기 위해 EC2사용권을 구입해서 서버로 활용했다.
GIT BASH를 이용하여 SSH(Secure Shell Protocol)을 통해 EC2에 접속했다.
[SSH?]
- 다른 컴퓨터에 접속 할 때 쓰는 프로그램으로 다른 프로그램보다 상대적으로 보안이 뛰어남
- 접속할 컴퓨터의 22포트가 열려있어야 가능
리눅스 명령어를 통해 제어 하는 환경이 꽤나 낯설었다.
[간단한 리눅스 명령어]
ls: 내 위치의 모든 파일을 보여준다.
pwd: 내 위치(폴더의 경로)를 알려준다.
mkdir: 내 위치 아래에 폴더를 하나 만든다.
cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다.
cd .. : 나를 상위 폴더로 이동시킨다.
cp -r [복사할 것][붙여넣기 할 것]: 복사 붙여넣기
rm -rf [지울 것]: 지우기
sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)
서버 세팅은 filezilla를 이용해서 서버에 아래 내용들이 포함되어 있는 파일을 올려 진행했다.
EC2 컴퓨터의 시간대를 한국으로 맞추는 명령어
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
python3 명령어를 python으로 사용할 수 있게 하는 명령어
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
pip3 설치 및 pip3 명령어를 pip으로 사용할 수 있게 하는 명령어
# pip3 설치 sudo apt-get update sudo apt-get install -y python3-pip # pip3 대신 pip 라고 입력하기 위한 명령어 sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
mongoDB 설치 코드
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add - echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list sudo apt-get update sudo apt-get install -y mongodb-org
mongoDB 실행하기
sudo service mongod start
80포트로 들어오는 요청을 5000포트로 넘겨주는 명령어
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
EC2에서 기본으로 열려있는 22번포트 외에도 3개의 포트를 더 열어서 접속이 가능하도록 세팅해야 했다.
- 80포트: HTTP 접속을 위한 기본 포트
- 5000포트: FLASK 기본 포트
- 27017포트: 외부에서 mongoDB를 접속하기 위한 포트
이렇게 포트를 열어준 다음에
http://내아이피:5000
로 접속하면 사이트가 잘 작동하는 것을 확인 할 수 있었다.
가장 먼저 서버 DB를 관리하던 Robo 3T에서 EC2 컴퓨터를 연결해줬다.
다음으로 SSH 접속을 끊어도 EC2컴퓨터가 계속 작동할 수 있도록 nohub를 설정했다.
nohub 실행
nohup python app.py &
서버 강제 종료
# 아래 명령어로 미리 pid 값(프로세스 번호)을 본다 ps -ef | grep 'app.py' # 아래 명령어로 특정 프로세스를 죽인다 kill -9 [pid값]
다시켜기
nohup python app.py &
도메인은 gavia를 통해 구매했다.
.shop 도메인이 할인가로 매우 저렴!
DNS관리툴 > 도메인 연결 > DNS 설정 > 호스트이름(@), IP주소(EC2에서 생성한 IP주소) 입력
네임서버에 내 도메인-IP가 매칭되는 시간이 필요하기 때문에
약 10분정도 후 도메인으로 접속하면 사이트가 연결된 것을 확인 할 수 있다!
이렇게 서버에 웹페이지 올리기까지 완성!!
아직 너무 복잡하지만 이 내용을 바탕으로 조금씩 더 공부해서 열심히 익혀나가야 겠다. :)