ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Amazon EC2 프리티어 최초 세팅하기 #2 MySQL, Git 설치 및 백엔드 구동
    백엔드/AWS 2025. 1. 2. 23:28
    더보기

    목차

    1. MySQL 설치

    2. Java 설치

    3. Git으로 프로젝트 받아오기

    4. Springboot 빌드를 위한 사전준비

    5. 백엔드 구동

     

    본격적으로 프리티어 인스턴스에 필요한 패키지들을 깔고, 백엔드 서버를 구축하기 위한 여정을 시작해 봅니다.

    Backend엔 Database가 필요하고, Springboot Backend를 구동하기 위한 java jdk, 그리고 프로젝트 형상관리를 위한 Git 등이 필요합니다. git은 기본설치가 되어있기 때문에, MySQL과 Java만 설치하면 되겠네요.

     

    1. MySQL 설치

     

    putty를 통해 shell에 접속해서, MySQL을 설치합니다. 일단 apt update를 진행하고, apt-get install 명령어를 통해 mysql-server를 설치해줍니다. 설치가 완료되면 MySQL server에 접속합니다. 최초 접속은 root로 진행합니다!

    # MySQL 설치
    sudo apt update
    sudo apt-get install mysql-server
    
    # MySQL 접속
    
    mysql -u root -p

     

    다음으로는 MySQL 사용자를 생성합니다. 저는 혼자 개인프로젝트를 진행하고 있는데, 여러 명이 동시에 권한을 부여받아야 할 필요가 있을 때에는 여러 사용자와 권한 설정이 필요할 수 있습니다.

     

    -- 사용자 생성
    create user '%사용자이름%'@'%' identified by '%패스워드%'
    
    -- 권한 부여
    flush privileges;
    grant all privileges on *.* to '%사용자이름%'@'%';
    
    -- 외부 접속 허용!
    -- sql에서 나간 후
    cd /etc/mysql/mysql.conf.d
    
    -- vi editor로 mysqld.cnf 파일편집
    vi mysqld.cnf
    -- bind address 부분을 0.0.0.0으로 수정한 후 :wq
    
    -- mysql service 재시작
    sudo service mysql restart

     

     

    위 과정은 (1) 사용자를 생성하고 (2) 권한을 부여한 다음 (3) 외부에서 mysql에 접속할 수 있도록 bind address를 편집해주며, (4) 서비스를 재시작 하는 과정으로 구성됩니다.

     

    이제 서버에 세팅은 끝났고, 로컬에서 MySQL Workbench를 이용해 접속할 수 있습니다.

    Workbench Server connection 설정하는 방법

     

    위와 같이 Connection Name을 지정하고, Connection Method를 "Standard TCP/IP over SSH"로 변경합니다. 그리고 Parameters tab에 생성한 인스턴스의 IP정보, Key File, mysql user이름, password까지 입력한 후 [Test Connection]버튼을 누르고 테스트를 완료합니다.

     

    이렇게 로컬 MySQL Workbench에서 원격 MySQL에 접속하는 절차까지 완료됩니다.

     

    쉽죠?

     

     

    2. Java 설치

     

    EC2 instance에서 Java를 설치해줍니다. 별거 없이, openjdk-17-jdk를 설치해주도록 합니다. 자신이 사용할 Springboot의 버전에서 추천하는 Java 버전을 설치해주면 됩니다. 최근 Springboot 3.x.x 이 Spring 6.x.x 버전과 대응되기 때문에, Spring 6 이상부터는 Java 17 이상의 버전이 강력하게 추천되고 있다고 하니, 17을 설치해보도록 합시다.

     

    대응되는 Java 버전과 관련된 정보는 아래 블로그에 아주 자세하게 다루어져 있으니 참고하시기 바랍니다. :)

    [Java, Spring] 버전 선택 가이드 2024 (Java 21)

     

    sudo apt install openjdk-17-jdk -y

     

     

    3. Git으로 Project 받아오기

     

    Github에 repository를 만들고 ec2에 프로젝트를 받아오기 위해 아래의 과정들을 거쳐야 합니다.

    (1) SSH key 생성

    (2) github의 repository로 이동 후, setting > deploy key 카테고리에 복사해둔 ssh public key를 등록

    (3) ec2 인스턴스 shell에서 git clone 수행

     

    일단 key를 생성하는 방법부터 확인해 보겠습니다.

    -- ssh key를 생성합니다.
    -- 비밀번호를 설정하고 싶으면, 입력해주시면 됩니다.
    ssh-keygen -o -t rsa -b 4096 -C "이메일@주소.com"
    
    
    -- id_rsa.pub이 존재하는지 확인합니다.
    cd /home/%username%/.ssh 
    ls -a 
    
    -- public key를 콘솔에 출력해서, 이 내용을 복사해두도록 합니다.
    cat id_rsa.pub

     

    이 과정까지 끝나면, 생성한 키가 복사된 상태일 겁니다. github의 repository로 이동하여, setting의 deploy key 카테고리에 복사해둔 내용을 붙여넣기 하도록 합시다!

     

    Github에서 setting으로 들어가기

     

     Settings을 눌러서 세팅페이지에 접근해 주신 후, 좌측 탭에 'SSH and GPG keys'로 진입합니다.

     

    SSH and GPG keys page

     

    여기에서 우측 상단의 [New SSH key]를 누르면, SSH key를 등록할 수 있습니다.

     

    SSH key 등록화면

     

    Title에 적당한 이름을 입력하고, Key에 복사해둔 ssh key를 붙여넣기 한 후, 하단의 Add SSH key를 누르면 완료!

    여기까지 완료되면, 이제 git clone을 할 준비는 완료되었습니다.

     

     

    4. ec2에서 git clone 하여 내 프로젝트 코드 가져오기

    -- clone 전에 적당한 폴더를 홈에 생성한 후 진행하도록 합니다.
    mkdir backend
    cd backend
    
    -- git clone
    git clone git@github.com:%id%/%repository name%.git
    
    
    -- 빌드하기 전에 여기서 잠깐!!! 아래 설명을 읽고 진행하세요
    
    -- project build
    chmod +x gradlew
    ./gradlew build
    
    -- backend 실행
    java -jar ./build/libs/~~-SNAPSHOT.java

     

    여기서 잠깐, 프리티어에서 spring boot project를 build하면 멈춤현상이 있을 수 있습니다.

    순식간에 CPU 100%로 차버리거나, test때문에 build가 아예 멈춰버리는 현상들을 마주하게 될 수 있습니다.

    자, 빌드를 하고 실행시키기 전에 아래 작업들을 수행해주도록 합시다.

     

     

    참고. 빌드 무한로딩 현상 해결하기

    ec2 프리티어에서 제공하는 램은 1GB정도로, 매우 작은 램으로 동작합니다. 그래서 빌드하다가 ec2가 뻗어버리는 현상이 비일비재합니다. 재시작을해도 한참을 걸려야 리붓이 되므로... 빌드하기 전에 아래의 작업을 꼭 수행해주셔야 합니다.

     

    아래 내용은 리눅스에서 HDD의 공간 중 일부를 RAM처럼 사용하기 위한 방법입니다. 램이 2GB 미만인 경우, 권장되는 스왑 공간이 RAM용량의 2배이므로, 2GB 정도의 공간을 SWAP으로 사용하도록 설정해봅시다!

    # SWAP 메모리 2GB 할당
    sudo dd if=/dev/zero of=/swapfile bs=128M count=16
    # SWAP 파일에 대한 읽기, 쓰기 권한 UPDATE
    sudo chmod 600 /swapfile
    
    # 리눅스 스왑 영역 설정 및, 스왑 파일 사용 가능하도록 설정
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
    # 절차가 성공했는지 확인
    sudo swapon -s
    
    # 부팅 시 스왑 파일 활성화하기 위한 작업
    sudo vi /etc/fstab
    # 파일 끝에 다음 줄을 추가하고 :wq
    /swapfile swap swap defaults 0 0

     

    Springboot starter 프로젝트를 생성하면 build.gradle파일에 test를 하기 위한 코드가 자동삽입되어 있습니다. 이 부분이 build시 많은 메모리를 차지하게 될 수 있으니, 이 부분도 함께 삭제해주도록 합시다.

     

    build.gradle 파일의 최하단 세줄을 주석처리한다.
    
    // tasks.named('test') {
    //  	useJUnitPlatform()
    // }

     

    여기까지 진행이 되었으면, 이제 빌드를 진행하고 backend를 실행시켜 볼 준비가 완료되었습니다.

    이제 Backend 구축이 완료되었으니, 개발만 진행하면 되겠군요~

     

     

Designed by Tistory.