EZSET 프로젝트의 기록
AWS Management Console 에 로그인하고 EC2 서비스를 클릭해준다.

인스턴스 시작을 눌러준다.

프리티어만을 체크해주고 ubuntu Server를 선택한다.
t2 micro를 선택한다.
상단에 6.보안 그룹 구성을 선택하고 아래와 같이 작성해 준다.

22번은 SSH사용, 5000번은 Node.js API 포트, 5050번은 socket.io를 위해 사용한다.

public DNS,IPv4 주소를 확인한다.
Download it here을 눌러 PuTTY 를 다운로드하고 설치한다.

Type of key to generate 는 RSA로 Number of bits in a generated key는 2048로 지정한다.Action탭에서 Load버튼을 클릭 하고 우측 하단의 파일 형식을 All Files(*.*)선택 후 [1]에서 저장한 프라이빗 키를 선택한다.


Sabe private key를 선택하여 파일을 저장한다.




ubuntu@public_dns_name 형태로 입력한다.
public_dns_name 은 [1]에서 확인한 주소이다.
ex) ubuntu@ec2-@-@@-@@@-@@.us-east-2.compute.amazonaws.com
Port 는 22, Connection type은 SSH 로 설정한다.

Category에서 Connection 선택 후 Seconds between keepalives에 180 입력keepalive데이터를 자동 전송하게 한다.
Category에서 Connection-SSH-Auth를 선택 후 Private key file for authentication에 [2.2]에서 생성한 PuTTY 형식의 프라이빗 키를 선택한다.
Category에 Session(처음화면)으로 돌아와서 Saved Sessions에 구별할 수 있는 이름을 작성하고 Save버튼을 눌러 현재까지의 설정을 저장한다.
Saved Session에서 지정한 이름을 클릭 후 Load 버튼을 누르면 현재 적용한 설정값을 불러와서 편하게 SSH 접속을 할 수 있다.Open버튼을 눌러 세션을 실행한다.
예를 눌러준다.

sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod
sudo apt-get install -y nginx
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw --force enable
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install -y yarn
npm install -g pm2
sudo rm /etc/nginx/sites-available/default
sudo vim /etc/nginx/sites-available/default
# /etc/nginx/sites-available/default
server {
listen 80 default_server;
server_name _;
# node api reverse proxy
location / {
proxy_pass http://127.0.0.1:5000/;
}
}
sudo systemctl restart nginx
실행은 EZSET/tools/에 존재하는 update.sh스크립트에 자동화 되어있습니다.
update.sh 내용은 아래와 같습니다.(20-03-01)
(update.sh)
#!/bin/bash
echo "====PULL EZSET===="
cd ./../
git fetch --all
git reset --hard origin/master
git pull
echo "====ENV SETTING===="
export DATABASE_URI=mongodb://localhost:27017/ezset
export PORT=5000
export SOCKET_PORT=5050
export JWT_SECRET=somesecretwowowowokasjdk
echo " DATABASE_URI : $DATABASE_URI"
echo " PORT : $PORT"
echo " SOCKET_PORT : $SOCKET_PORT"
echo " JWT_SECRET : $JWT_SECRET"
echo "====start service===="
cd ./frontend
yarn
yarn build
cd ./../backend
yarn
yarn build
yarn start
echo "====================="
최신버전을 강제로 pull` 합니다.DATABASE_URI : MongoDB의 URI입니다.PORT : 서버 api가 통신할 포트번호를 지정합니다.SOCKET_PORT : socket.io를 위한 포트번호를 지정합니다.JWT_SECRET : 로그인과 비밀번호관리를 위한 JWT Key를 지정합니다.yarn, yarn build명령을 실행해 빌드합니다.home/ubuntu 디렉토리입니다.git clone https://github.com/Tekiter/EZSET.git
https://github.com/Tekiter/EZSET.git 위치에 레포지토리 주소를 입력합니다.
update.sh 스크립트의 권한을 수정해 줍니다.cd ./EZSET/tools
sudo chmod a+x update.sh

pm2로 update.sh스크립트를 실행합니다.pm2 start --name EZSET update.sh

log를 확인하려면 pm2 log명령을 입력하면 됩니다.pm2 log

log 확인중 ctrl+c로 빠져나올 수 있고, pm2 실행 목록은 pm2 list를 통해 확인이 가능합니다.
서버를 종료시키고 싶다면 pm2 delete all명령을 통해 pm2실행을 중지할 수 있습니다.
pm2 log명령으로 log 확인시 아래와 같이 되어있다면


프로젝트의 전체 코드는 EZSET github 에서 확인하실 수 있습니다.