[JAVA] WAR die WEB-Anwendung per Spring Boot und stellen Sie sie auf dem Tomcat-Server bereit
Annahme
- AmazonLinux2(EC2)
- JDK1.8.0
- MySQL 8.0
- Das Konfigurationsmanagement ist Gradle 6.0
- Hier hat bereits eine Anwendungsserverumgebung mit EC2 und RDS erstellt. Ursprünglich war die EC2-Instanz auf Mikro eingestellt, aber da der Build aufgrund von Speichermangel fehlschlug, wurde sie auf Mittel gesetzt.
- Tomcat und JDK sind bereits unter [hier] installiert (https://qiita.com/fftcy-sttkm/items/b3e083df38edded7d82f). Dieses Mal benutze ich Apache nicht und benutze vorerst nur Tomcat.
- Klonen Sie das Projekt von GitHub.
Beschreibung für die Kriegsbereitstellung zur Klasse hinzugefügt, die Spring ausführt
- Als ich das Projekt erstellt habe, wurde meiner Meinung nach eine Klasse erstellt, die Spring automatisch ausführt (Klasse mit Annotation @SpringBootApplication).
- Hier ist eine Beschreibung, um es als Krieg einsetzbar zu machen. Siehe Spring Official.
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
Gradle Einstellungen und Build
Gradle-Einstellungen
- Nehmen Sie Einstellungen für die Erstellung eines Krieges vor.
archiveName
ist der Name des Krieges.
- Der in SpringBoot integrierte Tomcat ist so eingestellt, dass er nicht mit dem auf EC2 in Konflikt steht
- Außerdem habe ich in meinem Fall auch den Bildschirmtestcode von Selenied in das Projekt aufgenommen, sodass ich eine Einstellung geschrieben habe, um dies im Test auszuschließen.
plugins {
id 'org.springframework.boot' version '2.2.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
id 'war'
}
// ~Kürzung~
war {
enabled = true
archiveName = 'sample.war'
}
dependencies {
// ~Kürzung~
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}
test {
// ~Kürzung~
exclude 'com/example/demo/ViewTest.class'
}
Bauen Sie auf EC2 auf
Git klone
das WEB-Anwendungsprojekt in deinem Home-Verzeichnis.
- Reflektieren Sie die RDS-Einstellungen in application.properties im Projekt.
Projektanwendung.Im Verzeichnis mit den Eigenschaften
$ sudo vim application.properties
application.properties
spring.datasource.url=jdbc:mysql://RDS-Endpunkt:3306/Name der Datenbank?serverTimezone=JST
spring.datasource.username=******
spring.datasource.password=***********
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.open-in-view=true
#~Kürzung~
- Führen Sie den Befehl gradlew build aus. Wenn der Build erfolgreich ist, wird "sample.war" in "Projektname / build / libs" generiert.
- Obwohl ich es noch nicht weiß, wurde auch ein Krieg namens "Projektname -0.0.1-SNAPSHOT.war" generiert (ist der Inhalt der gleiche wie sample.war?).
Im Projektverzeichnis
$ ./gradlew build
Stellen Sie den generierten Krieg für Tomcat bereit
- Kopieren Sie
sample.war
unter tomcat / webapps
. * In meinem Fall in / opt / tomcat-9 / webapps
bereitstellen.
$ cp sample.war /opt/tomcat-9/webapps/
$ sudo systemctl restart tomcat
Die App funktioniert, wenn Sie wie ↓ darauf zugreifen.
http://EC2のエンドポイント:8080/sample/作成アプリに応じたリクエスト先