EC2 접속 및 환경설정

minpractice_jhj·2025년 3월 24일

AWS

목록 보기
4/10

✅ EC2 인스턴스 SSH 접속 (Ubuntu OS 기준)

AWS EC2 인스턴스(우분투 OS)에 SSH로 접속하는 방법을 정리했습니다. 🚀



✅ 1️⃣ 다운로드 폴더로 이동 (Windows CMD 기준)

  1. 직접 경로 입력하기
cd C:\Users\hwija\Downloads
  1. 다운로드 폴더에 키 파일이 있는지 확인
dir

✅ 2️⃣ SSH 접속 명령어

AWS EC2에 연결하려면 로컬 터미널에서 아래 명령어를 실행하면 됩니다.

ssh -i "myServerKey.pem" ubuntu@ec2-43-201-64-159.ap-northeast-2.compute.amazonaws.com

🔹 명령어 설명

  • ssh → 원격 서버에 접속하는 명령어
  • i "myServerKey.pem" → EC2 생성 시 받은 키 파일 (.pem)을 사용
  • ubuntu@ec2-43-201-64-159.ap-northeast-2.compute.amazonaws.com
    • ubuntu → 우분투 기본 사용자 계정
    • ec2-43-201-64-159.ap-northeast-2.compute.amazonaws.com → EC2 퍼블릭 IP or 도메인

  • ✅ 3️⃣ SSH 접속 단계별 과정

    🔹 1단계: 키 파일이 있는 폴더로 이동

    터미널(Git Bash 또는 VS Code 터미널)에서 .pem 파일이 있는 폴더로 이동합니다.
    cd ~/Downloads  # 예시 (키 파일이 있는 폴더로 이동)

    🔹 2단계: 키 파일 권한 설정

    보안을 위해 .pem 키 파일의 권한을 제한해야 합니다.
    chmod 400 myServerKey.pem

    🔹 3단계: SSH 접속 실행

    이제 아래 명령어를 실행해서 EC2에 접속합니다.
    ssh -i "myServerKey.pem" ubuntu@ec2-43-201-64-159.ap-northeast-2.compute.amazonaws.com

    ✅ 성공적으로 연결되면 아래와 같은 화면이 출력됩니다.

    Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-1033-aws x86_64)
    ubuntu@ip-xxx-xx-xx-xxx:~$
    이렇게 나오면 EC2에 정상적으로 접속된 것입니다! 🎉
  • ✅ 4️⃣ SSH 연결이 안 될 때 체크할 사항

    🚨 1. "Permission denied" 에러 발생 시

    에러 메시지 예시
    Permission denied (publickey).
    해결 방법
    1. 키 파일 권한을 제한하는 명령어 실행 후 다시 시도

      chmod 400 myServerKey.pem
    2. 키 파일이 올바른 위치에 있는지 확인

      ```
      ls -l myServerKey.pem  # 파일이 있는지 확인
      ```

      🚨 2. "Connection timed out" 에러 발생 시

      에러 메시지 예시

      ssh: connect to host ec2-43-201-64-159.ap-northeast-2.compute.amazonaws.com port 22: Connection timed out

      해결 방법

    3. AWS 콘솔 → EC2 → 보안 그룹 → 인바운드 규칙 확인

      • SSH(22번 포트) 허용되어 있는지 체크
      • 소스: 0.0.0.0/0 (또는 내 IP) 설정
    4. EC2 인스턴스가 실행 중인지 확인
      - Running 상태인지 체크


✅ 5️⃣ SSH 접속 후 기본 환경 설정

SSH 접속이 완료되면 이제 기본 환경 설정을 해야 합니다.

🔹 필수 패키지 업데이트

sudo apt update && sudo apt upgrade -y

💡 최신 패키지로 업데이트하고 보안 패치도 적용하는 과정입니다.

🔹 JDK 17 설치 (Spring Boot 실행용)

sudo apt install -y openjdk-17-jdk
java -version  # 설치 확인

💡 Spring Boot 실행을 위해 JDK 17을 설치해야 합니다.

🔹 Git 설치 (코드 배포용)

sudo apt install -y git
git --version  # 설치 확인

💡 원격 저장소에서 코드를 가져올 때 필요합니다.

🔹 Docker & Docker Compose 설치 (PostgreSQL 실행용)

sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
docker --version  # 설치 확인

sudo chmod 666 /var/run/docker.sock

