EC2 환경변수 설정하기

안수진·2024년 6월 23일

AWS 오류 해결하기

목록 보기
5/5
post-thumbnail

EC2 인스턴스에서 프로젝트를 직접 빌드하고
jar 파일을 실행시켜서 얻은 nohup.out파일을 직접 확인 해봤다.
EC2에서 애플리케이션 로그 확인하기

문제 원인

로그를 분석해보니 데이터베이스 환경 변수를 전혀 읽어오지 못하고 있었다.

사진에서 처럼 MySQL 연결을 위한 환경 변수를 EC2 인스턴스는 전혀 모르고 있었다.


.bashrc 파일에 환경변수 설정

.bashrc 파일에 환경변수를 설정했지만
main 브랜치에서 push하고 서버가 배포되었을때 서버는 여전히 응답하지 않고
ec2에서 프로젝트를 다시 빌드해야 서버가 제대로 동작했다.




🚨 환경 변수를 설정했는데도 서버는 왜 제대로 동작하지 않을까?

CodeDeploy는 시스템 서비스로서 동작하기 때문에,
사용자 로그인 세션에서만 로드되는 .bashrc 파일에 정의된 환경 변수를 읽을 수 없다.

따라서, CodeDeploy를 통해 배포된 애플리케이션이 .bashrc에 설정된 환경 변수를 인식하지 못해 서버가 정상적으로 구동되지 않는 문제가 발생할 수 있다.

.bashrc 파일의 역할

.bashrc 파일은 사용자가 쉘 세션(터미널)을 시작할 때 로드되는 스크립트이다. 이 파일은 사용자별 설정과 환경 변수를 포함하며, 로그인할 때나 새로운 터미널 창을 열 때 실행된다. 하지만 이는 사용자 세션에 국한된 것으로, 시스템 전체에서 실행되는 프로세스에는 적용되지 않는다.

CodeDeploy와 시스템 서비스의 차이점

  • 사용자 세션: 사용자가 직접 로그인하여 터미널을 열거나 명령어를 실행하는 환경.
  • 시스템 서비스: 사용자 세션과 무관하게 시스템에서 백그라운드로 실행되는 서비스. CodeDeploy는 이러한 시스템 서비스로 애플리케이션을 배포하고 관리한다.

💡 해결 과정

즉, .bashrc 파일은 사용자 로그인 쉘 세션에서만 로드되기에
CodeDeploy는 시스템 단에서 동작하기 때문에 .bashrc 파일을 읽지 못한다.

/etc/environment 파일에 환경변수 설정

환경 변수를 시스템 전체에서 사용할 수 있도록 /etc/environment 파일에 설정해야 합니다.

sudo cat /etc/environment

배포 후 서버가 정상적으로 구동되기 위해서는 환경 변수를 /etc/environment 파일에 설정해야 한다.



참고 사이트

SpringBoot 프로젝트 EC2 배포하기

AWS EC2 인스턴스에서 환경변수 설정하는 방법

Spring Boot + AWS RDS (MySQL) 연동하기

profile
항상 궁금해하기

0개의 댓글