Springboot는 java로 되어있어서 JDK가 필요하다.
$ javac
$ sudo apt install default-jdk -y
사용할 언어인 BL은 설치가 끝났다.
템플릿을 가져와야하는데, 위치는 기존 nginx 루트폴더가 있는곳에 옮겨두자.
filezilla를 이용해, 로컬컴에 있는 springboot 템플릿을 원격서버의 '/var/www/'로 옮겨주었다.
(root 계정으로 진행)
서버블록에서 루트설정을 한다.
$ vi /etc/nginx/sites-available/default
관리하고있는 해당 서버블록 root 내용을 수정한다.
root /var/www/html;
-> root /var/www/sesac_spring_boot
로 수정
(spring-boot 템플릿이 있는 경로로 설정)
sudo systemctl restart nginx
재시작
인텔리제이의 sftp + ssh 설정은 유료버전에서만 가능하기 때문에, vscode로 진행한다.
SSH 연결을 위해 설정파일 수정. mac 기준 'command + p + 윗화살표키'
Users/[username]/.ssh/config 에서 설정파일을 작성하자.
Host [저장할 이름]
HostName [원격 서버 ip]
User [원격서버 사용자명]
IdentityFile [로컬에있는 원격서버 키파일 경로]
해당칸은 마주친 에러 내용이다.
### Problem
`원격 호스트 키가 변경되었으며 포트 전달이 비활성화되었습니다.`
이에 관한 원인은 여러가지이지만 본인의 경우에서 설명하겠다.
로컬컴에서 서버에 접속 시, `.ssh/known_hosts` 파일에 서버의 공개키를 저장하는데, 현재키 전에 사용했던 공개키 내용이 해당 파일에 있으면, 이런 에러가 뜰 수 있다.
### Solve
파일의 호스트 키를 제거하면된다.
현재 접속하려는 서버와 동일한 서버에 관한 키값은 다 지우면 된다!
나는 한 서버에만 접속했으므로 해당 파일 전체내용을 지웠다.
이후 다시 접속해보니, 성공!
연결에 성공한 후, 해당 템플릿을 열면 패키지 설치를 권장한다는 알람이 뜬다.
설치하자.
설치한 후, 다시 접속하니 새로운 에러가 떴다.
연결 시간이 초과되었습니다.
ping을 보냈을 때 잘 가는것으로 보아 서버의 문제는 아니라고 판단하였다.
인스턴스를 재가동한 후 다시 접속하니 잘 들어가졌다.
템플릿 폴더가있는 경로에서 아래의 명령어를 실행한다.
$ chmod -R 777 [템플릿 폴더]
-R 옵션을 줘서 해당폴더부터 하위폴더까지 권한을 준다.
application.yml 파일을 수정해야한다.
스프링부트안에는 내장tomcat이 있는데, 그것의 default 포트는 8080이다.
현재는 9000으로 설정되어있다. (지우면 8080을 사용한다는 뜻)
-> ec2 ubuntu서버는 9000번을 열어주어야한다!
datasource 의 url은 jdbc:mysql://[RDS 엔드포인트 값]/[스키마명]?autoReconnect=true
로 설정한다.
autoReconnect=true
: 스프링에서는 사용을 오래하지않으면, DB랑 커넥션을 자동으로 끊어버린다. 이때, 다시 사용하면 연결이 끊어졌다는 에러를 뱉는데 그냥 자동으로 재연결해주는 기능이다.
user, password에 사용중인 정보를 입력한다.
mysql버전에 따라 driver-class-name을 수정하여 사용한다.
(mysql 5버전의 경우에는 build.gradle 파일의 DB 부분도 수정 필요)
스프링부트를 빌드 할 서버에 openJDK혹은 zulu와 lombok이 설치되어있어야한다.
**!여기서 버전충돌에 관한 에러가있을 수 있으니 주의하자! **
build.gradle파일은 주문서와도 같다. 여기에서 버전을 확인해보자.
로컬(Mac)에서 돌릴경우.
mac은 terminal -.zshrc -.bash_profile 구조이다.
즉, .zshrc가 상위개념이지만, 실행은 .bash_profile가 먼저된다.
컴퓨터에 여러 유저를 두고, 유저에 따라 경로를 다르게 설정하고싶다면, .bash_profile에 경로를 설정하면되고, 어떤 유저이든 같은 경로로 할거라면 .zshrc에 설정하면된다.
spring-boot 폴더로가서 아래 명령어를 사용하자.
/var/www/softsqured_spring_boot$ ./gradlew clean build
빌드 후 BUILD SUCCESSFUL 확인하면,
/var/www/softsqured_spring_boot$ java -jar build/libs/demo-0.0.1-SNAPSHOT.jar
스프링부트를 켠다.
만약 포트가 사용중이라면?
`ps`로 현재 돌아가고있는 프로세스를 확인한다.
`kill -9 [해당 프로세스번호]`로 프로세스를 종료시킨다.
이와 같은 화면이 나오면서, 코드에서 설정했듯이 사용하는 포트로 시작했다는 메시지가 뜨면 성공!