💡 나중에 PostgreSQL을 Docker로 실행할 거라 미리 설치해 두면 좋습니다.

  • PostgreSQL 설치

    1. 도커 이미지 다운로드

    도커 이미지 다운로드

    • 이제 권한 문제를 해결했으므로, 원하는 이미지를 다운로드 할 수 있습니다. 아래 명령어를 실행하여 PostgreSQL 이미지 16.6 버전을 다운로드합니다:

      docker pull postgres:16.6
    • 도커 권한 오류 발생

      ### **1. 도커 이미지 다운로드 시 권한 오류 발생**
      
      ### **문제**
      
      - 도커 이미지를 다운로드(`docker pull`) 하려고 할 때, 아래와 같은 권한 오류가 발생할 수 있습니다:
      
      ```
      permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
      ```
      
      ### **원인**
      
      - Docker 명령어를 실행할 권한이 없는 사용자로 실행하고 있기 때문에 발생하는 오류입니다. 기본적으로 Docker는 `docker` 그룹에 속한 사용자만 접근할 수 있습니다.
      
      ---
      
      ### **2. 권한 오류 해결 방법**
      
      ### **해결 방법**
      
      1. **Docker 그룹에 현재 사용자 추가**
          - Docker를 사용하려면, 현재 사용자가 `docker` 그룹에 속해야 합니다. 이를 위해 아래 명령어로 사용자를 `docker` 그룹에 추가합니다:
          
          ```bash
          sudo usermod -aG docker $USER
          ```
          
      2. **세션 종료 후 재로그인**
          - 사용자 그룹 변경 사항을 적용하려면 세션을 종료하고 다시 로그인해야 합니다. 현재 SSH 세션을 종료하려면 아래 명령어를 입력합니다:
          
          ```bash
          exit
          ```
          
          - 다시 SSH로 EC2 인스턴스에 접속하여 권한이 적용되었는지 확인합니다.
      3. **권한 확인 후 다시 시도**
          - Docker 그룹에 추가한 후, 다시 `docker pull` 명령어를 실행하여 문제가 해결되었는지 확인합니다:
          
          ```bash
          docker pull postgres:16.6
          ```
          

      2. 도커 컨테이너 실행

      컨테이너 실행

    • PostgreSQL 이미지를 성공적으로 다운로드한 후, 이제 Docker에서 컨테이너를 실행해야 합니다. 아래 명령어를 사용하여 컨테이너를 실행합니다:

      docker run --name my-postgres \
        -e POSTGRES_USER=pinup \
        -e POSTGRES_PASSWORD=rlaehgmlWkd0106 \
        -e POSTGRES_DB=pinup \
        -e TZ=Asia/Seoul \
        -v my_postgres_data:/var/lib/postgresql/data \
        -p 5432:5432 \
        -d postgres:16.6

      명령어 설명:

    • -name my-postgres: 컨테이너 이름을 my-postgres로 설정.

    • e POSTGRES_USER=pinup0106: PostgreSQL의 사용자 이름 설정.

    • e POSTGRES_PASSWORD=rlaehgmlWkd0106: PostgreSQL 사용자 비밀번호 설정.

    • e POSTGRES_DB=pinupdb: 기본 데이터베이스 이름 설정.

    • e TZ=Asia/Seoul: 타임존을 한국 시간(Seoul)으로 설정.

    • v my_postgres_data:/var/lib/postgresql/data: 데이터 지속성을 위해 Docker 볼륨을 설정.

    • p 5432:5432: 호스트와 컨테이너의 5432 포트를 연결.

    • d: 백그라운드에서 실행.

🔹 S3 연동을 위한 AWS CLI 설치

sudo apt install -y awscli
aws --version  # 설치 확인

💡 AWS S3와 연결할 때 필요한 도구입니다.

🔹 배포할 프로젝트 코드 가져오기 (Git Clone)

git clone <GitHub Repository URL>
cd <프로젝트 폴더>

