[AWS] EC2 시작및 서버연결

힐링힐링·2024년 9월 10일
0

/Users/kimjihun/Desktop/Security/AWS/giftProject_key.pem

EC2 인스턴스에 접속하여 Node.js 기반의 서버 환경을 세팅하는 방법을 단계별로 설명드리겠습니다. 이 가이드는 Ubuntu 또는 Amazon Linux 기반의 EC2 인스턴스를 기준으로 작성되었습니다.

1. EC2 인스턴스 시작 및 접속

먼저, AWS 콘솔에서 EC2 인스턴스를 생성하고 SSH를 통해 접속합니다.

  1. AWS 콘솔에서 EC2 인스턴스 생성:

    • 인스턴스를 시작할 때, Ubuntu 또는 Amazon Linux를 선택합니다.
    • 보안 그룹에서 SSH(포트 22)HTTP(포트 80)를 허용해야 합니다.
    • 키 페어를 생성하고 다운로드하여 EC2 인스턴스에 접근할 수 있도록 설정합니다.
  2. EC2 인스턴스에 SSH로 접속:

    • SSH를 사용하여 EC2 인스턴스에 접속합니다. 예를 들어, 다음 명령을 실행합니다:
      ssh -i /path/to/your-key.pem ec2-user@your-ec2-public-ip
      여기서 /path/to/your-key.pem은 AWS에서 생성한 키 파일 경로이고, your-ec2-public-ip는 EC2 인스턴스의 퍼블릭 IP 주소입니다.

2. 필요한 패키지 업데이트

접속 후, 먼저 시스템을 최신 상태로 업데이트합니다.

  1. 패키지 목록 업데이트:

    sudo apt update  # Ubuntu의 경우
  2. 필요한 기본 패키지 설치:

    sudo apt install -y build-essential  # Ubuntu

3. Node.js 설치

Node.js와 npm을 설치합니다.

  1. Node.js와 npm 설치:

    • NodeSource를 통해 설치합니다.
    curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -  # Ubuntu
    sudo apt install -y nodejs  # Ubuntu
  2. Node.js 설치 확인:

    node -v  # Node.js 버전 확인
    npm -v   # npm 버전 확인

4. Git 설치 및 프로젝트 다운로드

프로젝트를 EC2로 가져오기 위해 Git을 설치하고, GitHub에서 프로젝트를 클론합니다.

  1. Git 설치:

    sudo apt install git -y  # Ubuntu
  2. GitHub에서 프로젝트 클론:
    GitHub에서 프로젝트를 가져옵니다.

    git clone https://github.com/your-username/your-repo.git
    cd your-repo

5. 프로젝트 설정

프로젝트의 의존성을 설치하고 .env 파일을 설정합니다.

  1. 프로젝트 의존성 설치:
    package.json에 정의된 패키지를 설치합니다.

    npm install
  2. .env 파일 설정:
    프로젝트 루트 디렉토리에 .env 파일을 생성하고 필요한 환경 변수를 설정합니다. 예를 들어:
    your-database-host는 엔드포인트

    nano .env

    .env 파일 내용:

    DB_HOST=your-database-host
    DB_USER=your-username
    DB_PASSWORD=your-password
    DB_NAME=your-database-name
    PORT=3000

6. 서버 실행

이제 서버를 실행할 준비가 되었습니다.

  1. 서버 실행:

    npm start

    또는, package.json에 있는 다른 실행 명령을 사용할 수 있습니다.

  2. PM2로 서버 백그라운드에서 실행:
    PM2는 Node.js 애플리케이션을 관리하기 위한 프로세스 매니저입니다.

    PM2 설치:

    sudo npm install -g pm2

    PM2로 애플리케이션 실행:

    pm2 start 서버.js -- start
    pm2 save  # 서버 재부팅 후에도 프로세스 유지
    pm2 status  # 실행 중인 프로세스 확인

7. HTTP 요청 처리 설정 (Nginx 사용)

서버를 HTTP 요청을 처리하도록 설정하려면 Nginx를 사용할 수 있습니다.

  1. Nginx 설치:

    sudo apt install nginx -y  # Ubuntu
    sudo amazon-linux-extras install nginx1.12  # Amazon Linux
  2. Nginx 설정 파일 편집:

    sudo nano /etc/nginx/sites-available/default  # Ubuntu
    sudo nano /etc/nginx/nginx.conf  # Amazon Linux

    다음과 같이 Nginx 설정을 변경하여 포트 80으로 들어오는 요청을 Node.js 서버로 프록시합니다:

    server {
        listen 80;
        server_name your-ec2-public-ip;
    
        location / {
            proxy_pass http://localhost:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }
  3. Nginx 재시작:

    sudo systemctl restart nginx

8. 포트 허용 설정 (EC2 보안 그룹)

AWS 콘솔에서 보안 그룹을 열고 HTTP (포트 80)SSH (포트 22)에 대한 인바운드 규칙을 추가하여 서버에 접근할 수 있도록 설정합니다.

9. 서버 테스트

브라우저에서 EC2 퍼블릭 IP를 입력하여 서버가 정상적으로 동작하는지 확인합니다:

http://your-ec2-public-ip

10. 서버 유지관리

pm2로 서버 상태를 확인하고 관리할 수 있습니다:

pm2 status  # 서버 상태 확인
pm2 logs    # 로그 확인
pm2 restart all  # 모든 서버 재시작

결론:

이 과정을 통해 EC2 인스턴스에 Express.js 서버를 설정하고 실행할 수 있습니다. Nginx를 사용하여 포트 80에서 들어오는 요청을 Node

profile
블로그 이전합니다 https://james-kim-tech.tistory.com/

0개의 댓글