ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IntelliJ IDEA와 Spring Boot로 배우는 환경별 설정 완벽 가이드: 개발부터 배포까지!
    🌱 Spring 프레임워크 2024. 12. 31. 11:53
    728x90

     

    1. 인텔리제이 파일 생성 및 코드 작성

    1.1파일 생성

    IntelliJ IDEA에서 src/main/resources 디렉토리에 다음 두 개의 YAML 파일을 생성합니다.

    • application-dev.yml: 개발 환경 설정 파일
    • application-prod.yml: 운영 환경 설정 파일

    참고: resources 폴더에 파일을 생성하는 방법은 이전 답변을 참고해주세요. 

    1.2 설정 값 입력

    각 YAML 파일에 환경에 맞는 설정 값을 입력합니다.

     

    application-dev.yml (개발 환경)

    YAML
     
    spring:
      datasource:
        url: jdbc:mysql://localhost:3307/food_db
        username: 아이디 
        password: 비밀번호
      jpa:
        show-sql: true
    
    jwt:
      secret: 55n7u6mdrnh!@%!@8yvb81y82!#@#1y82vb355n7u6mdrnh!@%!@8yvb81y
    
    • spring.datasource: 개발용 로컬 MySQL 데이터베이스 연결 정보를 입력합니다.
      • url: jdbc:mysql://localhost:3307/food_db (localhost와 3307은 실제 환경에 맞게 수정)
      • username: MySQL 사용자 이름
      • password: MySQL 비밀번호
    • spring.jpa.show-sql: SQL 쿼리를 콘솔에 출력하여 디버깅을 돕습니다.
    • jwt.secret: JWT 토큰 생성에 사용할 비밀 키 (security 설정 시 필요)

    application-prod.yml (운영 환경)

    YAML
     
    spring:
      datasource:
        url: jdbc:mysql://데이터베이스 서버주소:포트/food_db
        username: 아이디
        password: 비밀번호
      jpa:
        show-sql: false 
    
    jwt:
      secret: 55n7u6mdrnh!@%!@8yvb81y82!#@#1y82vb355n7u6mdrnh!@%!@8yvb81y
    
    server:
      port: 80
    
    • spring.datasource: 운영 환경의 RDS 데이터베이스 연결 정보를 입력합니다.
      • url: jdbc:mysql://RDS 주소:포트/food_db (RDS 엔드포인트와 포트 번호로 수정)
      • username: RDS 사용자 이름
      • password: RDS 비밀번호
    • spring.jpa.show-sql: 운영 환경에서는 SQL 쿼리 출력을 비활성화합니다.
    • jwt.secret: JWT 토큰 생성에 사용할 비밀 키 (개발 환경과 동일하게 유지하거나 다른 키 사용)
    • server.port: 애플리케이션이 실행될 포트를 80으로 설정합니다. (HTTP 기본 포트)

    1.3 활성 프로파일 설정

    application.yml 파일 (또는 application-default.yml)을 생성하고, 활성 프로파일을 설정합니다.

    YAML
     
    spring:
      profiles:
        active: dev  # 개발 환경에서는 dev 프로파일 활성화
    
    • spring.profiles.active: dev 또는 prod 값을 설정하여 활성화할 프로파일을 지정합니다.

    참고:

    • IntelliJ IDEA에서 실행 설정을 통해 활성 프로파일을 변경할 수도 있습니다. (Run/Debug Configurations > VM options)
    • -Dspring.profiles.active=prod 옵션을 사용하여 JAR 파일 실행 시 활성 프로파일을 지정할 수도 있습니다.

    1.4 배포 및 버전 관리

    코드를 수정할 때마다 JAR 파일을 새로 생성하고 배포해야 합니다. 이를 버전 업이라고 합니다. 버전 업을 통해 변경된 코드를 운영 환경에 반영합니다.

    참고:

    • 버전 관리 시스템 (예: Git)을 사용하여 코드 변경 이력을 관리하는 것이 좋습니다.
    • CI/CD (Continuous Integration/Continuous Deployment) 도구를 사용하여 자동으로 빌드 및 배포하는 것을 고려할 수 있습니다.

     

     

    2. 코드 패키징

    IntelliJ IDEA에서 개발한 Java 프로젝트를 JAR (Java Archive) 파일로 패키징해야 합니다. JAR 파일은 Java 애플리케이션을 실행하는 데 필요한 모든 클래스 파일과 리소스를 포함하는 압축 파일입니다.

    • 프로젝트 구조 확인: 프로젝트의 모든 의존성 (라이브러리)이 pom.xml (Maven) 또는 build.gradle (Gradle) 파일에 정확하게 선언되어 있는지 확인합니다.
    • 빌드 설정: IntelliJ IDEA에서 프로젝트를 빌드하고 JAR 파일을 생성합니다.
      • Maven: mvn clean package 명령어를 사용합니다.
      • Gradle: gradle clean build 명령어를 사용합니다.

    • JAR 파일 확인: target (Maven) 또는 build/libs (Gradle) 디렉토리에 생성된 JAR 파일을 확인합니다.

     

       수명주기 → clean →  더블 클릭 → package 더블클릭
           이 두가지를 완료 하고나면 왼쪽 메뉴바에 타겟이라는 폴더가 생깁니다.
       타겟 →  .jar 프로그램 생성된것을 확인 (파란색 아이콘)

     

    3. PuTTY 및 터널링 설정

    PuTTY는 SSH (Secure Shell) 클라이언트로, EC2 인스턴스에 안전하게 연결하는 데 사용됩니다. 터널링은 로컬 컴퓨터의 특정 포트를 EC2 인스턴스의 포트로 전달하는 기술입니다. 이를 통해 로컬에서 EC2 인스턴스의 데이터베이스에 접속할 수 있습니다.

    • PuTTY 다운로드 및 설치: PuTTY 웹사이트에서 PuTTY를 다운로드하고 설치합니다.
    • PuTTY 설정:
      • Session: EC2 인스턴스의 퍼블릭 IP 주소 또는 DNS 이름을 입력합니다.
      • Connection > SSH > Tunnels:
        • Source port: 로컬 컴퓨터에서 사용할 포트 번호를 입력합니다 (예: 3306).
        • Destination: localhost:3306 (EC2 인스턴스의 MySQL 기본 포트)을 입력합니다.
        • Add: 버튼을 클릭하여 터널을 추가합니다.
      • Session: 설정을 저장합니다.
    • PuTTY 연결: 저장된 세션을 선택하고 "Open" 버튼을 클릭하여 EC2 인스턴스에 연결합니다.

    4. EC2에 Java 17 설치

    EC2 인스턴스에 Java 17을 설치해야 JAR 파일을 실행할 수 있습니다.

    • SSH 접속: PuTTY 또는 터미널을 사용하여 EC2 인스턴스에 SSH로 접속합니다.
    • Java 설치: 다음 명령어를 사용하여 Java 17을 설치합니다. (Amazon Linux 2 기준)
    Bash
     
    sudo yum update

     

    Bash
    sudo amazon-linux-extras install java-openjdk17 -y
    



    • Java 버전 확인: java -version 명령어를 사용하여 Java 17이 정상적으로 설치되었는지 확인합니다.

    리눅스 명령어 

    1. 파일 및 디렉토리 관리

    더보기
    • ls: 현재 디렉토리의 파일 및 디렉토리 목록을 표시합니다. (ls -l 옵션을 사용하면 자세한 정보를 볼 수 있어요.)
    • cd: 디렉토리를 변경합니다. (cd ..는 상위 디렉토리로 이동, cd /home/user는 /home/user 디렉토리로 이동합니다.)
    • pwd: 현재 작업 중인 디렉토리 경로를 표시합니다.
    • mkdir: 새로운 디렉토리를 생성합니다. (mkdir new_directory는 new_directory라는 이름의 디렉토리를 생성합니다.)
    • rmdir: 빈 디렉토리를 삭제합니다. (rmdir empty_directory는 empty_directory라는 이름의 빈 디렉토리를 삭제합니다.)
    • rm: 파일이나 디렉토리를 삭제합니다. (rm file.txt는 file.txt 파일을 삭제합니다. rm -r directory는 directory 디렉토리와 그 안의 모든 파일을 삭제합니다.)
    • cp: 파일이나 디렉토리를 복사합니다. (cp file.txt file_copy.txt는 file.txt 파일을 file_copy.txt라는 이름으로 복사합니다.)
    • mv: 파일이나 디렉토리를 이동하거나 이름을 변경합니다. (mv file.txt new_file.txt는 file.txt 파일의 이름을 new_file.txt로 변경합니다.)
    • touch: 새로운 파일을 생성하거나 파일의 타임스탬프를 변경합니다. (touch new_file.txt는 new_file.txt라는 이름의 빈 파일을 생성합니다.)
    • cat: 파일의 내용을 화면에 출력합니다. (cat file.txt는 file.txt 파일의 내용을 화면에 출력합니다.)
    • less: 파일의 내용을 페이지 단위로 보여줍니다. (less long_file.txt는 long_file.txt 파일의 내용을 페이지 단위로 보여줍니다.)
    • head: 파일의 처음 몇 줄을 표시합니다. (head -n 10 file.txt는 file.txt 파일의 처음 10줄을 표시합니다.)
    • tail: 파일의 마지막 몇 줄을 표시합니다. (tail -n 5 file.txt는 file.txt 파일의 마지막 5줄을 표시합니다.)
    • find: 특정 조건에 맞는 파일을 찾습니다. (find . -name "*.txt"는 현재 디렉토리와 하위 디렉토리에서 .txt로 끝나는 파일을 찾습니다.)
    • grep: 파일에서 특정 패턴을 검색합니다. (grep "hello" file.txt는 file.txt 파일에서 "hello"라는 문자열을 포함하는 줄을 찾습니다.)

    2. 시스템 정보 확인

    더보기
    • uname: 시스템 정보를 표시합니다. (uname -a는 자세한 시스템 정보를 표시합니다.)
    • df: 디스크 사용량을 표시합니다.
    • du: 파일 및 디렉토리의 용량을 표시합니다.
    • free: 메모리 사용량을 표시합니다.
    • top: 시스템 프로세스 정보를 실시간으로 보여줍니다.
    • ps: 현재 실행 중인 프로세스 목록을 표시합니다.
    • who: 현재 로그인한 사용자 정보를 표시합니다.
    • w: 현재 로그인한 사용자와 그들이 실행 중인 프로세스 정보를 표시합니다.
    • date: 현재 날짜와 시간을 표시합니다.
    • cal: 달력을 표시합니다.

    3. 사용자 및 권한 관리

    더보기
    • useradd: 새로운 사용자를 추가합니다.
    • userdel: 사용자를 삭제합니다.
    • passwd: 사용자 비밀번호를 변경합니다.
    • groupadd: 새로운 그룹을 추가합니다.
    • groupdel: 그룹을 삭제합니다.
    • chown: 파일이나 디렉토리의 소유자를 변경합니다.
    • chmod: 파일이나 디렉토리의 권한을 변경합니다.

    4. 네트워크 관리

    더보기
    • ping: 네트워크 연결을 테스트합니다. (ping google.com은 Google 서버에 ping을 보냅니다.)
    • ifconfig: 네트워크 인터페이스 정보를 표시합니다.
    • iwconfig: 무선 네트워크 인터페이스 정보를 표시합니다.
    • netstat: 네트워크 연결 상태를 표시합니다.
    • ssh: 다른 컴퓨터에 안전하게 연결합니다.
    • scp: 다른 컴퓨터와 파일을 안전하게 주고받습니다.
    • wget: 웹에서 파일을 다운로드합니다.

    5. 시스템 관리

    더보기
    • shutdown: 시스템을 종료합니다. (shutdown -r now는 시스템을 재부팅합니다.)
    • reboot: 시스템을 재부팅합니다.
    • halt: 시스템을 정지합니다.
    • poweroff: 시스템 전원을 끕니다.
    • apt: (Debian/Ubuntu) 패키지를 설치, 업데이트, 삭제합니다.
    • yum: (CentOS/RHEL) 패키지를 설치, 업데이트, 삭제합니다.

    6. 기타 유용한 명령어

    더보기
    • man: 명령어에 대한 매뉴얼 페이지를 표시합니다. (man ls는 ls 명령어에 대한 매뉴얼 페이지를 표시합니다.)
    • echo: 텍스트를 화면에 출력합니다. (echo "Hello, world!"는 "Hello, world!"를 화면에 출력합니다.)
    • clear: 터미널 화면을 지웁니다.
    • history: 이전에 실행한 명령어 목록을 표시합니다.
    • alias: 명령어에 별칭을 지정합니다.
    • |: (파이프) 명령어의 출력을 다른 명령어의 입력으로 사용합니다. (ls -l | grep "txt"는 ls -l 명령어의 출력을 grep "txt" 명령어의 입력으로 사용합니다.)
    • >: 명령어의 출력을 파일에 저장합니다. (ls -l > file_list.txt는 ls -l 명령어의 출력을 file_list.txt 파일에 저장합니다.)
    • >>: 명령어의 출력을 파일에 추가합니다. (echo "New line" >> file.txt는 "New line"을 file.txt 파일에 추가합니다.)

     

    5. FileZilla 설정 및 파일 전송

    FileZilla는 FTP (File Transfer Protocol) 클라이언트로, 로컬 컴퓨터와 EC2 인스턴스 간에 파일을 전송하는 데 사용됩니다.

    • FileZilla 다운로드 및 설치: FileZilla 웹사이트에서 FileZilla를 다운로드하고 설치합니다.
    • FileZilla 설정:
      • Host: EC2 인스턴스의 퍼블릭 IP 주소 또는 DNS 이름을 입력합니다.
      • Protocol: SFTP (SSH File Transfer Protocol)를 선택합니다.
      • User: EC2 인스턴스의 사용자 이름을 입력합니다 (예: ec2-user).
      • Password: EC2 인스턴스의 비밀번호 또는 키 파일을 사용하여 인증합니다.
      • Port: 22 (SSH 기본 포트)를 입력합니다.
    • FileZilla 연결: "Quickconnect" 버튼을 클릭하여 EC2 인스턴스에 연결합니다.
    • 파일 전송: 로컬 컴퓨터에서 패키징한 JAR 파일을 EC2 인스턴스의 원하는 디렉토리로 전송합니다.

     

     


    6. 애플리케이션 실행

    EC2 인스턴스에서 JAR 파일을 실행합니다.

    • SSH 접속: PuTTY 또는 터미널을 사용하여 EC2 인스턴스에 SSH로 접속합니다.
    • JAR 파일 실행: 다음 명령어를 사용하여 JAR 파일을 실행합니다.
    Bash
     
    java -jar <JAR 파일 이름>.jar
    Bash
    sudo java -jar -Dspring.profiles.active=food_db -Dserver.port=8081 food_db-0.0.1-SNAPSHOT.jar 

     

     

    728x90
Designed by Tistory.