서버와 데이터베이스를 생성했다면 이번에는 서버에 프로젝트를 배포해보겠습니다.

1. 서버에 접근하기

ssh username@public-ip -p 22(허용 포트)
# password


2. 서버에 JAVA 설치

sudo apt install openjdk-17-jdk
java --version # 자바 버전 확인


3. 프로젝트 가져오기

git clone --branch 가져올브랜치 https://github.com/깃헙아이디/레포지토리명.git # 프로젝트 복제


4. 별도로 필요한 yml 파일이 있다면 (optional)

cd Americanote # 리포지토리로 들어가기
cd src/main/resources # yml 파일이 위치할 resources 폴더로 이동
cat > ~.yml # yml 파일 생성 및 편집
# yml 파일 내용 붙여넣기
# 필요한 yml 파일을 모두 만들었으면 다시 리포지토리 홈으로 돌아갑니다.


5. Gradle 빌드 후 실행하기

./gradlew clean build -x test # 테스트 없이 처음부터 빌드
cd build/libs # jar 파일이 존재하는 폴더로 이동
ll 혹은 ls # 폴더 보기
nohup java -jar [이름-SNAPSHOT.jar] &
  • nohup
    • no hang up의 약자, 말그대로 끊지마!
    • 사용자가 세션과 연결을 종료해도, 데몬 형태로 실행하게 하여 해당 프로세스가 종료되지 않습니다.
  • &
    • 프로그램 실행 시 마지막에 붙여주면 백그라운드에서 해당 프로세스가 실행됩니다.
      → 어떤 프로그램을 종료없이 백그라운드에서 실행시킬 때 nohup ~ & 조합을 사용하는 게 가장 확실하고 안전합니다.

6. 로그 확인

# 실행 후 ll 이나 ls로 확인해보면 nohup.out이 생성됩니다.
tail -f nohup.out # 실시간 업데이트 로그
cat nohup.out     # 현재까지 로그
  • 제대로 실행되었는지 확인하기 위해 로그를 실행 후 로그를 반드시 확인하는 편입니다.

7. 만약 이미 프로젝트가 실행 중이라면? 종료하고 실행하자

netstat -tulpn # 실행 중인 프로세스 확인
kill -9 [PID 번호]
  • Gradle 빌드 후 실행하기 전에 한번쯤 확인하면 좋겠습니다.

참고