SpringBoot는 마이크로 서비스 프레임 워크이므로 생산 배포 방법은 가능한 한 간단해야하므로 기존 웹 응용 프로그램과 큰 차이가 있습니다. Tomcat, Jetty 등과 같은 웹 컨테이너를 포함시킬 수 있으며 더 이상 컨테이너에서 지정된 특정 양식으로 응용 프로그램을 포장 할 필요가 없습니다.
SpringBoot의 경우 간단한 항아리 패키지로 포장하고 Java -jar를 직접 사용하여 시작할 수 있습니다. 이것은 매우 우아한 방법이지만 다음과 같은 특정 문제를 가져옵니다. 응용 프로그램을 중지하는 방법? 과거에는 응용 프로그램이 특정 컨테이너에 배치되었으며 컨테이너가 제공하는 스크립트는 우아하게 중단 될 수 있지만 이제 컨테이너가 내장되어 스크립트가 사라졌습니다. 어떻게해야하나요? 직접 살해는 방법이지만 너무 무례한 것처럼 보이며 예상치 못한 많은 문제를 가져올 수 있습니다.
우리는 문제를 생각할 수 있기 때문에 프레임 제조업체도 우리를 위해 솔루션을 준비했을까요? 그렇습니다. 아래에서 배운 몇 가지 솔루션을 소개 할 것입니다.
1. 엔드 포인트를 사용하십시오
SpringBoot의 공식 문서 4 부에서는 응용 프로그램 릴리스 제작을 위해 준비된 다양한 기능이 소개됩니다. 그중에서도 Actuator의 HTTP 엔드 포인트를 통해 개발자는 응용 프로그램을 쉽게 모니터링하고 관리 할 수 있습니다.
지정된 스타터 패키지를 소개합니다.
"org.springframework.boot : Spring-Boot-Starter-Actuator : $ {SpringBootversion}"http 요청을 통해 응용 프로그램을 중지하려면 application.yml에서 다음 두 가지 구성을 엽니 다.
관리 : 보안 : 활성화 : FalsePoints : 종료 : enabled : true
작업 명령은 다음과 같습니다.
curl -x post http : // 호스트 : 포트/종료
그러나이 방법은 매우 심각한 문제가 있습니다. 즉, 누구나 응용 프로그램의 중지를 제어 할 수 있습니다. 어떤 사람들은 링크 주소가 지금 너무 단순하다고 생각할 수도 있고, 비 관리자는 매우 복잡한 주소를 사용하는 경우이 문제를 피할 수 있는지 쉽게 추측 할 수 있습니다. 이 제안은 훌륭합니다. SpringBoot에서 제공하는 관련 구성을 살펴 보겠습니다.
엔드 포인트 : 종료 : 활성화 : True Path : /xxx
구성이 완료되면 위의 명령을 더 이상 사용할 수 없습니다. 명령은 다음과 같이 업데이트되어야합니다.
curl -x post http : // 호스트 : 포트/xxx
물론 /xxx는 내가 자연스럽게 설정 한 것입니다. 주소를 설정할 수 있습니다. 보안이 약간 높지만, 이러한 보안 수준은 여전히 생산 환경에 적용 할 수 없습니다. 다른 보호 조치가 있습니까? 예, 종료 경로를 수정하는 것 외에도 모든 관리 작업에 통합 컨텍스트를 추가하고 독립 포트를 구성하며 지정된 IP 액세스 (일반적으로 기본 시스템으로 제한)를 제한 할 수도 있습니다. 구성은 다음과 같습니다.
관리 : 보안 : 활성화 : 허위 포트 : 9001 주소 : 127.0.0.1 Context-Path : /Admin
변경된 서비스 중단 명령은 다음과 같습니다.
curl -x post http://127.0.0.1:9001/admin/xxx
이것은 실제로 충분히 안전합니다. 시스템의 보안을 추가로 보장하려면 HTTP Basic Auth의 계층을 추가하십시오.
보안 의존성 증가 :
"org.springframework.boot : Spring-Boot-Starter-Security : $ {SpringBootversion}"다음과 같이 구성 파일을 수정하십시오.
엔드 포인트 : 종료 : 활성화 : 진정 경로 : /xxxmanagement : 보안 : 활성화 : 진정한 포트 : 9001 주소 : 127.0.0.1 컨텍스트- /관리자- /관리자 : /관리자 : /관리자 : 이름 : 루트 암호 : 123456
구성이 완료된 후 최종 중단 명령은 다음과 같습니다.
curl -x post -u 루트 : 123456 http://127.0.0.1:9001/admin/xxx
2. 시스템 서비스로 등록하십시오
Java -Jar로 SpringBoot 애플리케이션을 실행하는 것 외에도 Init.d 또는 SystemD를 사용하여 Linux/UNIX 시스템 서비스로 쉽게 등록하면 프로덕션 환경에서 SpringBoot 응용 프로그램을 쉽게 설치하고 관리 할 수 있습니다.
Maven 프로젝트에서 "완전히 실행 가능한"JAR을 만들려면 다음 플러그인을 소개해야합니다.
<Plugin> <groupId> org.springframework.boot </groupid> <artifactid> Spring-Boot-Maven-Plugin </artifactid> <bersion> 1.5.2.2.2.20 </version> <configuration> <sexectable> true </executable> </songiguration> </plugin>
Gradle 프로젝트에서 동등한 구성은 다음과 같습니다.
플러그인 {id 'org.springframework.boot'버전 '1.5.2.Release'} springboot {execute = true}구성이 완료되면 ./application-name.jar를 통해 빌드 응용 프로그램을 실행할 수 있습니다.
마지막으로 패키지 응용 프로그램을 Init.D 서비스에 설치하여 Unix/Linux를 사용하여 쉽게 관리 할 수 있도록해야합니다. 작동 방법은 매우 간단합니다. 응용 프로그램을 init.d에 간단히 연결하면됩니다 (여기서 Funda는 내 자신의 응용 프로그램 이름이며 실험시 상황에 따라 교체해야합니다).
ln -s/app/funda/funda.jar /etc/init.d/funda
링크가 성공적으로 설정되어 있는지 확인하십시오
ls -l /etc/init.d/funda
서비스를 시작하면 응용 프로그램 로그는 /var/log/funda.log 파일을 볼 수 있습니다.
서비스 기초 시작
다른 일반적인 명령
# 응용 프로그램 실행 상태 서비스 기초 상태# 애플리케이션 서비스 중지 기초 정지 확인
질문 요약 :
링크가 성공하면 응용 프로그램을 성공적으로 시작할 수 없습니다. Java를 찾을 수 없다는 메시지가 표시됩니다. 다음 명령을 사용하여 JDK Java 명령을 /sbin /java에 연결하십시오.
ln -s /usr/local/jdk1.8.0_131/bin/java/sbin/java
참조 링크 :
엔드 포인트
HTTP에 대한 모니터링 및 관리
UNIX/LINUX 서비스
Java #5690을 찾을 수 없습니다
프로젝트 링크 :
github : https://github.com/qchery/funda
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.