2017-09-12 5 views
13

Dispose d'un microservice basé sur Spring Boot (1.5.4.RELEASE) dans lequel je déploie un fichier jar sur une instance AWS EC (environnement Linux). Maintenant, je déploie également un fichier log4j.properties externe, donc je dois commencer la Microservice comme ceci:Comment exporter le fichier log4j.properties avec Spring Boot Microservice et l'exécuter en tant que service Linux?

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

Comment puis-je configurer cette Microservice Boot Spring en tant que service Linux où je peux démarrer et arrêter l'utilisation de ces drapeaux:

sudo service myapp start | stop | status | restart 

Merci beaucoup.

+0

vous devez écrire un wrapper de service java. Cet exemple pourrait être utile. http: //www.jcgonzalez.com/linux-java-service-wrapper-example – edt

+1

Tout cela est très bien expliqué dans la documentation officielle à https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html # deployment-initd-service – Val

+0

J'espère que la réponse que vous obtiendrez ici https://stackoverflow.com/questions/21503883/spring-boot-application-as-a-service –

Répondre

5

En utilisant un lien symbolique vers votre application springboot vous pouvez le rendre contrôlable tant que service ...

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

Placer un application.properties dans votre dossier myapp vous pouvez remplacer celui fourni dans votre application. De cette façon, vous n'avez pas besoin d'utiliser les commutateurs de ligne de commande. Spécifiez simplement le chemin de votre configuration de journal en tant que valeur de la clé de propriété logging.config à l'intérieur de celle-ci.

NOTEZ, cependant, que cette solution n'est pas vraiment la meilleure pratique. Une fois que vous exécutez tout un tas de services en production, vous préférez probablement opter pour quelque chose du type spring cloud config pour externaliser la configuration et vous voulez probablement que vos journaux soient agrégés dans un service centralisé qui permette une vue d'ensemble de tous vos services 'se connecte à un endroit.

+1

Veuillez écrire quelques explications. –

+0

@ Jörg, Mais comment puis-je écrire cette partie (lors de l'émission du lien symbolique): -Dlogging.config =/chemin/vers/log4j.properties –

+0

@PacificNW_Lover merci de patiemment demander une fois de plus - voir ma mise à jour –

1

Comme par spring-boot deployment,

Un pot entièrement exécutable peut être exécuté comme tout autre binaire exécutable ou il peut être enregistré auprès init.d ou systemd

Assurez-vous de construire votre application en utilisant la fiche -en dessous (version gradle en lien partagé):

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

et comme montré par Jörg, c réer un lien symbolique dans init.d: ​​

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

C'est la version simplifiée :)

Plus à votre question, vous devez personnaliser l'initialisation et cela peut être fait par un fichier conf - tous spécifié dans la documentation.

À l'exception des JARFILE et APP_NAME, les paramètres peuvent être configurés à l'aide un fichier .conf. Le fichier est attendu à côté du fichier jarre et porte le même nom mais suffixé avec .conf plutôt que .jar. Par exemple, un fichier jar nommé /var/myapp/myapp.jar utilisera le fichier de configuration nommé /var/myapp/myapp.conf.

tels que: myapp.conf

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