Étant donné que Springboot est un cadre de microservice, sa méthode de déploiement de production doit être aussi simple que possible, ce qui fait une énorme différence par rapport aux applications Web conventionnelles. Il peut intégrer un conteneur Web, tel que Tomcat, jetée, etc., et n'a plus besoin de former l'application dans un formulaire spécifique spécifié par le conteneur.
Pour Springboot, l'emballage dans un package JAR simple et directement à l'aide de Java -jar peut être démarré. C'est une manière très élégante, mais elle apporte également certains problèmes, tels que: comment arrêter l'application? Dans le passé, les applications ont été déployées dans des conteneurs spécifiques, et les scripts fournis par le conteneur pourraient être élégamment interrompus, mais maintenant le conteneur est intégré et les scripts ont disparu. Que dois-je faire? Le meurtre direct est un moyen, mais cela semble trop grossier et peut apporter de nombreux problèmes inattendus.
Puisque nous pouvons penser aux problèmes, les fabricants de cadres aussi, alors, ils ont alors préparé des solutions pour nous? Il y a oui et je présenterai des solutions que j'ai apprises ci-dessous.
1. Utilisez des points de terminaison
Dans la partie 4 de la documentation officielle de Springboot, diverses fonctionnalités préparées pour la production d'applications sont introduites. Parmi eux, via le point de terminaison HTTP de l'actionneur, les développeurs peuvent facilement surveiller et gérer les applications.
Présentez le package de démarrage spécifié:
"org.springframework.boot: printemps-boot-starter-actuator: $ {Springbootversion}"Ouvrez les deux configurations suivantes dans Application.yml pour arrêter l'application via la demande HTTP
Gestion: Sécurité: Activé: FalseDendpoints: Shutdown: Activé: true
Les commandes d'opération sont les suivantes:
curl -x post http: // hôte: port / arrêt
Mais cette méthode a un problème très grave, c'est-à-dire que n'importe qui peut contrôler l'arrêt de l'application, qui est sans aucun doute inacceptable pour une application de production. Certaines personnes peuvent penser que l'adresse de lien est trop simple maintenant, et les non-conduisés peuvent facilement deviner si ce problème peut être évité si une adresse très complexe est utilisée. Très bien, cette proposition est bonne, jetons un coup d'œil aux configurations pertinentes fournies par Springboot.
Points de terminaison: arrêt: activé: vrai chemin: / xxx
Une fois la configuration terminée, la commande ci-dessus n'est plus disponible. La commande doit être mise à jour comme suit:
curl -x post http: // hôte: port / xxx
Bien sûr / xxx n'est celle que j'ai définie avec désinvolture, vous pouvez définir n'importe quelle adresse. Bien que la sécurité soit un peu plus élevée, un tel niveau de sécurité n'est toujours pas disponible pour être appliqué à l'environnement de production. Y a-t-il donc d'autres mesures de protection? Oui, en plus de modifier le chemin d'arrêt, nous pouvons également ajouter un contexte unifié à toutes les opérations de gestion, configurer des ports indépendants et restreindre l'accès IP spécifié (généralement limité à la machine native). La configuration est la suivante:
Gestion: Sécurité: Activé: False Port: 9001 Adresse: 127.0.0.1 Context-Path: / Admin
La commande de l'arrêt du service modifié est:
curl -x post http://127.0.0.1:9001/admin/xxx
C'est en fait assez sûr. Afin de garantir davantage la sécurité du système, ajoutez une couche d'autant HTTP Basic Auth.
Augmenter les dépendances en matière de sécurité:
"org.springframework.boot: printemps-boot-starter-security: $ {SpringbootVersion}"Modifiez le fichier de configuration comme suit:
Points de terminaison: arrêt: activé: vrai chemin: / xxxManagement: Security: Activé: True Port: 9001 Adresse: 127.0.0.1 Context-Path: / AdminSecurity: Basic: Activé: True Path: / Admin User: Nom: Root Motway: 123456
Une fois la configuration terminée, la commande finale d'arrêt est:
curl -x post -u root: 123456 http://127.0.0.1:9001/admin/xxx
2. Inscrivez-vous en tant que service système
En plus d'exécuter des applications Springboot avec Java -Jar, vous pouvez facilement vous inscrire en tant que service système Linux / Unix avec init.d ou systemd, ce qui facilite l'installation et la gestion des applications Springboot dans un environnement de production.
Dans le projet Maven, afin de créer un pot "entièrement exécutable", les plug-ins suivants doivent être introduits:
<Singin> <proupId> org.springframework.boot </prôned> <ArtifactId> printemps-boot-maven-plugin </ artifactId> <DERSE> 1.5.2.release </ version> <Fonfice> <Exécutable> true </ Execupable> </ Configuration> </ Plugin>
Dans le projet Gradle, la configuration équivalente est la suivante:
Plugins {id 'org.springframework.boot' version '1.5.2.release'} Springboot {execute = true}Une fois la configuration terminée, vous pouvez exécuter l'application construite via ./Application-Name.jar.
Enfin, nous devons installer l'application emballée dans un service init.d, afin qu'il puisse être facilement géré à l'aide de Unix / Linux. La méthode de fonctionnement est très simple. Il vous suffit de simplement lier l'application à init.d (où Funda est mon propre nom d'application, et vous devez le remplacer en fonction de la situation lors de l'expérimentation).
ln -s /app/funda/funda.jar /etc/init.d/funda
Vérifiez si le lien est établi avec succès
ls -l /etc/init.d/funda
Démarrer le service et le journal des applications peut afficher le fichier /var/log/funda.log
Service Funda Start
Autres commandes communes
# Vérifiez la demande en cours d'exécution Statut Service Funda Statut # Arrêtez le service de demande Funda Stop
Résumé des questions:
Une fois le lien réussi, l'application ne peut pas être démarrée avec succès. Il est invité à ne pas pouvoir trouver Java. Utilisez la commande suivante pour lier la commande JDK Java vers / sbin / java.
ln -s /usr/local/jdk1.8.0_131/bin/java / sbin / java
Lien de référence:
Points de terminaison
Surveillance et gestion sur HTTP
Services Unix / Linux
Impossible de trouver Java # 5690
Lien du projet:
Github: https://github.com/qchery/funda
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.