AWS EC2 - Putty
Putty
1. Putty 설치 및 이용
1-1. Putty 설치
EC2에 만들어둔 인스턴스 Linux를 이용할려면 내가 사용하고 있는 Windows용 SSH연결 프로그램인 Putty를 사용할 것이다. 그리고 프로그램을 사용할 거면 https://www.putty.org 에서 무료로 내려받을 수 있다.
프로그램을 설치 했으면 폴더 안에 PuTTYgen을 실행하고 EC2인스턴스를 만들 때 같이 만든 보안 키 파일은 [Load]를 통해서 로딩한다.
보안 키 파일을 찾을 때 확장자로 ‘.ppk’를 기본값으로 찾기 때문에 다음과 같이 모든 확장자를 검색하도록 변경해야만 찾을 수 있으니 주의해야 한다.
정상적으로 로딩된 후에는 [Save private key] 버튼을 눌러 ‘지정한이름.ppk’란 이름으로 파일을 저장하면 된다.
1-2. Putty 연결
Putty프로그램을 통해서 EC2에 연결하려면 EC2인스턴스의 퍼블릿 IPv4 DNS를 지정한다.
연결할때에는 카테고리의 [Connection - SSH - Auth - Credentials] 항목으로 이동해서 가지고 있는 보안키(.ppk)를 이용하도록 설정한다.
연결이 된 후에는 EC2환경의 계정인 ‘ec2-user’라는 이름으로 로그인을 하고, 생성한 EC2환경에는 자신이 이용하는 자바 버전이 아닐 경우가 높을 것이다.
필요하다면 [yum list java*자신이 사용할 버전*] 명령어를 이용해서 설치 가능한 JDK 목록이 출력될 것이며 우린 아마존 AWS를 기왕 이용하고 있으니 [sudo yum install java-17-amazon-corretto.x86_64]의 명령어로 설치하였다.
1-3. 프로젝트 실행
그럼 이제 JDK까지 설치가 되었다면 프로젝트를 EC2에 실행되는지 확인하고 싶을 것이다.
AWS에서 스프링 부트로 작성된 프로젝트를 실행하는 가장 기본적인 방식은 프로젝트를 실행가능한 jar파일로 빌드해서 실행하는 방식이라고 한다.
이를 위해 로컬 환경에서 작성하는 프로젝트를 jar파일로 빌드하고 해당 파일을 EC2에서 가져다가 실행하거나, 프로젝트의 빌드 자체를 EC2환경에서 진행하는 방법을 사용할 수 있다.
빌드한 jar파일을 실행하는 방식은 컴파일 환경 등이 모두 맞아야 하기 때문에 EC2에서 빌드하고 실행하는 방식을 이용하는 것이 좋다고 한다.
확인하기 위해서 EC2환경에서 [sudo yum install git]통해서 깃 프로그램을 설치한다.
깃 설치 후 프로젝트를 실행할 수 있는 폴더를 mkdir로 생성하여 해당 폴더로 이동한 뒤 프로젝트를 clone하여 코드를 EC2로 복사한다.
복사하면 프로젝트 이름으로 폴더가 생성될 것인데, gradlew파일을 실행하기 위해 프로젝트 폴더 내부로 이동한다.
이동한 다음 ./gradlew build를 실행하면 권한이 없어 문제가 생기니 권한을 강제로 [sudo chmod 777 ./gradlew]명령어로 변경한다.
다시 ./gradlew build를 실행하면 프로젝트가 정상적으로 빌드가 되었을 것이다.
빌드가 실행된 후에는 build폴더가 생성이 되었을 것이고, 그 폴더 안에 libs폴더로 이동한다.
그리고 폴더에는 2개의 파일이 존재할 것인데 [java -jar jar파일명]으로 프로젝트를 실행시키면 매번 우리가 스프링부트 IDE에서 했던 로컬환경에서 브라우저를 통해 확인할 수 있을것이다.
브라우저에서 EC2인스턴스 퍼블릭 IPv4 DNS값과 포트 번호를 통해서 확인이 가능하고, 종료하고 싶을 때는 Putty에서 [Ctrl + c]를 이용해서 종료할 수 있다.
2. ./gradlew build 에러
사실 중간 과정에 ./gradlew build를 실행하니 아래와 같은 에러 로그가 출력되었다.
사실 이 현상은 그저께 처음으로 설정할 때에도 나타난 에러였는데 Gradle캐시를 지웠다가 자바를 다른 것으로 설치하는 등 별짓을 하다가 이유도 모른 채 해결이 되었고, 당연히 왜 해결이 되었는지 모르고 지나갔으니 지금 같은 현상이 또다시 나온 것이다.
그래서 해결방법을 찾던 중, 해결한 사람이 인터넷 서치나 GPT한테 물어봐도 해결이 안되었는데 Gradle공식문서를 보고 해결 하였다고 한다.
Gradle이 빌드 요구 사항과 일치하는 로컬에서 사용 가능한 툴체인을 찾을 수 없는 경우, 툴체인 다운로드 저장소가 구성된 경우 자동으로 툴체인을 다운로드할 수 있게 프로젝트 내의 settings.gradle에 코드를 추가하면 된다.
코드를 추가한 프로젝트를 다시 EC2에 git pull한 다음 다시 ./gradlew build빌드하면 이번엔 정상적으로 빌드가 되었다.
3. 후기
원래는 어제 Putty를 이용한 글을 작성할 예정이었지만, 갑자기 chirpy테마가 말썽을 부리는 바람에 오늘에서야 작성하게 되었다.
그리고 문득 떠오른 생각인데, 어제도 그렇고 오늘도 EC2에서 JDK를 찾지 못하는 에러를 해결하였던 사람의 느낀점을 보며, 나 역시 인터넷 검색이나 GPT에 많이 또 의존하고 있다는 것이 참 한심스러웠다.
이렇게 하는 이유는 간단하다. 몇 가지 키워드만 입력하면 쉽게 해결책을 찾을 수 있기 때문이다. 하지만 때로는 이런 편리함이 오히려 문제 해결을 더 어렵게 만들기도 한다.
결국 중요한 것은 단순한 검색이 아니라, 문제를 정확히 이해하고 근본적인 원인을 파악하는 능력이다. 쉽게 찾은 답이 항상 정답은 아닐 수도 있으니까.