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

개발기 배포 완료 🎉
'Memo > TIL' 카테고리의 다른 글
| 로컬로 딥시크(DeepSeek) 구동하기 (Ollama + OpenWebUI) (0) | 2025.02.03 |
|---|---|
| 2024.11.15 (0) | 2024.11.15 |