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

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

이렇게 build 폴더가 생성된다
서버에 접속한 상태가 아닌 로컬 터미널에서
scp -r -i "~~~.pem" {로컬에서의spring파일위치} ubuntu@서버주소:/home/ubuntu
입력
서버에서 ls 치면 로컬에 있던 spring 파일이 서버에 옮겨진다
nohup java -jar ./{spring 파일 이름}/build/libs/{~~~-0.0.1-SNAPSHOT.jar} > ./monitoring/candi.out &
nohup을 이용해 터미널을 끄더라도 서버가 계속 돌아가게 하고,
jar파일을 run했을 때 로그들을 monitoring 디렉토리 하단의 candi.out에 저장해준다. 끝에 &도 빼먹지 않도록 조심!
***************************
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를 죽여준다
rmdir CandiFormation_Backend 을 쳤더니
rmdir: failed to remove 'CandiFormation_Backend': Directory not empty
라는 오류 메시지가 나왔다
이건
rm -rf CandiFormation_Backend로 해결했다
절대경로 문제..
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 이렇게 앞에 .(현재위치)를 적어주는 것이다.
scp 명령어를 서버에 접속한 상태에서 입력했던것
scp 명령어는 로컬 터미널에서 입력해야한다 ㅠㅠ
spring에서 redis를 사용하려면 application.properties에
spring.redis.host=localhost
spring.redis.port=6379
이렇게 입력해 줘야 한다. 근데 나는 이걸 잘못생각해서
localhost는 내 컴퓨터니까.. host 주소를 서버주소로 바꿔서 배포해야겠지?라고 생각했다.
근데 애초에 스프링이 서버에 배포되는 순간 서버 입장에서 localhost는 서버 그자체가 되기 때문에 저 호스트 주소를 바꿔줄 필요가 없다.
어쩐지 구글링했을때 다들 서버주소를 안쓰고 localhost로만 입력하더라,,
그리고 redis를 쓸거면 ec2에서 6379 포트를 열어줘야 한다!
서버에 redis 설치하는 것도 잊지말고, services start하는것도 꼭꼭 하기.