
원래 계획은 aws 프리티어도 얼마 안남았을텐데 그냥 프론트 쪽에서 스프링 application 런해서 사용하는걸루 하자.. 했는데
역시나 쉬운 일이 아니었다. 어쩌면 걍 배포 한번 딱 해놓는게 오랫동안 힘들진 않을 것 같다...! 그래서 그냥 배포를 하게 됐다
프론트엔드로 리액트 코드는 이미 ec2에 배포해본 경험이 있으므로 대충 비슷하겠지 하고 시작!
근데 바로 이슈가 발생했다. 리액트로 개발을 할 땐 보안 설정이 많이 없다보니 거의 다 깃허브에 바로 푸시를 했었고 gitignore 했던 node_modules 마저도 그냥 npm install하면 바로 생성되던 것들이었는데, 스프링은 일단 gitignore 해둔게 많았고 깃허브 클론해서 원 상태로 복구시킬 수도 (npm install 처럼) 없었다.
일단 검색해보니 scp를 이용해서 로컬 파일을 인스턴스 내로 전송하면 된다는데 그럼 스프링 프로젝트를 다 그렇게 전송해야 돼...? 하는 의구심에 일단 친구한테 물어보고 왔다.

다행히.. 역시나..! 그냥 파일 하나만 로컬에서 인스턴스 내로 전송하면 된다고 한다.
프로젝트의 상위 디렉토리에서 아래와 같이 빌드를 해주면
./gradlew build/build/libs 내에 아래와 같이 jar 파일이 생성된다.

✅ **plain.jar 은 실행 불가능한 파일, 그냥 **.jar은 실행 가능한 파일이다. 즉, 인스턴스 내로 전송해야할 파일은 후자이다.
scp -i "/Users/**directory 이름**/Downloads/a-hi-frontend.pem" fit_friends-0.0.1-SNAPSHOT.jar ec2-user@1.12.123.1234:~/
scp -i "pem 파일 경로" {전송할 파일 이름} ec2-user@{public Ipv4 주소}:~/이제 ec2 인스턴스로 접속해서 디렉토리로 이동한다
cd /etc/nginx/sites-available/
sudo vim server.conf➡️ server.conf 는 이전에 프론트 배포에 사용했던 것인데 나는 한 nginx에 포트를 두개로 나눠서 사용할거라 같은 파일에 설정 정보를 함께 담을 것이다.

그리고 scp를 이용해 인스턴스로 파일을 전송한 그 디렉토리에서! jar 파일을 실행해준다
java -jar fit_friends-0.0.1-SNAPSHOT.jar터미널을 종료해도 백그라운드에서 실행되도록 하려면 앞에 nohup 을 붙여준다.
nohup java -jar fit_friends-0.0.1-SNAPSHOT.jar한가지 문제가 구글 소셜 로그인에서 발생한다. ec2 인스턴스의 public Ipv4 주소를 그대로 리디렉션 URI 으로 사용할 수 없다는 것이다.

방법이 없는 것 같다.. 그냥 도메인을 연결하는 수 밖에..!
한창 모각코하고 있을 때 문제가 발견해서 빨리 해결할 방법을 찾았는데 Duck DNS 에서 무료로 DNS 도메인을 연결할 수 있다고 한다. 홈페이지에 들어가서 로그인 후 current ip 에 ec2 인스턴스의 public Ipv4 주소를, domain 에는 도메인 명을 입력해주면 http://fit-friends.duckdns.org:8081/api/login 이런 식으로 이용할 수 있게 된다.
해보니 정상 작동된다! 근데 사이트가 믿음직스럽게 생기지 않아서... 음..!
내일도 화이팅 👍👏