티스토리 뷰

피치 못할 사정으로... 쓰고 있던 젠킨스에 접근을 못하게 되어 수동으로 배포할 일이 생겼다.
이참에 리눅스에 jar 파일로 배포하는 법도 익힐겸 수동 배포를 해보았다.
깃허브 연동하여 배포하는 방법은 차차 해봐야겠다.!
젠킨스 만세...!!


* 리눅스 서버 배포 ?
로컬에서 프로젝트를 배포하여 새로 시작할 때는 IDE로 손쉽게 Run 버튼을 누르면 되지만,
리눅스 서버에서 배포하기 위해서는 jar 파일을 실행해 줘야 한다.

 

jar 파일 빌드하기

1. 우측 Gradle 탭 - 배포하고자할 모듈 - build - bootJar 실행



2. 좌측 프로젝트 - 배포할 모듈 - build - libs 폴더에서 생성된 jar파일
여기서 생성된 jar파일을 Linux 서버에 옮겨 실행하면 배포 된다.



서버에 JDK 설치

1. Linux 서버에 자바(jdk)가 설치되어있는지 확인한다.

$ java -version
root@beside:~# java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu218.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu218.04, mixed mode, sharing)



2. 설치된 jdk가 없으면 프로젝트 버전에 맞는 자바를 설치한다.

sudo apt update
sudo apt install openjdk-11-jdk



MAC -> SSH 서버로 jar 파일 이동 (복사)

mac terminal에서 scp 명령어로 파일 이동한다.

* scp (secure copy)
ssh 프로토콜 기반의 파일전송(복사) 수단
ssh와 동일한 22번 포트와 identity file을 사용해서 파일 송수신 하기 때문에 보안적으로 원격으로 파일을 옮길 수 있다.

$ scp -r {LocalDirectory} server_name@172.XX.XXX.XX:{ServerDirectory}

* -r 옵션 : 폴더 통째로 보내기
* -P 옵션(대문자) : port 지정

서버 디렉토리로 파일 이동을 시도하였다.



* find / - name '파일명' : 특정 파일 위치 찾는 명령어
'*.확장자' 조회도 가능함

$ find / - name '파일명'




파일 시간별로 출력하는 명령어
* -lt : 시간 순서대로 정렬
* --time-style full-iso : 자세한 시간 정보 확인

$ ls -lt --time-style full-iso

원하는 디렉토리에 업로드가 안된다....ㅠㅠ 뭐가 문제일까

복사하려는 파일도 정확하게 맞는데!

오잉 디렉토리 안에 들어와서 리눅스 명령어 치니까 파일 전송된거 확인 되네...?! (파워 삽질)



jar 파일 실행

jar 파일을 우분투 서버에 복사한 뒤 아래의 명령어를 통해 시작한다.

$ nohup java -jar {jar파일명} &

* nohup : 백그라운드 프로세스로 실행되게 하는 명령어

root@beside:~/server/backend/api/build/libs# nohup: ignoring input and appending output to 'nohup.out'
nohup으로 수행되는 프로세스는 stdout 결과가 nohup.out 파일에 저장된다는 뜻이다.
콘솔 프로그램이 stdout으로 메시지를 출력한다면 nohup.out 파일을 열어보면 출력 메시지를 확인할 수 있다.
(에러 메세지는 아니다.)

$ ls -lt --time-style full-iso
total 136436
-rw------- 1 root root   4520778 2023-02-17 09:12:03.462833073 +0900 nohup.out
-rw-r--r-- 1 root root 133011772 2023-02-15 15:17:50.032803565 +0900 api.jar
drwxr-xr-x 2 root root      4096 2023-02-14 15:05:39.845160091 +0900 libs
-rw-r--r-- 1 root root   2161287 2023-01-28 14:54:04.657527602 +0900 api-plain.jar

저장되고 있다.



* ps : 프로세스 확인 명령어

$ ps

ps로 확인해보면 해당 프로세스 43501이 실행되고 있는 걸 확인할 수 있다.


자바 프로세스 실행 여부까지 확인해보았다!

$ ps -ef | grep java
$ ps -ef | grep api
root      5359  5330  0 Feb15 ?        00:09:13 java -jar -Dspring.profiles.active=dev /api.jar
root     31407     1  0 Feb15 ?        00:03:16 java -jar api.jar
root     43501     1  0 Feb14 ?        00:05:27 java -jar api.jar
root     53073 51901 10 09:14 pts/0    00:00:28 java -jar api.jar
root     54440 51901  0 09:19 pts/0    00:00:00 grep api



프로젝트를 재시작할 때에는 기존 포트를 죽인후 재시작 해야한다.

$ fuser -k -n tcp 8080

 

 

 

 



+ docker image를 통해 jar 파일을 실행한다면, image를 새로 빌드해줘야한다.

 

 

 

 

반응형

'backend > server' 카테고리의 다른 글

네이버 클라우드 플랫폼으로 웹 서버 구축하기  (1) 2023.02.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함