PHP mit Tomcat
In diesem Artikel zeige ich euch wie ihr auf einem bereits laufenden Apache Tomcat Webserver eine Erweiterung installiert um damit auch PHP Projekte laufen zu lassen.
PHP mit Tomcat
Die Überschrift dieses Artikels mag vermutlich so manchen Webentwickler verwirren. Wozu sollte man PHP auf einem Tomcat Webserver laufen lassen?
Motivation
Kurz die Ausgangssituation: normalerweise läuft auf dem Server ein Apache Webserver. Auf diesem kann man sehr gut sowohl statische Webseiten (html, htm, …) darstellen als auch diverse Skriptsprachen (PHP, Perl, …). Wenn man Javaunterstützung benötigt, dann kann man ja Tomcat installieren. Normalerweise läuft dieser auf einem eigenen Port und ist standardmäßig über domainname:8081 zu erreichen. Dort kann man gut seine JSP, JSF und Servlets laufen lassen.
Nun zu meiner Motivation warum ich auf meinem Server PHP Programme auf dem Tomcat laufen lasse: meine Homepage ist ein Java Web Programm und sollte auch über die Domain erreichbar sein (also ohne Eingabe eines Ports). Außerdem will ich aber nicht nur Java Programme, sondern auch alles andere anbieten können. Nach langer Recherche und probieren bin ich eben zu dieser Variante gekommen. Auf meiner Homepage könnt ihr den Tomcat PHP Server im Einsatz sehen.
Konfiguration
Wir gehen davon aus, dass Apache bereits installiert ist und läuft. Siehe dazu meine Artikelreihe „Der Apache Webserver„.
Nun müssen einige Schritte ausgeführt werden:
- Tomcat installieren
Zum Beispiel mit folgender Zeile: apt-get install tomcat7 tomcat7-admin - Mod_proxy aktivieren
Mod_Proxy ist ein Modul für Apache und leitet Requests an einen anderen Webserver weiter.
a2enmod proxy
a2enmod proxy_http - Mod_proxy konfigurieren. Zuvor sollte man aber Apache neu starten.
In der http.conf definieren wir nun wohin die Requests weitergeleitet werden. In diesem Fall einfach auf einen anderen Port.ProxyPass / http://localhost:8081/ ProxyPassReverse / http://localhost:8081/
- Tomcat konfigurieren
Als letzten Schritt müssen wir noch den Tomcat Webserver konfigurieren. Wir ändern die server.xml Datei und fügen folgendes hinzu (bitte domainname mit eurer Domain ersetzen):<Connector port=8081 protocol=“HTTP/1.1“ connectionTimeout=“20000“ proxyName=“domainname“ URIEncoding=“UTF-8“ proxyPort=“80“/>
Das wars auch schon. Ab jetzt werden alle Anfragen an Apache an Tomcat weitergeleitet.
PHP Programm mit Tomcat deployen
Da man nun keine Möglichkeit hat den alten Apache zu erreichen, da jeder Request weitergeleitet wird, müssen wir nun PHP Programme mit dem Tomcat Webserver deployen. Das ist viel einfacher als man vielleicht annehmen könnte.
- JavaBridgeTemplate621.war herunterladen und mit dem Tomcat Manager veröffentlichen
Tomcat erstellt für jedes veröffentlichte Projekt (*.war) einen Ordner in seinem webapps Verzeichnis mit den Daten. - das PHP Programm einfach in diesen Ordner kopieren
den Ordner kann man gerne auch umbenennen!
Die Index Seite
Tomcat liefert von Haus aus bereits eine Indexseite mit einer Erfolgsmeldung für die korrekte Installation. Dieses kann man aber einfach ersetzen. Man löscht einfach im Manager das / Webprogramm bzw. den ROOT Ordner im webapps Verzeichnis. Will man ein Javaprogramm veröffentlichen, so muss man es ROOT.war nennen und hochladen. Sollte es zum Beispiel ein PHP Programm sein, so kann man hier auch eine Java Bridge veröffentlichen, das PHP Programm in den Ordner kopieren und anschließend den Ordner in ROOT umbenennen.
Vorteile
- alle Seiten und Programme können nun mit Tomcat verwaltet werden
- mit dem Tomcat Manager hat man alles im Überblick
Nachteile
- man verliert die Funktionalität von Apache
Zur Not kann man die Request Umleitung des Proxys auf bestimmte URLs beschränken. - deployen mit Hilfe der Java Bridge ist etwas umständlich
Was haltet Ihr davon? Wer hat noch alles PHP Programme auf dem Tomcat Webserver laufen? Fallen euch noch andere Vorteile bzw. Nachteile ein?
Hallo,
bei uns in der Firma ist es auch so das ein Teil der Seite in jsp und ein Teil in PHP programmiert ist.
Da ich den Server neu aufsetzen muss hoffe ich dein Anleitung funzt bei uns 🙂
sollte funktionieren! Hab das bereits bei mehreren Servern gemacht.