-
IntelliJ IDEA와 Spring Boot로 배우는 환경별 설정 완벽 가이드: 개발부터 배포까지!🌱 Spring 프레임워크 2024. 12. 31. 11:53728x90
1. 인텔리제이 파일 생성 및 코드 작성
1.1파일 생성
IntelliJ IDEA에서 src/main/resources 디렉토리에 다음 두 개의 YAML 파일을 생성합니다.
- application-dev.yml: 개발 환경 설정 파일
- application-prod.yml: 운영 환경 설정 파일
참고: resources 폴더에 파일을 생성하는 방법은 이전 답변을 참고해주세요.
1.2 설정 값 입력
각 YAML 파일에 환경에 맞는 설정 값을 입력합니다.
application-dev.yml (개발 환경)
YAMLspring: 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 (운영 환경)
YAMLspring: 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)을 생성하고, 활성 프로파일을 설정합니다.
YAMLspring: 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 기준)
Bashsudo yum update
Bashsudo 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 파일을 실행합니다.
Bashjava -jar <JAR 파일 이름>.jar
Bashsudo java -jar -Dspring.profiles.active=food_db -Dserver.port=8081 food_db-0.0.1-SNAPSHOT.jar
728x90'🌱 Spring 프레임워크' 카테고리의 다른 글
Spring Boot에서 @ (어노테이션) 활용하기 (0) 2025.01.09 초보 개발자도 쉽게 이해하는 API 명세서 작성 가이드: 회원가입 API 완벽 분석 (0) 2025.01.05 IntelliJ IDEA & JPA 초보자 가이드: API 명세서 확인 후 데이터베이스 컬럼 생성부터 데이터 입력까지! (0) 2025.01.04 Spring Boot 소개 (3) 2024.12.22