2017-09-12 3 views
13

Haben Sie einen Spring Boot (1.5.4.RELEASE) basierten Microservice, den ich ein jar zu einer AWS EC Instance (Linux-Umgebung) bereitstellen. Nun, ich bin die Bereitstellung auch eine externe Datei log4j.properties so habe ich die Micro wie folgt beginnen:Wie Log4j.properties Datei mit Spring Boot Microservice zu starten und es als Linux-Service ausführen?

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

Wie kann ich diesen Frühling Boot-Micro als Linux-Dienst so konfigurieren, wo ich anfangen und es mit stoppen können diese flags:

sudo service myapp start | stop | status | restart 

Vielen Dank.

+0

benötigen Sie einen Java-Service-Wrapper zu schreiben. Dieses Beispiel könnte nützlich sein. http: //www.jcgonzalez.com/linux-java-service-wrapper-example – edt

+1

Das ist alles ziemlich gut in der offiziellen Dokumentation unter https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html erklärt # deployment-initd-service – Val

+0

Ich hoffe, die Antwort erhalten Sie hier https://stackoverflow.com/questions/21503883/spring-boot-application-as-a-service –

Antwort

5

einen symbolischen Link zu Ihrer springboot App können Sie es als Service machen steuerbar ...

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

einen application.properties in Ihrem myapp Ordner platzieren können Sie die eine in Ihrem App gebündelt außer Kraft setzen. Auf diese Weise müssen Sie keine Befehlszeilenschalter verwenden. Geben Sie einfach den Pfad zu Ihrer Protokollkonfiguration als Wert für den Eigenschaftsschlüssel logging.config an.

HINWEIS, aber diese Lösung ist nicht wirklich Best Practice. Wenn Sie eine ganze Reihe von Diensten in der Produktion ausführen, möchten Sie wahrscheinlich eher etwas nach dem Vorbild spring cloud config für die Externalisierung der Konfiguration wählen und wahrscheinlich möchten Sie Ihre Protokolle in einem zentralisierten Dienst zusammenfassen, der einen Überblick über alle Ihre Dienste ermöglicht "Loggt sich an einem Ort ein.

+1

Bitte schreiben Sie eine Erklärung. –

+0

@ Jörg, aber wie schreibe ich diesen Teil (wenn die symoblic Link Ausgabe): -Dlogging.config =/path/to/log4j.properties –

+0

@PacificNW_Lover Dank für wieder geduldig zu fragen - mein Update –

1

Per spring-boot deployment,

Eine voll ausführbare jar kann wie jede andere ausführbare Binärdatei ausgeführt werden oder es kann mit init.d oder systemd

registriert werden Stellen Sie sicher, Ihre Anwendung mit dem Stecker bauen -in unten (Großansicht Version in geteilter Link):

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

und wie von Jörg, c reate einen symbolischen Link in init.d: ​​

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

Das ist die vereinfachte Version ist :)

Mehr zu Ihrer Frage, müssen Sie die init anpassen und kann dies durch eine conf Datei durchgeführt werden - alle angegebenen in der Dokumentation.

Mit Ausnahme von JARFILE und APP_NAME können die Einstellungen mit einer Conf-Datei konfiguriert werden. Die Datei wird neben der Datei jar erwartet und hat den gleichen Namen, aber suffixed mit .conf anstelle von .jar. Beispiel: Ein JAR namens /var/myapp/myapp.jar verwendet die Konfigurationsdatei mit dem Namen /var/myapp/myapp.conf.

wie: myapp.conf

JAVA_OPTS=-Xmx1024M 
LOG_FOLDER=/custom/log/folder 
Verwandte Themen