Spring Boot 프로젝트의 build.gradle 파일에는 다음 구성이 필요합니다.
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
실행 가능 = true
이것은 유닉스 시스템 (Centos와 Ubuntu)에서 완전히 실행 가능한 jar 파일을 만들기 위해 필요합니다
.conf 파일 만들기
사용자 정의 JVM 특성 또는 Spring Boot 애플리케이션 실행 인수를 구성하려는 경우 Spring Boot 애플리케이션 이름과 동일한 이름으로 .conf 파일을 작성하고 jar 파일과 병렬로 배치 할 수 있습니다.
your-app.jar이 Spring Boot 애플리케이션의 이름임을 고려하면 다음 파일을 작성할 수 있습니다.
JAVA_OPTS="-Xms64m -Xmx64m"
RUN_ARGS=--spring.profiles.active=prod
LOG_FOLDER=/custom/log/folder
이 구성은 Spring Boot 애플리케이션에 64MB 램을 설정하고 prod 프로파일을 활성화합니다.
리눅스에서 새로운 사용자 만들기
보안 강화를 위해 Spring Boot 애플리케이션을 서비스로 실행할 특정 사용자를 작성해야합니다.
새로운 사용자 만들기
sudo useradd -s /sbin/nologin springboot
Ubuntu / Debian에서 위의 명령을 다음과 같이 수정하십시오.
sudo useradd -s /usr/sbin/nologin springboot
암호를 설정하세요
sudo passwd springboot
실행 파일의 springboot 소유자 만들기
chown springboot:springboot your-app.jar
jar 파일의 수정 방지
chmod 500 your-app.jar
이것은 jar의 권한을 구성하여 소유자 스프링 부트에서만 쓸 수 없으며 읽거나 실행할 수 있도록합니다.
chattr (속성 변경) 명령을 사용하여 jar 파일을 변경 불가능하게 만들 수도 있습니다.
sudo chattr +i your-app.jar
해당 .conf 파일에 대한 적절한 권한도 설정해야합니다. .conf에는 읽기 + 실행 (Octal 500) 액세스 대신 읽기 액세스 (Octal 400)가 필요합니다.
chmod 400 your-app.conf
체계적인 서비스 만들기
/etc/systemd/system/your-app.service
[Unit]
Description=Your app description
After=syslog.target
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
OS에 의해 종료되면 프로세스를 자동으로 다시 시작
실패시 프로세스를 자동으로 다시 시작하려면 아래 두 속성 (Restart 및 RestartSec)을 추가하십시오.
/etc/systemd/system/your-app.service
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
변경 사항은 30 초 지연으로 실패 할 경우 스프링 부트 응용 프로그램을 다시 시작합니다. systemctl 명령을 사용하여 서비스를 중지하면 다시 시작되지 않습니다.
시스템 시작시 서비스 예약
시스템 부팅시 응용 프로그램이 자동으로 시작되도록 플래그를 지정하려면 다음 명령을 사용하십시오.
시스템 시작시 Spring Boot 응용 프로그램 활성화
sudo systemctl enable your-app.service
서비스 중지 시작
systemctl을 우분투 16.04 LTS 및 18.04 LTS에서 사용하여 프로세스를 시작 및 중지 할 수 있습니다.
프로세스 시작
sudo systemctl start your-app
프로세스를 중지
sudo systemctl stop your-app
참고 문헌
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html