[LINUX] So stellen Sie Java-Apps unter VPS bereit (Apache / Tomcat-Installation / Verknüpfung)

1. 1. Einführung

Da ich neulich eine Servlet-App erstellt habe, habe ich einen VPS-Server gemietet, um die App im Web bereitzustellen, aber ich hatte enorme Schwierigkeiten beim Aufbau der Umgebung, da ich fast keine Kenntnisse über Linux und Server hatte. Hier möchte ich zusätzlich zum eigentlichen Verfahren auf "Was ist für die Bereitstellung einer Java-Anwendung erforderlich?" Und "Was ist Ajp-Zusammenarbeit?" Berühren und es als Memorandum zusammenfassen.

2. Umgebung

Als Referenz werde ich diesmal meine Umgebung veröffentlichen.


VPS
・ Sakuras VPS -OS: CentOS Linux Release 7.8.2003
JDK
-Version: 1.8.0_262
Apache
-Version: Apache 2.4.6
Tomcat
-Version: Apache-Tomcat 9.0.37

3. 3. Wie kann ich eine Java-App im Web bereitstellen?

Umgebung für die Bereitstellung von Java-Apps

Im Gegensatz zu statischen Inhalten (HTML-Dateien usw.) können dynamische Inhalte (Java-Apps usw.) nur verarbeitet werden, wenn zusätzlich zum ** Webserver ein "Anwendungsserver" installiert ist. ** (Außerdem müssen Sie JDK installieren, um Java-Dateien auszuführen.) Dieses Mal verwenden wir "Apache" als Webserver und "Tomcat" als Anwendungsserver.

server1.png Da ein allgemeiner Mietserver die Serverumgebung nicht wie gewünscht anordnen kann, müssen Sie einen Server wie VPS (Virtual Dedicated Server) verwenden, mit dem Sie Ihre eigene Umgebung erstellen können. Dann, wie in der obigen Abbildung gezeigt, ** Wie kann ich den Webserver (Apache) und den Anwendungsserver (Tomcat) verbinden? ** Zu diesem Zeitpunkt wird "AJP (Apache JServ Protocol)" verwendet.

Was ist Ajp (Apache JServ Protocol)?

ajp ist ein Protokoll zum Verbinden von Apache und Tomcat, aber was ist ajp überhaupt? Die Erklärung auf dieser Seite war leicht zu verstehen, daher werde ich sie zitieren.

ajp ist eine Abkürzung für Apache Jserv Protocol, ein Protokoll, das beim Verbinden von Apache HTTP Server und Apache Tomcat verwendet wird. ajp ist ein Protokoll für die Verbindung mit dem Ajp-Server-Port von Tomcat über TCP. Die vom Client von Apache empfangene Anforderung wird von ajp an das Ajp-Serverprogramm von Tomcat übertragen, Tomcat antwortet Apache mit dem Verarbeitungsergebnis wie Servlet und Apache antwortet dem Client mit der Antwort.

