현재 진행 중인 프로젝트에서 이제까지 로컬에서 돌렸던 서버를 EC2로 배포하는데 드디어 성공했다! 아래 링크는 현재 진행 중인 On Air Super Live의 서버 리포지토리.
https://github.com/TeamGreyOrg/super_live_server
나중에 Readme.md에 추가하기 위해 미리 여기다가 오늘 작업한 내역을 글로 쓴다. 여기 글은 EC2를 발급받은 이후부터 진행한다.
1.node.js(NVM) 다운로드
먼저 ec2 터미널에서 nvm을 install한다. 글에서 설명하는 개발환경은 위 프로젝트의 개발환경임을 알려둔다.
nvm install 14.15.0
2. EC2 shell에서 git clone
git clone https://github.com/TeamGreyOrg/super_live_server.git
3. AWS에서 포트 설정
EC2 서버에서 포트를 따로 설정하는 것 외에도, AWS EC2에서도 자체적으로 포트를 열고/닫을 수 있게 관리를 하고 있다. 그래서 AWS EC2 Security Group에서 인바운드 요청 포트를 열어줘야 한다.
먼저 EC2 관리 콘솔로 들어간다. 인스턴스 → 보안 탭 으로 이동 → 보안 그룹 ‘sg-...’ 클릭 → 인바운드 규칙 편집 클릭해 해당 페이지로 이동한다. 현 프로젝트에서는 RTMP(1935), HTTP(80->8000), mongoDB(27017), websocket(3333) 서버를 사용하므로 각 서버에 해당하는 포트 넘버를 열어준다.
우리는 여기서 HTTP 포트를 8000으로 열 것이기에 포트포워딩(80으로 들어오는 포트를 8000으로 넘겨주기) 역시 작업해준다.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8000
4. mongoDB Setup
먼저 EC2에 mongoDB를 설치(자세한 설명은 홈페이지 링크 참조)한다. 아래 코드만 한 줄씩 입력하면 된다.
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
mongodb를 실행해본다. 아래 명령어를 입력했을 때 별 이상 없으면 잘 작동한다는 뜻.
sudo vi /etc/mongod.conf
# 실행. 아무 반응이 없으면, 잘 실행된 것!
sudo service mongod start
잘 되면 shell에 mongo를 입력해 mongo shell로 넘어간다.
mongo
admin 계정으로 변경한 다음, db.createUser()를 입력해 root 권한을 갖는 계정을 생성한다.
# admin으로 계정 바꾸기
use admin;
# 계정 생성하기
db.createUser({
user: 'username',
pwd: 'password',
roles: ['root']
})
config를 수정하기 위해 mongod.conf 파일을 vim으로 오픈한다.
sudo vi /etc/mongod.conf
들어가면 아래와 같이 보일텐데, mongoDB는 디폴트로 내부(아래 보이는 127.0.0.1)에서만 접속을 허용하고 있다. 따라서 외부에서 접근이 가능하도록 잠금을 풀어준다. 이를 위해 bindIp를 0.0.0.0으로 변경한다.
sudo vi /etc/mongod.conf
# 입력 모드 전환
i
bindIp: 0.0.0.0
#내용 저장: esc 누른 뒤 아래 명령어 입력
:wq
#mongoDB 재시작
sudo service mongod restart
이어서 Robo 3T를 켜 {EC2 ip 주소}:27017과 연결해준다.
그러면 EC2 서버 배포 끝!(일단은..)
'DevOps' 카테고리의 다른 글
[Docker]ARM에서 어떻게 AMD 이미지가 돌아가는 거지?(Feat. QEMU 에뮬레이션) (4) | 2023.03.20 |
---|---|
[사내 도커 스터디] #1 클라우드 컴퓨팅 (0) | 2023.02.08 |
[사내 도커 스터디] #0 Introduction (0) | 2023.02.08 |
[AWS/나만의무기]아키텍쳐 변경: S3와 Cloudfront(CDN)를 이용한 서버리스 온디맨드 스트리밍 설계 (0) | 2022.02.25 |
[AWS/나만의 무기 프로젝트]서비스 파이프라인 클라우드 배포 현황(EC2 서버 배포 + S3 스토리지 mounting) (0) | 2022.02.22 |