Alfresco ohne Port 8080
Alfresco ist eine J2E-Applikation die im Kontext eines Application-Servers wie JBoss oder Tomcat läuft. So ein Application-Server kann man sich als eigenen Webserver vorstellen. Das bedeutet, dass wir damit üblicherweise 2 Webserver auf unserem Server laufen haben :
- den “normalen” Webserver, der unsere Webseiten bedient und den wir üblicherweise mit so etwas wie http://www.meinedomain.de aufrufen
- ja und jetzt den Tomcat (JBoss) und Alfresco
http://www.meinedomain.de ist eigentlich vollständig http://www.meinedomain.de:80 Der Browser “hängt” implizit ein “:80″ and un der Webserver “lauscht” auf diesem Port. Da es an einem solchen Port nur einen “Lauscher” geben kann, “hören” Application-Server wie Tomcat/JBoss per default auf dem Alternativ-Port 8080.
Mit http://www.meinedomain.de rede ich also mit dem normalen Webserver
und mit http://www.meinedomain.de:8080 mit Tomcat/JBoss
Nun eigentlich ist das ja nicht wirklich ein Problem. Aber es wird zum Problem, wenn man aus streng abgeschotteten Firmen-Netzwerken zugreifen möchte. Dort ist recht oft dieser Port 8080 durch die Firewall des Firmennetzwerks blockiert. Man bekommt dann lapidar die Meldung, dass die Webseite nicht erreichbar ist. Naja und es ist auch manchmal einfach lästig dieses 8080 anzuhängen …
Aber es gibt dafür eine Lösung, die ich nachstehend (auch als Notizzettel für mich selbst) aufzeige :
Ausgangsituation
- angemieteter Root-Server mit Plesk als Administrationsoberfläche
- Betriebssystem openSuse 11.1
- Webserver Apache2
- Alfresco Community Edition 3.2r auf Basis Tomcat (Bundle in einem Ordner installiert)
So und nun hier einfach die Schritte, die man tun muss um das Janze zum Laufen zu bringen. Ist nicht weiter schwer, wenn man es weiß
…
1) Check der Vorraussetzungen
Prüfung ob das Apache-Tomcat-Connector-Modul installiert und geladen ist. Nennt sich mod_jk und ist von Haus aus meist installiert. Wenn nicht : mit Paketmanager (hier Yast) nachinstallieren
Irgendwo in der meist umfangreichen Apache-Konfiguration muss es dann eine solche Zeile geben :
LoadModule jk_module /usr/lib64/apache2/mod_jk.so
Bei unserem Server z.B. unter /etc/apache2/sysconfig.d in einer Datei namens loadmodule.conf.
2) Anlegen einer Datei names workers.properties
Diese sollte am Besten in den Ordner /etc/apache2 gelegt werden. Inhalt dieser Datei:
worker.list=ajp13
worker.ajp13w.type=ajp13
worker.ajp13w.host=localhost
worker.ajp13w.port=8009
worker.ajp13.lbfactor=50
worker.ajp13.cachesize=10
worker.ajp13.cache_timeout=600
worker.ajp13.socket_keepalive=1
worker.ajp13.socket_timeout=300
Wirklich notwendig sind die erste 4 Zeilen. Die anderen Einstellungen dienen der Optimierung und habe ich aus dem Internet
…
Wir merken uns hier den Namen ajp13 hinter worker.list, den wir später benötigen. Könnte auch “guglhupf” heissen. Dieser Name ist frei wählbar.
3) In der zentralen Apache2-Konfiguration (httpd.conf bzw einer der anderen automatisch inkludierten conf-Files (z.B. unter Ordner conf.d) muss sich folgende Befehlsfolge finden bzw eingefügt werden :
<IfModule mod_jk.c>
JkWorkersFile /etc/apache2/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
</IfModule>
Bei uns finden sich diese Befehle in einem durch Plesk generierten File unter conf.d.
Wichtig : Dieser Befehl “JkWorkersFile” darf sich nur genau einmal in der gesamten Apache-Konfiguration finden. Sonst gibts bei Start des Webserver eine Fehlermeldung !
Die anderen Statements können auch wonders bzw mehrfach verwendet werden.
Damit haben wir die Datei workers.properties dem Apache bekannt gemacht. Ein Neustart des Webservers dürfte keine Probleme machen
4) Umkonfiguration von Tomcat, damit er etwas mit dem in worker.properties definierten Port 8009 anfangen kann (s.o.).
Wir gehen in den Ordner, wo Tomcat und seine Konfigurationsdateien sich befinden : …/tomcat/conf
Hier gibt es eine Datei namens server.xml. Die Datei kann mit einem Texteditor bearbeitet werden und enthält irgendwo folgende Zeilen:
<!– Define an AJP 1.3 Connector on port 8009 –>
<!–
<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″ />
–>
Wir müssen hier lediglich die Kommentarzeichen vor und hinter der Connectorzeile entfernen. Sieht dann letztlich so aus:
<!– Define an AJP 1.3 Connector on port 8009 –>
<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″ />
Thats all here. Tomcat/Alfresco kann danach problemlos neu gestartet werden. Sollte man auch
….
5) Anlegen eines Konfigurationsfiles für den Konnektor
Ich habe dieses File ebenfalls unter …/tomcat/conf angelegt und es heißt bei mir mod_jk.conf. Could be somewhere else
…
So sieht es bei mir aus:
JkLogFile /srv/www/vhosts/mydomain/meinedomain/alfresco/httpdocs/tomcat/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat “[%a %b %d %H:%M:%S %Y]”
JkRequestLogFormat “%w %V %T”
JkMount /alfresco ajp13
JkMount /alfresco/* ajp13
JkMount /share ajp13
JkMount /share/* ajp13
Wichtig hier wieder das ajp13 bei den JkMount-Befehlen. Dies muss mit dem Namen in workers.properties (Punkt 2) übereinstimmen !
Die JkMount-Befehle bedeuten dann nur, dass man über http://www.meinedomain.de/alfresco bzw http://www.meinedomain.de/share mittels des Konnektors und dem “Worker” namens “ajp13″ in Tomcat bzw Alfresco landet. Macht man die restlichen Schritte noch, kann man danach alternativ zugreifen mit
http://www.meinedomain.de:8080/alfresco oder eben mit http://www.meinedomain.de/alfresco ohne Port 8080
Mit den übrigen Zeilen definiere ich nur meine Log-File-Einstellungen für den den Konnektor.
6) Und jetzt der eigentliche Schritt: Wir stellen die Verbindung her
Dies geschieht erneut in der Apache-Konfiguration. Da es so viele Konfigurationsmöglichkeiten wie Sandkörner gibt
, hier die richtige Stelle im Kontext bzw wie ich es für unsere spezielle Konfiguration gemacht habe.
Letztlich ist nur das Konfigurationsfile des Konnektors von (4) an der richtigen Stelle zu inkludieren. Dies passiert in der vhost-Konfiguration. Also irgendwo zwischen
<VirtualHost xx.xx.xx.xx:80>
.
.
.
</VirtualHost>
Dort ist der Include-Befehl einzufügen. Bei mir sieht er ungefähr so aus:
include /srv/www/vhosts/meinedomain/subdomains/alfresco/httpdocs/tomcat/conf/mod_jk.conf
Ja das war es soweit in aller Ausührlichkeit.
Nach einem Neustart des Webservers (/etc/init.d/apache2 restart), der keine Fehler meldet
, sollte jetzt alles klappen …
Ab jetzt sollte Alfresco sowohl über
http://www.meinedomain.de:8080/alfresco
wie auch
http://www.meinedomain.de/alfresco ohne Port 8080
erreichbar sein.
Für Share gilt das natürlich analog
:
http://www.meinedomain.de:8080/share oder eben mit http://www.meinedomain.de/share ohne Port 8080



Schade das du nicht gefragt hast, hab das ganze vor Ewigkeiten mal dokumentiert, stelle aber keine Abweichungen fest:
http://forums.alfresco.com/en/viewtopic.php?f=9&t=20310
Hallo Sebastian,
sehr gut. Freut mich jedenfalls, dass es stimmt
. Thanx !
Nun hab ich’s auch im Kopf
. Beim nächsten Problem frage ich Dich. Da kannst Du Dich drauf verlassen
.
Viele Grüße
Toni