본문 바로가기

OS (Operating System)/Linux

리눅스(Linux) JAR 빌드 및 리눅스서버 배포

728x90

출처 : https://m.blog.naver.com/qhdythf/221694075513

 

6. Jar 빌드 및 리눅스 서버에 올리기

자 이제 스프링 부트의 매력인 Jar를 생성해서 올려보자. 기존 스프링은 war를 만들고, 설치된 톰캣에 올...

blog.naver.com

 

 

자 이제 스프링 부트의 매력인 Jar를 생성해서 올려보자. 기존 스프링은 war를 만들고, 설치된 톰캣에 올리는 방식이었는데 스프링 부트는 Jar를 톰캣을 포함 한채로 생성해서 올리는게 가능하다.

일단 build.gradle에 Jar관련 스크립트를 작성해준다. 작성을 안해주면 기존 war생성되는 방식대로 파일명이 생성된다. (굳이 안해도 된다는 얘기..)

bootJar{ archivesBaseName = 'myPrjSprB' archiveFileName = 'myPrjSprB.jar' archiveVersion = '0.0.0' }

위와 같이 작성을 해주고 archiveFileName에는 만들 파일명을 적어준다.

인텔리J에서 우측에 저 버튼을 누르면 빌드관련 창이 뜨고 거기서 bootJar를 더블클릭해서 실행해본다.

 

그럼 하단에서 빌드 관련 정보들이 올라가고 다 올라가면 왼쪽에 프로젝트 창에 build폴더가 생성이 된다.

jar파일은 build>libs 에 생성이 된다. 나는 테스트로 war도 생성해 봤다.

이제 이파일을 리눅스 서버에 올려보자. 리눅스 서버는 본인이 사용하는 리눅스 서버가 있으면 거기다가 올려도 되고, 사용하는 VM(버추얼박스, VM Ware같은것들...)에 리눅스를 올려서 테스트 해봐도 된다.

나는 최근에 구글클라우드플랫폼으로 리눅스 서버를 만들었으니 거기다가 올려보기로 한다.

 

따라해서 리눅스 만들어서 사용해도 된다.

리눅스에 접속을 해본다.

일단 파일을 올릴 디렉토리를 만들어본다.

나는 spb로 생성

ftp프로그램을 이용해서 파일을 전송해준다.

jar를 실행해본다. nohup를 이용해서 로그도 찍어보겠다.

nohup java -jar myPrjSprB.jar &

결과.

tail명령어를 이용하여 nohup.out에 로그를 확인해본다.

스프링 부트 로그가 잘뜬다.

일단 잘뜨긴 하는데, 리눅스 서비스를 이용해서 서버가 실행될 때마다 같이구동되게 해보자.

su를 통해서 root계정으로 접속하고, /etc/systemd/system의 위치로 이동.

vi 서비스명.service를 이용해서 파일을 생성해준다.

$ su # cd /etc/systemd/system # vi sprb_serv.service

결과.

나의 경우 서비스명을 sprb_serv로 설정했다. 스크립트를 입력해준다.

[Unit] Description="설명을 써준다" [Service] WorkingDirectory="jar위치한 디렉토리" ExecStart=/usr/bin/java -jar "jar명".jar & Type=simple [Install] WantedBy=multi-user.target Alias=SpringBoot-Serv.service

"안에 부분은 그대로 써주면 안되고, 각자 환경에 맞춰서 써줘야 한다.

프로세스 확인을 해서, 기존에 떠있는 jar를 죽여주고, 서비스를 리로드, 활성화 실행 시켜보고, 상태도 확인한다.

# ps -ef | grep "파일명" # kill -9 "java -jar 파일명 인 프로세스의 pid(2번째 항목)" # systemctl daemon-reload # systemctl enable "서비스명.service" # systemctl start "서비스명.service" # systemctl status "서비스명.service"

결과.

이경우 로그는 /var/log/syslog에 기록이 된다. 터미널을 하나 더 띄워서 모니터링을 해보자.

$ cd /var/log $ tail -f syslog

결과.

스프링 부트 로고도 잘 올라온다.

마지막으로 리부팅을 해보고 잘뜨는 확인해본다.

# reboot # ps -ef | grep "파일명"

결과.

프로세스가 잘떠 있으면 성공.

728x90