[JAVA] Déployer l'application SpringBoot sur AWS EC2

J'ai créé une application Spring Boot en utilisant Gradle. J'ai écrit sur la procédure pour déployer ceci sur AWS EC2.

Créer un fichier jar exécutable

Créer un fichier jar exécutable avec la tâche bootJar de gradle Référence: https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/gradle-plugin/reference/html/#packaging-executable-and-normal

build.gradle


bootJar {
    launchScript()
}

Puis sur la ligne de commande

$ gradle bootJar

Une fois exécuté, un fichier jar est créé dans ./build/libs/

Transférez ce fichier jar vers EC2

Le fichier jar créé cette fois est nommé WebToDoStarter-0.0.1-SNAPSHOT.jar et est placé sur le bureau.

Transférez ce fichier vers EC2 en utilisant sftp

$ sftp -i Chemin d'accès à la clé AWS ec2-user@IP publique IPv4

sftp> put Desktop/WebToDoStarter-0.0.1-SNAPSHOT.jar
Uploading Desktop/WebToDoStarter-0.0.1-SNAPSHOT.jar to /home/ec2-user/WebToDoStarter-0.0.1-SNAPSHOT.jar
Desktop/WebToDoStarter-0.0.1-SNAPSHOT.jar                                           100%   20MB   1.2MB/s   00:17   

Accéder à EC2 avec ssh

$ ssh -i Chemin d'accès à la clé AWS ec2-user@IP publique IPv4

Vérifiez si le fichier a été transféré

$ ls
WebToDoStarter-0.0.1-SNAPSHOT.jar

Il y a

Installation du JDK

Essayez d'installer java8

$ sudo yum install java-1.8.0-openjdk-devel.x86_64
$ java -jar WebToDoStarter-0.0.1-SNAPSHOT.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/example/demo/WebToDoApplication has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
	at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

C'est une erreur, apparemment la version est ancienne en java8

Version du fichier de classe et version JRE

Version du fichier de classe Version JRE
49 Java 5
50 Java 6
51 Java 7
52 Java 8
53 Java 9
54 Java 10
55 Java 11
56 Java 12
57 Java 13
58 Java 14

Trouver un JDK supérieur à Java 8

$ sudo yum search java
============================================================================ N/S matched: java =============================================================================
~ abrégé ~
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment 8
~ abrégé ~
java-11-amazon-corretto.x86_64 : Amazon Corretto development environment

java-11-amazon-corretto peut être utilisé jusqu'à java11

Installation de java-11-amazon-corretto

$ sudo yum install -y java-11-amazon-corretto.x86_64

Vous ne pouvez pas simplement l'installer

Changer de version

$ sudo alternatives --config java

Il y a 2 programmes'java'Fournir.

Sélectionnez la commande

*+ 1       java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.amzn2.0.1.x86_64/jre/bin/java)
   2         /usr/lib/jvm/java-11-amazon-corretto.x86_64/bin/java

Appuyez sur Entrée pour sélectionner le[+]Ou entrez le numéro de sélection:2   
$ java --version
openjdk 11.0.7 2020-04-14 LTS
OpenJDK Runtime Environment Corretto-11.0.7.10.1 (build 11.0.7+10-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.7.10.1 (build 11.0.7+10-LTS, mixed mode)

Maintenant tu peux le faire

Tomcat, qui est un conteneur de servlet pour exécuter Java Servlet, n'a pas besoin d'être installé cette fois. En effet, il est déployé avec un fichier jar qui peut être exécuté par le Tomcat intégré.

$ java -jar WebToDoStarter-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.1.RELEASE)

Au fait, pour changer le numéro de port de l'application

application.yml


server:
  port: 8081

Ajouter

Recommended Posts

Déployer l'application SpringBoot sur AWS EC2
Déployer l'application sur WildFly
Comment créer un serveur d'applications sur une instance EC2 d'AWS
Comment déployer l'application Rails sur AWS (résumé de l'article)
Comment publier une application à l'aide de la construction d'environnement d'instance AWS (3) EC2
Déployez l'application avec VPC + EC2 + Docker.
Déployer des rails sur ECS Fargate avec AWS Copilot
Comment installer Ruby sur une instance EC2 d'AWS
Mémo pour créer un environnement Servlet sur EC2 d'AWS
Étapes de déploiement sur Heroku
Comment déployer Java sur AWS Lambda avec Serverless Framework
Déployer laravel à l'aide de docker sur EC2 sur AWS ① (Créer une instance EC2)
Déployer RAILS sur EC2
Déployez laravel à l'aide de docker sur EC2 sur AWS ② (Elastic IP acquisition-binding)
[AWS] Lier l'utilisation de la mémoire de l'instance Ubuntu EC2 à CloudWatch
Déployer laravel à l'aide de docker sur EC2 sur AWS ④ (git clone-deploy, migration)
Déployez l'application créée par Spring Boot sur Heroku (public) ②
Déployez l'application créée par Spring Boot sur Heroku (public) ①
Comment déployer une application kotlin (java) sur AWS Fargate
Comment déployer une application Java sur Alibaba Cloud EDAS dans Eclipse
Déployer avec EC2 / Docker / Laravel
Présentation de l'AWS CLI à CentOS 7
Passer d'AWS à PaizaCloud
Introduction au développement d'applications Android
Comment déployer avec heroku
Installer docker sur AWS EC2
Réécriture de l'applet à l'application
Déployer laravel à l'aide de docker sur EC2 sur AWS ③ (connexion SSH ~ installation Docke-compose)
Comment créer un serveur Web sur une instance EC2 d'AWS