[LINUX] Integrieren Sie Apache und Tomcat
Einführung
Als Fortsetzung von Einstellungen für Tomcat-Installation und Autostart habe ich die Einstellungen für das Senden von HTTP-Anforderungen, die auf der Apache-Seite empfangen wurden, an Tomcat zusammengefasst.
Umgebung verwendet
- OS
- CentOS 7.7(1908)
- Java(Amazon Corretto)
- Java 1.8.0_242
- Apache
- Apache-2.4.6
- Tomcat
- Tomcat-9.0.30
Apache installieren
- Zeigen Sie nach der Installation mit dem Befehl yum die Versionsinformationen an, um zu bestätigen, dass sie korrekt installiert wurden.
[root@akagi ~]# yum install -y httpd
[root@akagi ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Aug 8 2019 11:41:18
Apache Autostart-Einstellungen
- Stellen Sie den automatischen Start mit systemctl enable ... ein und überprüfen Sie dann die automatische Starteinstellung.
[root@akagi ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@akagi ~]# systemctl list-unit-files -t service | grep httpd
httpd.service enabled
Konfigurationsdatei bearbeiten
- Bearbeiten Sie hier httpd.conf und legen Sie fest, dass eine Anfrage von Apache mit einem Reverse-Proxy an Tomcat gesendet wird.
Überprüfen Sie /etc/httpd/conf.modules.d/00-proxy.conf
/ etc / httpd / conf.modules.d / 00-proxy.conf
beschreibt die Einstellungen der Module, die für den Reverse-Proxy verwendet werden.
- Stellen Sie sicher, dass
mod_proxy.so
und mod_proxy_ajp.so
aufgelistet sind und nicht in der Kommentarzeile.
- Wenn der Zeilenanfang "#" ist, handelt es sich um eine Kommentarzeile.
mod_proxy_ajp
ermöglicht Ihnen die Kommunikation mit Tomcat über ein Protokoll namens AJP, das effizienter als HTTP ist.
- Ich glaube, ich habe die Module
mod_jk
und mod_jk2
vor langer Zeit verwendet, aber bevor ich es wusste, hat sich das Modul, das ich verwendet habe, geändert ...
00-proxy.conf
# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
...
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
...
Sicherung von httpd.conf
- Bevor Sie httpd.conf bearbeiten, sichern Sie httpd.conf im ursprünglichen Zustand.
[root@akagi ~]# cd /etc/httpd/conf/
[root@akagi conf]# cp -a httpd.conf httpd.conf.org
Proxy-Einstellungen umkehren
- Stellen Sie ProxyPass und ProxyPassReverse wie folgt ein.
ProxyPass {Anforderungspass} ajp: // localhost: 8009 / {Kontextname der Java-App}
ProxyPassReverse {Anforderungspfad} ajp: // localhost: 8009 / {Kontextname der Java-App}
- Sowohl ProxyPass als auch ProxyPassReverse haben die Rolle, "die Anforderung, die an den Anforderungspfad gesendet wurde, an den Anwendungsserver weiterzuleiten (* in diesem Fall Tomcat)". Wenn Sie jedoch die Umleitung verwenden möchten, müssen Sie ProxyPassReverse festlegen.
- Wenn im folgenden Beispiel die Anforderung mit "http: // {Server IP} / tomcat9 /" übereinstimmt, wird der Kontextname auf Port 8009 des lokalen Hosts (localhost) "/" (* Tomcat-Verwaltungsbildschirm) angezeigt. Es ist auf Übertragung eingestellt.
- Referenz-URL: Wiedereinführung in mod_proxy - ProxyPass und ProxyPass Reverse
/etc/httpd/conf/httpd.conf
#Fügen Sie am Ende der Datei Folgendes hinzu
ProxyPass /tomcat9/ ajp://localhost:8009/
ProxyPassReverse /tomcat9/ ajp://localhost:8009/
- Wenn Sie beispielsweise einen Reverse-Proxy für eine App festlegen möchten, deren Kontextname "test" lautet und die auf Tomcat ausgeführt wird, lauten die Einstellungen wie folgt.
- Sie können den mit "tomcat9" gekennzeichneten Teil durch eine beliebige Zeichenfolge ersetzen.
/etc/httpd/conf/httpd.conf
#Fügen Sie am Ende der Datei Folgendes hinzu
ProxyPass /tomcat9/ ajp://localhost:8009/test/
ProxyPassReverse /tomcat9/ ajp://localhost:8009/test/
Reflexion der Einstellungen
- In der CentOS 5-Serie und der CentOS 6-Serie wird "service httpd graceful" ausgeführt, und anstatt Apache zwangsweise neu zu starten, wird nur der Einstellungswert wiedergegeben, in der CentOS 7-Serie Apache jedoch "graceful" Kann nicht verwendet werden.
- Laut diesem Artikel hat das Ausführen von "systemctl reload httpd" mit "reload" den gleichen Effekt wie das traditionelle "Graceful". Es scheint, dass Sie es bekommen können.
[root@akagi ~]# systemctl reload httpd
Bestätigung des Betriebs
- Greifen Sie abschließend auf "http: // {Server-IP} / tomcat9 /" zu und bestätigen Sie, dass der Verwaltungsbildschirm von Tomcat angezeigt wird.
Verwandte Arbeiten