AWS-Lightsail로 서버 배포하기

AWS
날짜 없음

1 오전 8

1. 인스턴스 생성

1-1. AWS 콘솔 접속

  • AWS 접속
  • AWS 계정으로 로그인
  • 인스턴스 생성" 버튼 클릭
    2

1-2. 인스턴스 위치 선택

  • 리전: 아시아 태평양(서울) - ap-northeast-2 선택

1-3. 플랫폼 및 블루프린트 선택

  • 플랫폼: Linux/Unix 선택
  • 블루프린트:
    • OS 전용 탭 선택
    • Ubuntu 22.04 LTS 선택 (최신 안정 버전)
      3

1-4. 인스턴스 플랜 선택

  • 가장 저렴한 $5/월 플랜 선택함

1-5. 인스턴스 이름 지정

  • 이름: 원하는 이름
  • "인스턴스 생성" 클릭

2. STEP 2: 고정 IP 할당

  • 인스턴스가 재시작되어도 IP가 변경되지 않도록 설정

2-1. 네트워킹 탭

  • Lightsail 홈에서 "네트워킹" 탭 클릭
  • "고정 IP 생성" 클릭

2-2. 고정 IP 설정

  • 위치: 서울 리전 선택
  • 인스턴스 연결: 방금 만든 인스턴스 선택
  • "생성" 클릭
  • 고정 IP 주소 확인 (예: 13.125.XXX.XXX)

3. 방화벽 설정

  • Node.js 서버 포트를 열어줘야함

3-1. 네트워킹 설정

  • Lightsail 홈 → 인스턴스 클릭
  • "네트워킹" 탭 클릭
  • "규칙 추가" 클릭

3-2. 포트 규칙 추가

  • 최종 방화벽 규칙:
    • SSH (22) ← 기본
    • HTTP (80) ← 기본
    • HTTPS (443) ← 새로 추가
    • Custom (4000) ← 새로 추가

4.SSH 접속 및 서버 환경 설정

4-1. SSH 연결

4

  • Lightsail 콘솔에서 인스턴스 클릭
  • 오른쪽 상단 "연결" 아이콘 (터미널) 클릭
  • 브라우저에서 터미널 열림

4-2. 시스템 업데이트

sudo apt update && sudo apt upgrade -y

4-3. Node.js 설치 (최신 LTS 버전)

# Node.js 20.x LTS 설치
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# 버전 확인
node --version  # v20.x.x
npm --version   # 10.x.x

4-4. PM2 설치 (프로세스 관리자)

sudo npm install -g pm2

5. 서버 코드 업로드

5-1. Git 설치 및 코드 클론

# Git 설치
sudo apt install -y git

# 작업 디렉토리 생성
mkdir ~/apps && cd ~/apps

# GitHub에 코드가 있다면
git clone https://github.com/your-username/your-repo.git
cd your-repo/do_it_server

# 또는 특정 폴더만
# (먼저 GitHub에 코드를 푸시해야 함)

6. 의존성 설치 및 환경변수 설정

6-1. npm 패키지 설치

cd ~/apps/do_it_server
npm install --production

6-2. 환경변수 파일 생성

nano .env

6.3 로컬에 있는 파일(깃헙에 없는 환경변수 등) 업로드

  • 파일 생성후 환경변수 입력후 "ctrl + O" 누르고 "ctrl + X"로 터미널 나오기

7. 서버 실행 및 PM2 설정

7-1. 테스트 실행

cd ~/apps/do_it_server
node server.js

7-2. PM2로 프로덕션 실행

# PM2로 서버 시작
pm2 start server.js --name "do-it-server"

# 상태 확인
pm2 status

# 로그 확인
pm2 logs do-it-server

7-3. PM2 자동 시작 설정

# 부팅 시 자동 시작
pm2 startup
# ↑ 출력된 명령어 복사해서 실행 (sudo로 시작)

# 현재 프로세스 저장
pm2 save

7-4. 유용한 PM2 명령어

pm2 restart do-it-server  # 재시작
pm2 stop do-it-server     # 중지
pm2 delete do-it-server   # 삭제
pm2 logs                  # 실시간 로그
pm2 monit                 # 실시간 모니터링

8. Nginx 설정 (HTTPS 및 도메인용)

8-1. Nginx 설치

sudo apt install -y nginx

8-2. Nginx 설정 파일 생성

// 아래 명령어로 파일 생성후
sudo nano /etc/nginx/sites-available/do-it-server

// 아래 내용 입력
server {
    listen 80;
    server_name 13.125.XXX.XXX;  # 고정 IP 입력

    location / {
        proxy_pass http://localhost:4000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}

8-3. Nginx 활성화

# 심볼릭 링크 생성
sudo ln -s /etc/nginx/sites-available/do-it-server /etc/nginx/sites-enabled/

# 기본 설정 제거 (선택)
sudo rm /etc/nginx/sites-enabled/default

# 설정 테스트
sudo nginx -t

# Nginx 재시작
sudo systemctl restart nginx

9. 테스트

9-1. 브라우저에서 테스트

http://13.125.XXX.XXX/ <- 고정아이피로 접속
또는
http://13.125.XXX.XXX:4000/  (Nginx 없이 직접 접속)

10. 유지보수 및 관리

10-1. 서버 로그 확인

# PM2 로그
pm2 logs do-it-server

# Nginx 로그
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

10-2 .코드 업데이트

cd ~/apps/do_it_server

# Git 사용 시
git pull origin main

# 의존성 재설치
npm install

# PM2 재시작
pm2 restart do-it-server

10-3. 서버 상태 모니터링

# CPU/메모리 사용량
htop

# 디스크 사용량
df -h

# PM2 모니터링
pm2 monit

11. SSL 인증서 발급

11-1. Cerbot설치

sudo apt update
sudo apt install snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

11-2. Nginx 설정 수정 (도메인 적용)

sudo nano /etc/nginx/sites-available/do-it-server
server {
    listen 80;
    server_name api.chacha-dev.com; # 본인의 서브도메인 입력

    location / {
        proxy_pass http://localhost:4000;
        # ... 나머지 설정은 동일
    }
}
  • 저장 후 Nginx 재시작: sudo systemctl restart nginx

SSL 인증서 자동 발급

sudo certbot --nginx -d api.chacha-dev.com

댓글

Top