Memo/TIL

[2nd Project] 2026.06.26 내가 설치한 Locky Linux에 개발기 배포하기

롱하 2025. 6. 26. 15:06

역시 직장은 사회 경험도 하면서 돈도벌고 업무에 대하여 배우는것이 가능한 '삶에 있어서 좋은 역할을 하는곳' 이라는걸 항상 새기면서 일하려고 한다.

 

새로운 프로젝트를 하면서 개발기 셋팅부터 배포방식도 내가 새롭게 만들어야할 기회가 있었는데 그 과정을 오늘 좀 적어보려고한다.

 

현재 내 상황 : 

프로젝트 세팅 완료 (Spring Boot, 파일 업로드 구현 등)
서버 있음 (Rocky Linux, SSH/FTP 포트 확인 완료)
Jenkins 설치 예정 or 테스트 중
빌드 방식 선택 전 (JAR? WAR?)
배포 방식 수동에서 자동으로 옮기려는 중

 

 

 

일단 Jenkins를 저번에 사용하기 위해서 CentOS에서 실험으로 테스트 해본적은 있지만 실질적으로 적용을 위해서 해본적은 없었으니 이번 프로젝트에 처음으로 적용시켜보려고 한다.

 

 

🧸 Jenkins기반으로 CI/CD 구조를 사용

 

 

1) 빌드 방식 정하기

 

Jar방식 사용 (내장 톰캣 기반이며 단독 실행이 가능) 

 

# 프론트 빌드
./gradlew clean build -Ptarget=front

# 어드민 빌드
./gradlew clean build -Ptarget=admin

 

2) 개발기 서버에 배포

 

1. jar 파일 전송

 

scp -P 39022 "C:\Workspace\smartrecord\build\libs\smartrecord-front.jar" rongha@192.000.55.240:/home/dev/

scp -P 39022 "C:\Workspace\smartrecord\build\libs\smartrecord-front.jar" rongha@192.000.55.240:/home/rongha/

 

그 다음, 서버에 들어가서 옮기기

ssh -p 39022 rongha@192.000.55.240
 
# 관리자 권한으로 파일 이동
sudo mv /home/rongha/smartrecord-front.jar /home/dev/
 

2. 서버 접속

 

ssh -p 39022 rongha @192.000.55.240
cd /home/dev

 

3. 실행

 

nohup java -jar smartrecord-front.jar --spring.profiles.active=front > front.log 2>&1 &

sudo nohup java -jar smartrecord-front.jar --spring.profiles.active=front > front.log 2>&1 & ( X )

 : 이렇게 쓰면 nohup java -jar에는 sudo가 적용되지만 front.log는 현재 유저 권한(rongha) 으로 실행됨 → 권한 에러 발생

 

sudo bash -c 'nohup java -jar smartrecord-front.jar --spring.profiles.active=front > front.log 2>&1 &' ( O )

: bash 전체에 sudo 먹이기 ( 이렇게 하면 리디렉션까지 모두 root 권한으로 실행돼서 오류 안 남 )

 

➡️ 리눅스에서 스프링 부트 JAR을 "백그라운드 실행" 시키는 방법

 

이 명령 실행하면:

  • 서버에서 JAR이 독립적으로 백그라운드에서 실행됨
  • 로그가 front.log 파일에 계속 저장됨
  • SSH 끊겨도 죽지 않음

 

4. 실행 후 확인

 

ps -ef | grep smartrecord

스마트 레코드 서버가 성공적으로 백그라운드에서 실행 중이라는 의미

 

root 61330 PID 61330번 프로세스 실행 중 (root 권한)
java -jar smartrecord-front.jar JAR 파일 실행 중
--spring.profiles.active=front application-front.yml 설정 적용됨

 

 

tail -f front.log

 

 

개발기 배포 완료 🎉