Jar 배포 방법

스크립트 작성

1
2
3
4
5
6
7
#!/bin/bash

PID=`cat ./java.pid`

kill -9 $PID

nohup java -jar -Duser.language=ko -Duser.country=KR -Duser.timezone=Asia/Seoul -Dspring.profiles.active=product ./java.jar > /var/log/java/$GET_DATE.log 2 >&1 & echo $! > ./java.pid

PM2 사용

PM2 설치

1
npm install -g pm2

PM2 실행 설정 파일 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  "apps": [{
    "name": "test-api",
    "cwd": ".",
    "args": [
	  "-Dspring.profiles.active=product",
	  "-Duser.timezone=UTC",
	  "-Duser.country=KR",
	  "-Duser.language=ko",
      "-jar",
      "/home/ubuntu/java.jar"
    ],
		"watch": [
		  "/home/ubuntu/java.jar"
    ],
    "env": {
    },
    "script": "/usr/bin/java",
    "node_args": [],
    "log_date_format": "YYYY-MM-DD HH:mm Z",
    "exec_interpreter": "none",
    "exec_mode": "fork"
  }]
}
1
pm2 start java.json
1
pm2 list

사용하면 실행됨을 확인 할 수 있다.

재시작시

1
pm2 restart java.json

로그의 기본적인 저장 위치는 아래와 같다

1
cat ~/.pm2/logs/java-out

로그 파일을 라이브러리 설치를 통해 관리 할 수 있다.

1
pm2 install pm2-logrotate

pm2-logrotate 설정을 변경

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

pm2 set pm2-logrotate:<param> <value>

[Exmaple]
// force rotate every minute
pm2 set pm2-logrotate:rotateInterval '*/1 * * * *'

// 1KB
pm2 set pm2-logrotate:max_size 1K 

// compress logs when rotated
pm2 set pm2-logrotate:compress true

// 날짜 포맷
pm2 set pm2-logrotate:dateFormat YYYYMMDD_HHmmss

//타임존
pm2 set TZ Asia/Seoul

//파일 갯수
pm2 set pm2-logrotate:retain 1000

// 재시작
pm2 startup

//이후 아래와 같이 커맨드 나오는거 복사해서 입력
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu