Dies ist das Verfahren zum Bereitstellen des Spring-Boot-Projekts auf der EC2-Instanz und zum Erstellen einer sehr einfachen API. Stellen Sie in ① zuerst das Projekt in EC2 bereit und erstellen Sie eine API, die POJO zurückgibt.
Erstellen Sie zunächst eine sehr einfache REST-API, die POJO auf der EC2-Instanz zurückgibt. Es wird das nächste Mal sein, eine Verbindung zu MySQL herzustellen und die Daten abzurufen.
In diesem Artikel werden Spring Boot oder AWS nicht im Detail erläutert. Daher für diejenigen, die AWS vorerst mit spring ausprobieren möchten.
Generieren Sie zunächst mit Spring initializr eine Vorlage für das Spring-Boot-Projekt. Wie der Name schon sagt, erleichtert spring initializr das Erstellen einer Vorlage für ein Spring-Boot-Projekt. Zusätzlich zur Angabe der Version ist dies sehr praktisch, da Sie eine Vorlage mit der angegebenen Bibliothek usw. erstellen können.
Lassen wir Group und Artifact so wie sie sind. Das Wichtigste sind Abhängigkeiten. Fügen wir den Abhängigkeiten Folgendes hinzu.
Wenn hinzugefügt, wird es wie folgt sein.
Drücken Sie "Generate Priject", um das Projekt herunterzuladen.
Entpacken Sie das zuvor heruntergeladene Projekt und öffnen Sie es mit einer IDE. Dieser Artikel verwendet IntelliJ.
Kommentieren Sie zunächst die JPA- und MySQL-Bibliotheken in pom.xml
aus.
Ich werde es in diesem Artikel nicht verwenden, aber ich werde es ab dem nächsten Mal verwenden. Wenn Sie hier keinen Kommentar abgeben, wird dies später zu einem Fehler führen.
pom.xml
...
<dependencies>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-data-jpa</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>mysql</groupId>-->
<!--<artifactId>mysql-connector-java</artifactId>-->
<!--<scope>runtime</scope>-->
<!--</dependency>-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
...
** Machen wir die Paketstruktur unter main wie folgt **
main └ java ┗ com.example.demo ┣ controller └ PersonController.java ┣ service └ PersonService.java ┣ model └ Person.java └ DemoApplication.java
Es ist in Ordnung, wenn es in IntelliJ wie folgt aussieht.
** Dann schreibe jede Datei wie folgt um **
Person.java
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Data
public class Person {
private String name;
private Integer age;
private String gender;
}
PersonService.java
@Service
public class PersonService {
public Person getPerson(){
return new Person().builder()
.name("hoge")
.age(16)
.gender("man")
.build();
}
}
PersonController.java
@RestController
@RequiredArgsConstructor
public class PersonController {
private final PersonService personService;
@RequestMapping(path= "person", method = RequestMethod.GET)
public Person getPerson(){
return personService.getPerson();
}
}
** Machen wir das **
Es ist in Ordnung, wenn Sie auf "http: // localhost: 8080 / person" zugreifen und die folgende Antwort erhalten.
Paketieren Sie das diesmal erstellte Projekt zur Ausführung auf der EC2-Instanz.
$ mvn clean package
Dies erzeugt eine JAR-Datei in target /
.
Jetzt erstellen wir eine EC2-Instanz.
Lassen Sie uns zunächst auf AWS zugreifen.
** ① Wechseln Sie vom Dienst in der Symbolleiste zu EC2. ** ** **
** ② Klicken Sie auf Instanz erstellen. ** ** **
** ③ Wählen Sie oben Amazon Linux aus. ** ** **
** ④ Gehen Sie zu den Einstellungen für Instanzdetails **
** ⑤ Zur Einstellungsseite für Sicherheitsgruppen springen **
** ⑥ Regeln hinzufügen ** Klicken Sie auf "Bestätigen und erstellen", wenn Sie fertig sind.
** ⑦ Instanz starten ** Klicken Sie auf "Start", um die Instanz zu starten.
** ⑧ Schlüsselpaar erstellen ** Geben Sie zuerst den Namen des Schlüsselpaars ein. Erstellen Sie nach dem Herunterladen eine Instanz.
Damit ist die Instanzerstellung abgeschlossen.
Werfen wir einen Blick auf die zuvor erstellten Instanzinformationen. ** Erstellen Sie eine Kopie des öffentlichen DNS. ** ** **
Lassen Sie uns mit der heruntergeladenen PEM-Datei auf die EC2-Instanz zugreifen.
ec2-user @
in DNS angeben. *$ ssh -i ~/Downloads/demo.pem ec2-user@Das öffentliche DNS, das Sie zuvor kopiert haben
//Lassen Sie uns für alle Fälle aktualisieren
$ sudo yum update
** * Platzieren Sie die PEM-Datei ursprünglich an einem geeigneten Ort, z. B. unter ".ssh /". ** ** **
Wenn Sie darauf zugreifen können, versuchen Sie, einen netten Befehl auszuführen. (Ls, CD usw.)
Verwenden Sie den Befehl sftp, um die JAR-Datei unter "Ziel" zu platzieren, das lokal auf der ec2-Instanz erstellt wurde.
Melden Sie sich mit exit
usw. von der Instanz ab oder wechseln Sie auf einer anderen Registerkarte in das Verzeichnis des Spring-Boot-Projekts.
Übertragen Sie dann die Datei mit sftp
.
$ sftp -i ~/Downloads/demo.pem ec2-user@Das öffentliche DNS, das Sie zuvor kopiert haben
$ sftp> put target/demo-0.0.1-SNAPSHOT.jar
Uploading target/demo-0.0.1-SNAPSHOT.jar to /home/ec2-user/demo-0.0.1-SNAPSHOT.jar
targ 100% 18MB 1.1MB/s 00:16
Versuchen Sie nach Abschluss des Uploads erneut, sich bei der EC2-Instanz anzumelden.
$ ssh -i ~/Downloads/demo.pem ec2-user@Das öffentliche DNS, das Sie zuvor kopiert haben
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
$ ls
demo-0.0.1-SNAPSHOT.jar
Stellen Sie sicher, dass die JAR-Datei mit dem Befehl ls hochgeladen wird.
Führen Sie nun das Glas auf der ec2-Instanz aus.
$ $ java -jar demo-0.0.1-SNAPSHOT.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:808)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:443)
at java.net.URLClassLoader.access$100(URLClassLoader.java:65)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.net.URLClassLoader$1.run(URLClassLoader.java:349)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:348)
at java.lang.ClassLoader.loadClass(ClassLoader.java:430)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:323)
at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Hoppla, es ist ein Fehler aufgetreten. Dieses Mal habe ich lokal mit Java 1.8 entwickelt, aber ein Fehler tritt auf, weil die in Amazon Linux standardmäßig enthaltene Java-Version 1.7 ist.
$ java -version
java version "1.7.0_201"
OpenJDK Runtime Environment (amzn-2.6.16.0.78.amzn1-x86_64 u201-b00)
OpenJDK 64-Bit Server VM (build 24.201-b00, mixed mode)
Lassen Sie uns zunächst Java 1.8 installieren.
$ sudo yum install -y java-1.8.0-openjdk.x86_64
Wechseln Sie die Versionen mit dem Befehl "Alternativen"
$ sudo alternatives --config java
Es gibt 2 Programme'java'Bereitstellen.
Befehl auswählen
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
Drücken Sie die Eingabetaste, um den aktuellen auszuwählen[+]Oder geben Sie die Auswahlnummer ein:2
$ java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Versuchen Sie es erneut, nachdem Sie bestätigt haben, dass die Version gewechselt wurde.
$ java -jar demo-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.2.RELEASE)
~
2019-02-05 02:55:55.282 INFO 8556 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
~
Wenn Sie es sicher starten können, versuchen Sie, über einen Browser oder mit Curl darauf zuzugreifen.
$ curl http://DNS der erstellten ec2-Instanz:8080/person
{"name":"hoge","age":16,"gender":"man"}
Json wird sicher zurückgegeben.
Das obige ist der Abschnitt zum einfachen Erstellen einer API mit EC2 + Spring Boot. Es gibt viele Stellen, an denen ich pleite war. Es wäre also hilfreich, wenn Sie die Punkte kommentieren könnten, auf die Sie gestoßen sind.
nächstes Mal Versuchen Sie, mit EC2 + RDS + Spring Boot eine einfache API zu erstellen ② * Schreiben
Recommended Posts