오늘은 서버를 배포하는 과정을 공부했다.
Amazon에 프리티어 계정으로 등록한 뒤 인스턴스를 생성하고 Node.js로 만든 프로그램을 배포해보았다.
팀 프로젝트를 하면서 서버와 클라이언트를 따로 작업하게 되었는데 클라이언트에서 테스트하기 편하도록 Amazon을 이용해 배포를 진행하였다.
(팀 프로젝트 코드를 올릴 수 없으니... 임의로 작성한 간단한 서버 코드이다.)
const express = require('express');
const app = express();
const config = require('./config/index');
const { SERVER_PORT } = config;
app.get('/', (req, res) => {
res.json({text: "HELLO"})
});
app.listen(SERVER_PORT || 5000, () => {
console.log(`Server on port ${SERVER_PORT || 5000}`);
});
정말 간단한 코드이다.. 서버 코드는 미리 GitHub에 올려준다.
다음으로 Amazon에 들어가 인스턴스를 생성해준다.
(난 프리티어 계정이므로 프리티어에서 사용 가능한 Ubuntu Server 20.04 LTS를 사용했다.)
다음으로 인스턴스 유형을 선택하는데 프리티어 계정이라면 반드시 꼭꼭꼭 !!! 프리티어 사용 가능이라는 문구를 확인해야 한다!
그다음 검토 및 시작을 누르고 다음 화면에서도 시작하기를 누른다.
시작하기를 누르면 키 페어를 선택하거나 생성하라는 창이 뜨는데 나는 새로운 키 페어를 생성했다.
이 창은 다신 안 뜨므로 꼭 키 페어를 생성한 다음 키 페어를 다운로드 한 뒤 인스턴스를 시작해야 한다!
인스턴스가 시작 되었다 !!
인스턴스 보기를 눌러준다.
그럼 이제 내 인스턴스 목록이 나오는데 처음 인스턴스를 만든다면 Name가 -로 뜰 것이다.
그럼 이름을 바꿔준다. (나는 다 가렸다..)
인스턴스에 관한 정보이다.
이 인스턴스를 연결하려면 퍼블릭 IPv4 주소가 필요하다.
위의 사진에서 보이는 인스턴스 보기 상단에 연결 버튼을 눌러준다.
SSH 클라이언트를 클릭해준 뒤 연결에 필요한 것을 확인해주고 터미널을 열어 순서대로 실행해준다.
cd ~/.ssh // 홈 디렉터리 아래에 .ssh로 이동해준다. (만약 없다면 .ssh라는 폴더를 만들어주자)
mv ~/Downloads/~~~.pem ./ // 아까 다운로드 해준 pem 파일을 해당 디렉터리(.ssh)에 옮겨준다.
chmod 400 ~~~.pem // 아까 옮겨준 .pem 파일의 권한을 변경시킨다.
ssh -i ./~~~.pem ubuntu@퍼블릭 IPv4주소 // 퍼블릭 IPv4주소를 넣고 실행 시킨다.
이렇게 실행시키고 나면 터미널에 계정이 변환된 것을 볼 수 있다. (실행시킬 거냐고 물어보면 yes를 입력해준다.)
이 터미널에는 nodejs와 npm이 설치되어 있지 않으므로 설치해준다.
sudo apt get update // nodejs와 npm 설치 전에 업데이트 명령어를 실행해준다.
sudo apt install nodejs npm // nodejs와 npm을 설치해준다. 설치 여부를 물어본다면 y를 눌러준다.
미리 깃 허브에 올려놓은 레포지토리를 git clone로 가져온 뒤 npm install을 해주고 실행시켜준다.
서버가 정상적으로 실행된 것이 보인다.
그러나 아직은 퍼블릭 IP로 접속이 안되므로 인바운드 규칙을 편집해주어야 한다.
인스턴스 목록에서 스크롤을 넘기다 보면 보안 그룹 이름이 보이는데 이 이름을 가진 보안 그룹의 인바운드 규칙 탭으로 들어가서 편집을 해준다.
SSH만 있지만 사용자 지정 TCP로 서버의 포트 번호인 5000번을 넣어주고 어디서든 접근 가능하게 위치 무관으로 넣어준다.
또한 HTTP를 사용할 것이기 때문에 똑같이 위치 무관으로 규칙을 추가해준다.
변경된 규칙을 확인해준다.
퍼블릭 IPv4 주소를 복사해준 뒤
퍼블릭 IPv4 주소 :5000 으로 인터넷으로 접속해본다.
접속이 되는 것을 볼 수 있다.
서버를 계속 틀어두기보다 중지시켜둬야 한다.
잘못하면.. 과금이 부과되기 때문이다.
참고로 콘솔 창을 꺼두어도 계속해서 서버가 유지되도록 하고 싶다면 아까 그 콘솔에서 PM2를 설치해준다!
npm install pm2 // pm2를 설치해준다. (전역으로 설치해줘도 된다.)
sudo npm install -g pm2 // pm2 전역 설치시 sudo 권한으로 설치
pm2 start index.js // index.js를 pm2를 이용해 실행시킨다.
그리고 다시 웹 사이트에 접속해본다.
콘솔이 꺼져도 잘 접속이 되는 것이 보인다.
콘솔을 나갈 때는 exit를 입력해준다.
이제 배포가 완료되었다. 참고로 서버를 안 쓸 때는 꼭 잘 중지시켜주어야 한다.
'개발일지' 카테고리의 다른 글
Amazon EC2로 배포한 서버 https 적용시키기 (2) Route53과 Load Balancer (0) | 2021.02.04 |
---|---|
Amazon EC2로 배포한 서버 https 적용시키기 (1) 도메인 구매 및 DNS 등록 (4) | 2021.02.04 |
Nodemailer로 사용자에게 메일보내기 (0) | 2021.01.27 |
API 문서 작성하는 방법 (0) | 2020.12.30 |
댓글