2017-09-12 27 views
13

Có một dịch vụ siêu nhỏ dựa trên Spring Boot (1.5.4.RELEASE) mà tôi triển khai một jar tới một Instance AWS EC (môi trường Linux). Bây giờ, tôi cũng đang triển khai nộp log4j.properties bên ngoài vì vậy tôi đã để bắt đầu microservice như thế này:Làm thế nào để Extern log4j.properties tập tin với Spring Boot Microservice và chạy nó như một dịch vụ Linux?

java -jar myapp.jar -Dlogging.config=/path/to/log4j.properties 

Làm thế nào tôi có thể cấu hình mùa xuân Boot này Microservice như một dịch vụ Linux nơi tôi có thể bắt đầu và ngăn chặn nó sử dụng các cờ:

sudo service myapp start | stop | status | restart 

Cảm ơn bạn rất nhiều.

+0

bạn cần phải viết một wrapper dịch vụ java. ví dụ này có thể hữu ích. http: //www.jcgonzalez.com/linux-java-service-wrapper-example – edt

+1

Điều này được giải thích khá rõ trong tài liệu chính thức tại https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html # deployment-initd-service – Val

+0

Tôi hy vọng câu trả lời bạn sẽ nhận được ở đây https://stackoverflow.com/questions/21503883/spring-boot-application-as-a-service –

Trả lời

5

Sử dụng một liên kết tượng trưng cho ứng dụng springboot của bạn, bạn có thể làm cho nó điều khiển như dịch vụ ...

sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp 

Đặt một application.properties vào thư mục myapp của bạn, bạn có thể ghi đè lên một gói bên trong ứng dụng của bạn. Bằng cách này bạn không cần sử dụng các công tắc dòng lệnh. Chỉ cần chỉ định đường dẫn đến cấu hình nhật ký của bạn dưới dạng giá trị cho khóa thuộc tính logging.config bên trong nó.

LƯU Ý, tuy nhiên, giải pháp này thực sự không thực sự tốt nhất. Khi bạn đang chạy toàn bộ các dịch vụ trong sản xuất, bạn có thể muốn tìm một thứ gì đó dọc theo các dòng spring cloud config để định cấu hình bên ngoài và bạn cũng có thể muốn nhật ký của mình được tổng hợp tại dịch vụ tập trung cho phép tổng quan về tất cả các dịch vụ của bạn 'nhật ký ở một nơi.

+1

Vui lòng viết một số giải thích. –

+0

@ Jörg, Nhưng làm cách nào để viết phần này (khi phát hành liên kết tượng trưng): -Dlogging.config =/path/to/log4j.properties –

+0

@PacificNW_Lover cảm ơn vì đã kiên nhẫn hỏi một lần nữa - xem cập nhật của tôi –

1

Theo spring-boot deployment,

Một jar hoàn toàn thực thi có thể được thực hiện giống như bất kỳ nhị phân thực thi khác hoặc nó có thể được đăng ký với init.d hoặc systemd

Hãy chắc chắn rằng bạn xây dựng ứng dụng của bạn sử dụng các plug -in bên dưới (phiên bản gradle trong liên kết được chia sẻ):

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <configuration> 
     <executable>true</executable> 
    </configuration> 
</plugin> 

và như được hiển thị bởi Jörg, c reate một liên kết tượng trưng trong init.d: ​​

sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp 

Đó là phiên bản đơn giản :)

Nhiều câu hỏi của bạn, bạn cần để tùy chỉnh init và điều này có thể được thực hiện bởi một tập tin conf - tất cả các quy định trong tài liệu.

Ngoại trừ JARFILEAPP_NAME, các thiết lập có thể cấu hình sử dụng một file conf. Tệp được mong đợi bên cạnh tệp jar và có cùng tên nhưng được gắn với .conf thay vì .jar. Ví dụ: Ví dụ, một lọ có tên /var/myapp/myapp.jar sẽ sử dụng tệp cấu hình có tên /var/myapp/myapp.conf.

như: myapp.conf

JAVA_OPTS=-Xmx1024M 
LOG_FOLDER=/custom/log/folder 
Các vấn đề liên quan