배포v1 - 2

LeeKyoungChang·2022년 4월 28일
0
post-thumbnail
post-custom-banner

메타코딩 유튜브를 참고하여 정리한 내용입니다.

 

📚 6. 배포v1 - 로그파일 변경하기

nohup java -jar *.jar > mylog.out & : 웹 서버 표준 출력을 mylog.out로 설정하기

스크린샷 2022-04-28 오전 11 11 56

 

다른 터미널에서 접속하여 mylog.out 파일 확인하기 (tail -f mylog.out)

스크린샷 2022-04-28 오전 11 11 44

 

📚 7. 배포v1 - 표준 출력, 에러 로그 파일 분리하기

nohup java -jar v1-0.0.1-SNAPSHOT~1.jar & 을 실행한다.

스크린샷 2022-04-28 오전 11 24 02 스크린샷 2022-04-28 오전 11 23 50
  • 하지만, v1-0.0.1-SNAPSHOT~1.jar 라는 실행 파일이 존재하지 않아 ERROR가 발생한다.

 

현재 에러와 표준 출력 실행 결과 (nohup.out 에 저장됨)

스크린샷 2022-04-28 오전 11 34 24

🔔 현재는 nohup.out으로 출력된다.
(1) 에러 출력 : 2
(2) 표준 출력 : 1

 

📖 A. 에러와 표준 출력을 나누어 보자!

nohup java -jar 파일명 1>log.out 2>err.out : 표준 출력 1은 log.out, 에러 출력 2은 err.out

➡️ 나누는 이유 : 배포를 위해서 작성했던 모든 명령어들을 스크립트로 작성할 것이다. 이때 자동화가 필요하다. 스크립트 파일 실행시 이때까지 한 내용들을 한 번에 실행되게 할 것이다.
이때, 실행이 되지 않는다면, 에러 로그를 확인한다.
이때, 실행이 잘된다면, 표준 출력 로그를 확인한다.

 

✔️ error가 발생했을 때
스크린샷 2022-04-28 오전 11 40 52

  • cat error.out 입력시, Error: Unable to access jarfile v1-0.0.1-SNAPSHOT.jarr 파일에 접근할 수 없다고 출력된다.
  • cat log.out 입력시 아무 것도 출력되지 않는다.

 

✔️ 정상적으로 실행될 때
스크린샷 2022-04-28 오전 11 43 10

  • cat error.out : 출력된 내용이 없다.
  • cat log.out : 정상적으로 서버가 실행되며, 출력 결과를 볼 수 있다.

 

이와 같이 할시,

  • 나중에 서버를 배포했는데 실행이 되지 않을 경우, error.out 파일을 확인하면 된다!
  • 서버를 배포했는데 실행이 잘될 경우, log.out을 확인하면 된다.
    • log.out 확인할 때 끝부분만 확인하는 방법 : tail -f log.out
    • 스크린샷 2022-04-28 오전 11 46 13

 

📚 8. 배포v1 - 타임존 변경 및 종료스크립트 코딩하기

📖 A. 터미널 한국 시간 지정하기

스크린샷 2022-04-28 오전 11 58 43
  • 현재는 미국 시간이 지정되어 있다.

 

스크린샷 2022-04-28 오전 11 59 43
  • 전 세계 나라 시간 list 출력

 

스크린샷 2022-04-28 오후 12 01 53
  • timedatectl list-timezones | grep Seoul : 서울 시간
  • sudo timedatectl set-timezone Asia/Seoul : 서울 시간을 timedatectl에 설정한다.
    • 결과, Local에 한국 시간으로 설정되었다.

 

📖 B. PID 번호 쉽게 찾기

  • 이전까지는 ps -ef에서 확인했었다.
  • 이제는 프로그램 코드를 작성하여, 실행시킬 것이다!

✔️ echo
터미널에서 표준 출력하기
ex)
스크린샷 2022-04-28 오후 12 09 00

 

ps -ef | grep *.jar 입력시

스크린샷 2022-04-28 오후 12 13 01
  • *.jar 을 가진 실행 파일을 출력한다.

여기서 grep을 가진 녀석을 제외시키려면?
ps -ef | grep *.jar | grep -v grep 이다!

스크린샷 2022-04-28 오후 12 16 53

 

그리고, 제외시킨 녀석의 PID를 알고 싶다면?

현재 제외시킨 녀석의 프로세스 정보이다.

ubuntu     63869   63049  2 12:12 pts/0    00:00:06 java -jar v1-0.0.1-SNAPSHOT.jar

ps -ef | grep *.jar | grep -v grep | awk '{print $2}' 을 입력하면, 해당 프로세스 PID를 출력한다.

스크린샷 2022-04-28 오후 12 20 44

 

근데, 입력 내용이 되게 복잡하다!
대책 사항으로

🔔 프로세스 ID(PID)를 찾을 때 사용하기 좋은 명령어
pgrep -f *.jar
스크린샷 2022-04-28 오후 12 22 40

✏️ pgrep
스크린샷 2022-04-28 오후 12 24 30

 

📖 C. 여러 가지 명령어 한 번에 실행하기

vi spring-stop.sh : 스크립트를 작성한 파일 실행

스크린샷 2022-04-28 오후 12 29 06
  • Springboot Stop.....를 출력하라
  • SPRING_PID=$(pgrep -f *.jar)
    • $(명령어) : 명령어의 결과를 리턴한다.
    • SPRING_PID에 명령어(pgrep -f *.jar)결과를 입력한다.
    • SPRING_PID=63956와 같이 입력된다. (63956PID 이다.)
  • echo $SPRING_PID
    • $변수 : 변수의 값을 출력 혹은 실행한다.
  • kill -9 $SPRING_PID
    • $SPRING_PID : 프로세스 번호가 저장되어 있다.

 

실행파일로 만들어줘야 한다. (현재 실행 파일이 아니다.)

스크린샷 2022-04-28 오후 12 31 01
  • u : rw → rwx (파일 소유자에게 실행 권한 주기)

 

./spring-stop.sh으로 실행시

스크린샷 2022-04-28 오후 12 35 03
  • echo 출력 내용, PID가 출력되며 종료되었다.
  • netstat -nlpt로 출력해보니 8080번 port가 없어졌다!

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"
post-custom-banner

0개의 댓글