[Spring Boot] jar 파일 배포하기

험프티덤프티·2022년 3월 4일
0

서버 접속

우선 pem키가 있는 곳으로 가서
ssh -i "~~~.pem" ubuntu@서버주소
를 입력하고 서버에 접속한다

jar파일 만들기

intellij에서

위 사진의 bootJar를 더블클릭하면

이렇게 build 폴더가 생성된다

로컬의 spring 파일을 서버로 옮기기

서버에 접속한 상태가 아닌 로컬 터미널에서
scp -r -i "~~~.pem" {로컬에서의spring파일위치} ubuntu@서버주소:/home/ubuntu
입력

그렇게 되면??

서버에서 ls 치면 로컬에 있던 spring 파일이 서버에 옮겨진다

jar파일을 run 시키기

nohup java -jar ./{spring 파일 이름}/build/libs/{~~~-0.0.1-SNAPSHOT.jar} > ./monitoring/candi.out &
nohup을 이용해 터미널을 끄더라도 서버가 계속 돌아가게 하고,
jar파일을 run했을 때 로그들을 monitoring 디렉토리 하단의 candi.out에 저장해준다. 끝에 &도 빼먹지 않도록 조심!

서버 만지작 거리면서 났던 오류들

1번

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

8080포트가 이미 열려있어서 뜨는 오류 (vi ./monitoring/candi.out를 쳐보면 나온다)
이럴떄는
ps -ef | grep jar
로 우리가 배포하려는 jar파일의 PID를 확인해주고
sudo kill -9 {PID번호} 를 입력해서 해당 ps를 죽여준다

2번

rmdir CandiFormation_Backend 을 쳤더니
rmdir: failed to remove 'CandiFormation_Backend': Directory not empty
라는 오류 메시지가 나왔다
이건
rm -rf CandiFormation_Backend로 해결했다

3번

절대경로 문제..
scp 명령어로 로컬파일을 원격서버파일로 옮길때

터미널상에서 /Users/home/Downloads에 위치한 상태에서(CandiFormation_Backend 디렉토리는 /Users/home/Downloads/CandiFormation_Backend 이 위치에 있었다),
scp -r -i "~~~.pem" /CandiFormation_Backend ubuntu@서버주소:/home/ubuntu
위와같이 입력했을때, 자꾸 에러가 떴다.
문제가 된 것은 위와같이 경로를 쓸때 먼저 /를 쓰면 절대경로로 설정되는 거였는데,
이를 해결하려면 애초에 처음부터 끝까지 제대로 < /Users/home/Downloads/CandiFormation_Backend> 이렇게 쓰던지,
아니면 ./CandiFormation_Backend 이렇게 앞에 .(현재위치)를 적어주는 것이다.

4번

scp 명령어를 서버에 접속한 상태에서 입력했던것
scp 명령어는 로컬 터미널에서 입력해야한다 ㅠㅠ

나머지는 redis 오류였는데...

spring에서 redis를 사용하려면 application.properties에

spring.redis.host=localhost
spring.redis.port=6379

이렇게 입력해 줘야 한다. 근데 나는 이걸 잘못생각해서
localhost는 내 컴퓨터니까.. host 주소를 서버주소로 바꿔서 배포해야겠지?라고 생각했다.
근데 애초에 스프링이 서버에 배포되는 순간 서버 입장에서 localhost는 서버 그자체가 되기 때문에 저 호스트 주소를 바꿔줄 필요가 없다.
어쩐지 구글링했을때 다들 서버주소를 안쓰고 localhost로만 입력하더라,,

그리고 redis를 쓸거면 ec2에서 6379 포트를 열어줘야 한다!
서버에 redis 설치하는 것도 잊지말고, services start하는것도 꼭꼭 하기.

profile
기록기록기록

0개의 댓글