C'est la procédure pour déployer le projet Spring Boot sur l'instance EC2 et créer une API très simple. Dans ①, déployez d'abord le projet sur EC2 et créez une API qui renvoie POJO.
Tout d'abord, créez une API REST très simple qui renvoie POJO sur l'instance EC2. Ce sera la prochaine fois que vous vous connectez à MySQL et récupérez les données.
Cet article n'explique pas en détail le démarrage à ressort ou AWS. Par conséquent, pour ceux qui veulent essayer AWS en utilisant Spring pour le moment.
Tout d'abord, générez un modèle pour le projet Spring Boot avec Spring initializr. Comme son nom l'indique, spring initializr facilite la création d'un modèle pour un projet de démarrage à ressort. En plus de pouvoir spécifier la version, c'est très pratique car vous pouvez créer un modèle avec la bibliothèque spécifiée, etc. inclus.
Laissons le groupe et l'artefact tels quels. L'important, ce sont les dépendances. Ajoutons ce qui suit aux dépendances.
Une fois ajouté, ce sera comme suit.
Appuyez sur Generate Priject
pour télécharger le projet.
Décompressez le projet que vous avez téléchargé précédemment et ouvrez-le avec un IDE. Cet article utilise intelliJ.
Commencez par commenter les bibliothèques JPA et MySQL dans pom.xml
.
Je ne l'utiliserai pas dans cet article, mais je l'utiliserai à partir de la prochaine fois. De plus, si vous ne commentez pas ici, cela provoquera une erreur plus tard.
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>
...
** Faisons la structure du paquet sous main comme suit **
main └ java ┗ com.example.demo ┣ controller └ PersonController.java ┣ service └ PersonService.java ┣ model └ Person.java └ DemoApplication.java
Ce n'est pas grave si cela ressemble à ce qui suit dans intelliJ.
** Puis réécrivez chaque fichier comme suit **
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();
}
}
** Faisons le **
Ce n'est pas grave si vous accédez à http: // localhost: 8080 / person
et obtenez la réponse suivante.
Package du projet créé cette fois pour l'exécution sur l'instance EC2.
$ mvn clean package
Cela générera un fichier jar dans target /
.
Créons maintenant une instance EC2.
Tout d'abord, accédons à AWS.
** ① Passez à EC2 à partir du service dans la barre d'outils. ** **
** ② Cliquez sur Créer une instance. ** **
** ③ Sélectionnez Amazon Linux en haut. ** **
** ④ Accédez aux paramètres des détails de l'instance **
** ⑤ Passer à la page des paramètres du groupe de sécurité **
** ⑥ Ajouter des règles ** Cliquez sur "Confirmer et créer" lorsque vous avez terminé.
** ⑦ Instance de lancement ** Cliquez sur "Démarrer" pour démarrer l'instance.
** ⑧ Création d'une paire de clés ** Tout d'abord, entrez le nom de la paire de clés. Après le téléchargement, créez une instance.
Ceci termine la création de l'instance.
Jetons un coup d'œil aux informations d'instance créées précédemment. ** Faites une copie du DNS public. ** **
Ssh accédons à l'instance EC2 en utilisant le fichier pem téléchargé.
$ ssh -i ~/Downloads/demo.pem ec2-user@Le DNS public que vous avez copié précédemment
//Miam miam mettre à jour juste au cas où
$ sudo yum update
** * À l'origine, placez le fichier pem dans un emplacement approprié tel que sous .ssh /
. ** **
Si vous pouvez y accéder, essayez d'exécuter une jolie commande. (Ls, cd, etc.)
Utilisez la commande sftp pour placer le fichier jar sous target
créé localement sur l'instance ec2.
Déconnectez-vous de l'instance avec ʻexit` etc. ou déplacez-vous vers le répertoire du projet Spring Boot plus tôt dans un autre onglet.
Puis transférez le fichier avec sftp
.
$ sftp -i ~/Downloads/demo.pem ec2-user@Le DNS public que vous avez copié précédemment
$ 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
Une fois le téléchargement terminé, essayez de vous connecter à nouveau à l'instance EC2.
$ ssh -i ~/Downloads/demo.pem ec2-user@Le DNS public que vous avez copié précédemment
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
$ ls
demo-0.0.1-SNAPSHOT.jar
Assurez-vous que le fichier jar est téléchargé avec la commande ls.
Exécutez maintenant le jar sur l'instance ec2.
$ $ 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)
Oups, une erreur s'est produite. Cette fois, j'ai développé avec Java 1.8 localement, mais une erreur se produit car la version Java incluse par défaut dans Amazon linux est 1.7.
$ 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)
Tout d'abord, installons Java 1.8.
$ sudo yum install -y java-1.8.0-openjdk.x86_64
Changer de version avec la commande ʻalternatives`
$ sudo alternatives --config java
Il y a 2 programmes'java'Fournir.
Sélectionnez la commande
-----------------------------------------------
*+ 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
Appuyez sur Entrée pour sélectionner le courant[+]Ou entrez le numéro de sélection: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)
Après avoir confirmé que la version a été changée, réessayez.
$ 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 ''
~
Si vous pouvez le démarrer en toute sécurité, essayez d'y accéder à partir d'un navigateur ou avec curl.
$ curl http://DNS de l'instance ec2 créée:8080/person
{"name":"hoge","age":16,"gender":"man"}
Json est renvoyé en toute sécurité.
Ce qui précède est la section pour créer facilement une API avec EC2 + spring boot. Il y a de nombreux endroits où je me suis cassé, il serait donc utile que vous commentiez les points sur lesquels vous êtes tombés.
la prochaine fois Essayez de créer une API simple avec EC2 + RDS + Spring boot ② * Écriture
Recommended Posts