[2nd Project] 2026.06.26 내가 설치한 Locky Linux에 개발기 배포하기
역시 직장은 사회 경험도 하면서 돈도벌고 업무에 대하여 배우는것이 가능한 '삶에 있어서 좋은 역할을 하는곳' 이라는걸 항상 새기면서 일하려고 한다.
새로운 프로젝트를 하면서 개발기 셋팅부터 배포방식도 내가 새롭게 만들어야할 기회가 있었는데 그 과정을 오늘 좀 적어보려고한다.
현재 내 상황 :
프로젝트 세팅 | 완료 (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/
그 다음, 서버에 들어가서 옮기기
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
개발기 배포 완료 🎉