[JAVA] Stellen Sie die SpringBoot-Anwendung in AWS EC2 bereit

Ich habe mit Gradle eine Spring Boot-Anwendung erstellt. Ich habe über das Verfahren zum Bereitstellen auf AWS EC2 geschrieben.

Erstellen Sie eine ausführbare JAR

Erstellen Sie eine ausführbare JAR mit der bootJar-Task von gradle Referenz: https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/gradle-plugin/reference/html/#packaging-executable-and-normal

build.gradle


bootJar {
    launchScript()
}

Dann in der Kommandozeile

$ gradle bootJar

Bei der Ausführung wird eine JAR-Datei in ./build/libs/ erstellt.

Übertragen Sie diese JAR-Datei auf EC2

Der Name der diesmal erstellten JAR-Datei lautet WebToDoStarter-0.0.1-SNAPSHOT.jar und wird auf dem Desktop abgelegt.

Übertragen Sie diese Datei mit sftp auf EC2

$ sftp -i AWS-Schlüsselpfad ec2-user@IPv4 öffentliche IP

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   

Zugriff auf EC2 mit ssh

$ ssh -i AWS-Schlüsselpfad ec2-user@IPv4 öffentliche IP

Überprüfen Sie, ob die Datei übertragen wurde

$ ls
WebToDoStarter-0.0.1-SNAPSHOT.jar

Es gibt

JDK-Installation

Versuchen Sie, Java8 zu installieren

$ 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)

Es ist ein Fehler, anscheinend ist die Version in Java8 alt

Klassendateiversion und JRE-Version

Klassendateiversion JRE-Version
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

Suchen Sie ein JDK höher als Java 8

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

Java-11-Amazon-Corretto kann bis zu Java11 verwendet werden

Installation von Java-11-Amazon-Corretto

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

Sie können es nicht einfach installieren

Versionen wechseln

$ sudo alternatives --config java

Es gibt 2 Programme'java'Bereitstellen.

Befehl auswählen

*+ 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

Drücken Sie die Eingabetaste, um den aktuellen auszuwählen[+]Oder geben Sie die Auswahlnummer ein: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)

Jetzt kannst du es tun

Tomcat, ein Servlet-Container zum Ausführen von Java Servlet, muss dieses Mal nicht installiert werden. Dies liegt daran, dass es mit einer JAR-Datei bereitgestellt wird, die vom integrierten Tomcat ausgeführt werden kann.

$ java -jar WebToDoStarter-0.0.1-SNAPSHOT.jar

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

Übrigens, um die Portnummer der Anwendung zu ändern

application.yml


server:
  port: 8081

Hinzufügen

Recommended Posts

Stellen Sie die SpringBoot-Anwendung in AWS EC2 bereit
Stellen Sie die Anwendung auf WildFly bereit
So erstellen Sie einen Anwendungsserver auf einer EC2-Instanz von AWS
So stellen Sie die Rails-Anwendung in AWS bereit (Artikelzusammenfassung)
So veröffentlichen Sie eine Anwendung mithilfe der AWS (3) EC2-Instanzumgebungskonstruktion
Stellen Sie die Anwendung mit VPC + EC2 + Docker bereit.
Stellen Sie Rails mit AWS Copilot für ECS Fargate bereit
So installieren Sie Ruby auf einer EC2-Instanz von AWS
Memo zum Erstellen einer Servlet-Umgebung auf EC2 von AWS
Schritte zur Bereitstellung in Heroku
So stellen Sie Java mit Serverless Framework für AWS Lambda bereit
Bereitstellen von Laravel mit Docker auf EC2 unter AWS ① (EC2-Instanz erstellen)
Stellen Sie RAILS auf EC2 bereit
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (Elastic IP Acquisition-Linking).
[AWS] Verknüpfen Sie die Speichernutzung der Ubuntu EC2-Instanz mit CloudWatch
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (Git Clone-Deployment, Migration).
Stellen Sie die von Spring Boot erstellte Anwendung für Heroku (öffentlich) bereit ②
Stellen Sie die von Spring Boot erstellte Anwendung für Heroku (öffentlich) bereit ①
So stellen Sie eine Kotlin (Java) -App auf AWS fargate bereit
So stellen Sie eine Java-Anwendung in Alibaba Cloud EDAS in Eclipse bereit
Bereitstellung mit EC2 / Docker / Laravel
Einführung von AWS CLI in CentOS 7
Wechsel von AWS zu PaizaCloud
Einführung in die Android App-Entwicklung
Wie man mit Heroku einsetzt
Installieren Sie Docker auf AWS EC2
Umschreiben von Applet zu Anwendung
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (SSH-Verbindung ~ Docke-Compose-Installation)
So erstellen Sie einen Webserver auf einer EC2-Instanz von AWS