[Ajp / Tomcat Ajp Linkage-httpd mod_proxy_ajp, Protokoll, Einstellungsmethode. ]] (https://www.zealseeds.com/SysDevTech/apache_tomcat/connect/ajp/index.html)

Tomcat akzeptiert die HTTP-Kommunikation an Port 8080 und die AJP-Kommunikation an Port 8009. Daher können Sie direkt mit `` `http: // IP address: 8080``` auf Tomcat zugreifen, ohne Apache zu durchlaufen, aber Sie verwenden diesen Port selten, wenn Sie die App tatsächlich betreiben. Stellen Sie sicher, dass Sie den Webserver durchlaufen. ** Tomcat akzeptiert die AJP 1.3-Kommunikation über Port 8009, sodass über Apache die AJP-Kommunikation über Port 8009 durchgeführt werden kann **. server2.png

Was sollen wir also eigentlich tun?

Basierend auf der bisherigen Geschichte, wenn Sie das tatsächliche Verfahren grob auflisten,

** 1 Installieren Sie JDK, Webserver (Apache) und Anwendungsserver (Tomcat) auf VPS. ** ** ** ** 2 Führen Sie die folgende Verarbeitung durch, um Apache und Tomcat zu verbinden. ** ** ** ** (1) (Tomcat-Seite) Deaktivieren Sie die Einstellung von Port 8080 und aktivieren Sie die Einstellung von Port 8009. ** ** ** ** (2) (Apache-Seite) Legen Sie fest, auf welchen Pfad zugegriffen wird, um Tomcat zu verbinden. ** ** **

Es wird sein.

4. Führen Sie Apache und Tomcat in VPS ein

Installieren Sie Java 8 (OpenJDK)

Ähnlich wie beim Erstellen einer Umgebung auf einem lokalen PC funktionieren Java-Apps unter VPS nur, wenn dies installiert ist. Wenn Sie nicht vorhaben, auf VPS zu entwickeln, ist eine reine Laufzeitinstallation ausreichend.   〇 Bei der Installation der Laufzeit

# yum install java-1.8.0-openjdk

〇 Bei der Installation der Entwicklungsumgebung

# yum install java-1.8.0-openjdk-devel

Überprüfen Sie, ob die Installation erfolgreich ist. Wenn Sie es ordnungsgemäß installiert haben, geben Sie den folgenden Befehl ein

$ java -version

Die JDK-Version wird wie unten gezeigt angezeigt.

openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

Damit ist die Java-Installation abgeschlossen.

Installieren Sie Apache

Wie oben erwähnt, ist Apache ein Webserver. Installieren Sie diesmal die Version "2.4.6".   (1) Installieren

# yum install httpd

(2) Starten Sie Apache

# systemctl start httpd.service
# systemctl enable httpd.service
# systemctl status http.service

(3) Stellen Sie die Firewall ein Die Standard-Firewall-Einstellungen ermöglichen den Zugriff auf den Webserver. Ermöglichen Sie daher den Zugriff auf Port 80.

# firewall-cmd --permanent --add-service=http

Wenn "Erfolg" angezeigt wird, laden Sie mit dem folgenden Befehl neu.

# firewalld-cmd --reload
$ systemctl status firewalld
# firewall-cmd --list-all

Damit ist die Apache-Installation abgeschlossen. Wenn Sie zu diesem Zeitpunkt auf `http: // VPS IP address /` zugreifen, wird die Apache-Testseite (die folgende Seite) angezeigt. apachetest.png

Installieren Sie Tomcat

(1) Installieren Sie Tomcat in einem beliebigen Ordner. (Diesmal setzen Sie es auf `/ opt```) Installieren Sie momentan die neueste Version" 9.0.37 ". (Informationen zur neuesten Version finden Sie unter `http: // tomcat.apache.org / download-90.cgi```.)

$ cd /opt
# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz

(2) Das heruntergeladene `` `apache-tomcat9.0.37.tar.gz``` wird im gzip-Format komprimiert. Dekomprimieren Sie es daher mit dem folgenden Befehl.

$ tar -xzvf ~/apache-tomcat-9.0.37.tar.gz

(3) Fügen Sie einen dedizierten Benutzer hinzu, um Tomcat zu betreiben.

# useradd -s /sbin/nologin tomcat

(4) Ändern Sie den Eigentümer von `tomcat9.0.37``` in tomcat```.

$ chown -R tomcat:tomcat /opt/apache-tomcat-9.0.37

(5) Erstellen Sie eine Tomcat-Einheitendatei. Diese Datei verwendet die Dienstverwaltungsfunktion `` `Systemd``` von Linux und wird zum automatischen Starten von Programmen benötigt.

/etc/systemc/system/tomcat.Erstellen Sie eine Servicedatei mit den folgenden Inhalten.




#### **`tomcat.service`**
```service

[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/apache-tomcat-9.0.37/tomcat.pid
RemainAfterExit=yes

ExecStart=/opt/apache-tomcat-9.0.37/bin/startup.sh
ExecStop=/opt/apache-tomcat-9.0.37/bin/shutdown.sh
ExecReStart=/opt/apache-tomcat-9.0.37/bin/shutdown.sh;/opt/apache-tomcat-9.0.37/bin/startup.sh

[Install]
WantedBy=multi-user.target

Ändern Sie dann die Berechtigungen für diese Datei.

$ chmod 755 /etc/systemd/system/tomcat.service

Geben Sie zu diesem Zeitpunkt den folgenden Befehl ein, um Tomcat zu aktivieren.

$ systemctl enable tomcat

(6) Firewall-Einstellungen Konfigurieren Sie wie bei Apache die Firewall für Tomcat. Um einen Dienst hinzuzufügen, auf den der Benutzer eine Firewall anwendet, muss die XML-Datei in `/ etc / firewalld / services``` abgelegt werden. Erstellen Sie also eine `/ etc / firewalld / services / tomcat.xml```-Datei mit dem folgenden Inhalt.

tomcat.xml


<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Apache Tomcat 9</short>
  <description>Apache Tomcat 9</description>
  <port protocol="tcp" port="8080"/>
</service>

Geben Sie dann den folgenden Befehl ein, um die Tomcat-Kommunikation zuzulassen.

# firewalld-cmd --add-service=tomcat --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-services --zone=public --permanent

Es ist in Ordnung, wenn hier "Kater" angezeigt wird.

Damit ist die Einführung von Tomcat abgeschlossen.

http://VPS-IP-Adresse:Auf dem 8080 wird die Tomcat-Testseite angezeigt.


 ![tomcat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673146/a27ef129-fffe-407e-4278-7f1b802adf53.png)

# 5. Integrieren Sie Apache und Tomcat
## Einstellungen auf der Tomcat-Seite

#### **`opt/apache-tomcat9.0.37/conf/server.Ändern Sie XML wie folgt.`**

** 〇 Kommentieren Sie die Einstellung von Port 8080 und die Einstellung von Port 8009 aus. ** ** ** ** 〇 Bearbeiten Sie die Einstellungen von Port 8009. ** ** **

Der eigentliche Code ist hier.  
Vor der Änderung

server.xml


<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

<!--
<Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" />
-->


Nach Änderung

server.xml


<!--
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-->

<Connector protocol="AJP/1.3"
               address="0.0.0.0"
               port="8009"
               secretRequired="false"
               redirectPort="8443" />

** * Bemerkung 1 ** Grund für die Änderung des Feldes "Adresse" von ":: 1" in "0.0.0.0" ":: 1" ist eine IPv6-Adresse. Wenn der Server IPv6 nicht unterstützt, verursacht dieser Teil einen Fehler. ("0.0.0.0" bedeutet übrigens, den Zugriff von allen Hosts zuzulassen.)   ** * Bemerkung 2 ** Grund für das Hinzufügen von "secret Required =" false "" Ich war mir zunächst nicht sicher, aber die Antwort war in Tomcats Änderungsprotokoll.

Rename the requiredSecret attribute of the AJP/1.3 Connector to secret and add a new attribute secretRequired that defaults to true. When secretRequired is true the AJP/1.3 Connector will not start unless the secret attribute is configured to a non-null, non-zero length String. (markt)

Apache Tomcat 9 (9.0.38) - Changelog   Der fett gedruckte Teil bedeutet "Wenn kein Geheimnis gesetzt ist, funktioniert der AJP-Connector nicht, wenn secretRequired wahr ist". Mit anderen Worten, wenn Sie kein Geheimnis festlegen (ein Kennwort), wird eine Fehlermeldung angezeigt, es sei denn, Sie setzen "secretRequired =" false "".

Einstellungen auf der Apache-Seite

Setzen Sie auf der Apache-Seite den ProxyPass auf Tomcat.

/etc/httpd/conf/httpd.In der conf-Datei befindet sich die folgende Beschreibung.



Load config files in the "/etc/httpd/conf.d" directory, if any.

IncludeOptional conf.d/*.conf

 Es heißt etwa "Wenn es sich um eine conf-Datei im Verzeichnis conf.d handelt, wird sie gelesen." Erstellen Sie daher eine `` `etc / httpd / conf.d / proxy-ajp.conf```-Datei (Dateiname ist beliebig, wenn er im` `` .conf```-Format vorliegt) mit dem folgenden Inhalt und erstellen Sie einen Proxypass. Einstellen.


#### **`proxy-ajp.conf`**
```conf

<Location /examples/>
  ProxyPass ajp://127.0.0.1:8009/examples/
</Location>

Sie sollten jetzt die Beispielseite von Tomcat unter `` `http: // IP address / examples``` sehen können.

6. Referenz

Verfahren zum Installieren von Apache Tomcat 9 unter CentOS 7 So verbinden Sie Apache httpd und Tomcat Bis Sie Apache und Tomcat unter Linux (CentOS) installieren und Java-Apps bereitstellen Stoppen Sie Port 8080 und überprüfen Sie das AJP / 1.3-Protokoll

Recommended Posts

So stellen Sie Java-Apps unter VPS bereit (Apache / Tomcat-Installation / Verknüpfung)
Bis Sie Apache und Tomcat unter Linux (CentOS) installieren und Java-Apps bereitstellen
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
Die Apache-Installation schlägt unter CentOS 8.2 fehl
So stellen Sie eine Webanwendung in der Alibaba Cloud als Freiberufler bereit
Schritte zum Bereitstellen von EMLauncher unter CentOS 8
Stellen Sie die Django-Anwendung auf Heroku bereit
So stellen Sie den Django-Kompressor unter Windows bereit
Java-Deploy Spring Boot-Projekt für GAE
So installieren Sie Apache (httpd) unter CentOS7
So installieren Sie Apache (httpd) unter CentOS8