💡 GitHub에서 프로젝트 코드를 가져와야 합니다.

  • EC2에서 application.yml 파일 생성 및 수정 과정

    1. application.yml 파일 생성하기

    EC2 서버에서 application.yml 파일을 생성하려면, vi 편집기를 사용하여 파일을 작성할 수 있습니다.

    application.yml 파일 생성 명령어

    bash
    복사편집
    cd ~/pinup/src/main/resources  # 프로젝트 디렉토리로 이동
    vi application.yml  # vi 편집기로 application.yml 파일 열기
    

    2. application.yml 파일 수정하기

    application.yml 파일을 수정하려면 아래 단계를 따르세요.

    PostgreSQL DB 연결 수정 (EC2 공인 IP 사용)

    PostgreSQL URL을 EC2의 공인 IP로 수정해야 합니다. EC2에서 실행 중인 PostgreSQL DB의 IP를 사용하여 연결합니다.
    yaml
    복사편집
    datasource:
      driver-class-name: org.postgresql.Driver
      url: jdbc:postgresql://<EC2-IP>:5432/pinup  # EC2 공인 IP 주소로 수정
      username: pinup
      password: rlaehgmlWkd0106
    
    • <EC2-IP>를 EC2의 실제 공인 IP 주소로 수정합니다.

      S3 엔드포인트 및 AWS IAM 인증 설정

      AWS S3 연결을 위해, S3 엔드포인트를 수정하고 AWS IAM 사용자의 Access KeySecret Key를 설정합니다.

      S3 엔드포인트 수정

      서울 리전 엔드포인트는 https://s3.ap-northeast-2.amazonaws.com입니다.

      yaml
      복사편집
      cloud:
        aws:
          s3:
            bucket: bucket0127  # 생성한 S3 버킷 이름
            endpoint: https://s3.ap-northeast-2.amazonaws.com  # 서울 리전 엔드포인트
          region.static: ap-northeast-2  # 리전 설정
          stack.auto: false
      

      AWS IAM 인증 정보 설정

      AWS IAM 사용자의 Access KeySecret Key를 환경 변수로 설정하려면, 아래와 같이 설정할 수 있습니다. IAM 사용자 인증 정보를 사용하여 AWS에 연결합니다.

      yaml
      복사편집
      cloud:
        aws:
          credentials:
            accessKey: ${AWS_ACCESS_KEY_ID}  # 환경 변수에서 읽어오기
            secretKey: ${AWS_SECRET_ACCESS_KEY}  # 환경 변수에서 읽어오기
      
    • 환경 변수 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY를 EC2에서 설정해 줍니다.

      3. vi 사용법

      vi 편집기를 사용하여 application.yml 파일을 수정하려면 아래 절차를 따르세요.

    1. 파일 열기:

      bash
      복사편집
      vi application.yml
      
    2. 편집 모드로 전환:

      • i를 눌러 편집 모드로 들어갑니다.
    3. 수정 후 저장하고 종료:

      • Esc 키를 눌러 명령 모드로 돌아갑니다.
      • :wq를 입력한 후 Enter를 눌러 파일을 저장하고 종료합니다.
    4. 수정 취소하고 종료:

      • Esc:q!를 입력하여 저장하지 않고 종료합니다.

🔹 Spring Boot 애플리케이션 실행 테스트

./gradlew clean build -x test

chmod +x gradlew # 권한 필요하면

🔹 Spring Boot 애플리케이션 빌드가 중단이슈

💡RAM과 프로그램 실행의 관계

RAM은 실행중인 프로그램의 속도와 실행과 관련이 있다.

그래서 만약 프로그램이 잡아먹는 RAM이 컴퓨터의 RAM의 크기를

초과한다면 해당 프로그램이 더디게 실행되거나 실행이 안될 수도 있는 것이다.

  • 우분투에서 스왑 파일 생성 및 설정 절차

    1. 스왑 파일 생성

    우분투 시스템에서 스왑 파일을 생성하려면 dd 명령어를 사용합니다. 예를 들어, 4GB 크기의 스왑 파일을 생성하려면 아래 명령어를 사용하세요:
    bash
    복사편집
    sudo dd if=/dev/zero of=/swapfile bs=128M count=32
    
    • if=/dev/zero: 0 바이트를 읽어옵니다.

    • of=/swapfile: /swapfile 파일을 생성하여 데이터를 씁니다.

    • bs=128M: 블록 크기를 128MB로 설정합니다.

    • count=32: 128MB 블록을 32번 작성하여 총 4GB 크기의 스왑 파일을 만듭니다.

      2. 스왑 파일 권한 설정

      생성된 스왑 파일의 권한을 수정하여 읽기 및 쓰기만 가능하게 합니다:

      bash
      복사편집
      sudo chmod 600 /swapfile
      

      3. 스왑 영역 설정

      생성된 스왑 파일을 시스템에서 사용할 수 있도록 포맷합니다:

      bash
      복사편집
      sudo mkswap /swapfile
      

      4. 스왑 파일 활성화

      이제 스왑 파일을 활성화하여 시스템에서 사용할 수 있게 합니다:

      bash
      복사편집
      sudo swapon /swapfile
      

      5. 스왑 파일 사용 확인

      활성화된 스왑 파일을 확인하려면 아래 명령어를 입력합니다:

      bash
      복사편집
      sudo swapon -s
      

      이 명령어를 실행하면, 현재 사용 중인 스왑 공간의 목록이 표시됩니다.

      6. 부팅 시 자동 마운트 설정

      시스템이 재부팅될 때마다 스왑 파일이 자동으로 활성화되도록 설정하려면 /etc/fstab 파일을 수정해야 합니다. 아래 명령어로 파일을 편집합니다:

      bash
      복사편집
      sudo vi /etc/fstab
      

      파일 끝에 다음 줄을 추가하고 저장 후 종료합니다:

      bash
      복사편집
      /swapfile swap swap defaults 0 0
      

      요약

      우분투에서 스왑 파일을 생성하고 설정하는 과정은 다음과 같습니다:

    1. dd 명령어로 스왑 파일 생성
    2. chmod 명령어로 권한 수정
    3. mkswap 명령어로 스왑 영역 설정
    4. swapon 명령어로 스왑 활성화
    5. /etc/fstab 파일을 수정하여 부팅 시 자동으로 스왑 파일이 활성화되도록 설정
profile
운동처럼 개발도 작은 실천이 성장의 힘이 된다고 믿는 개발자 minpractice_jhj 기록

0개의 댓글