Das Liferay-Projekt gibt es nun schon einige Jahre, und es wird immer größer und besser. Sein Anwendungsfeld ist breit: Liferay bringt die Skalierbarkeit und Funktionalität mit, um Webauftritte von E-Commerce-Plattformen bis zu Intranet-Portalen fürs Teamwork zu realisieren und mit steigenden Anforderungen zu wachsen, der Artikel bezieht sich auf Version 5.1.1.
Liferay ( Abbildung 1) bietet umfangreiche Portalfunktionen, um Content anzulegen und zu verwalten, Foren einzurichten und in Gruppen zusammenzuarbeiten. Natürlich ist auch Liferay keine allein selig machende Software, die jedes Problem in punkto Transparenz, Kommunikation und Kollaboration für jede Anwendung löst, aber nach meiner Erfahrung handelt es sich dennoch um das beste Portal/CMS, das es gibt. Es bringt eine Reihe nützlicher Portlets mit, also fertige CMS-Plugins, die Liferay an spezifische Bedürfnisse anpassen. Wichtiger ist aber noch, dass Liferay unterschiedliche Systeme integrieren kann. Einzelne Abteilungen können ihre eigenen Inhalte verwalten, ohne dass der Administrator sich um die Integration in die Firmenwebsite kümmern muss.
Abbildung 1: Das Liferay-Portal unterstützt Portals, die sich einfach in das bestehende System einstöpseln lassen.
Stellt sich die Frage, wieso nicht längst jeder Liferay verwendet, wenn es angeblich so gut ist. Die Antwort darauf könnte lauten: Es ist groß, es ist in Java geschrieben und die umfangreiche Dokumentation schreckt ab. Mit über 86 MBytes (inklusive Tomcat-Server) ist es eines der größeren CMS-Pakete. Weil es in Java geschrieben ist, ist es etwas aufwändiger, es zu erweitern. Jedenfalls ist die Lernkurve um einiges steiler als bei den meisten PHP-Frameworks. Die Getting-Started-Dokumentation ist leicht zu finden, aber wegen der Komplexität und der Vielzahl an Konfigurationsoptionen, durchaus anspruchsvoll.
Liferay unterstützt eine Vielzahl komplexer Anwendungsszenarien. Typischerweise besitzt eine Firma beispielsweise eine einzige Intranet-Site, es soll aber verhindert werden, dass der Vertrieb in den vertraulichen Dokumenten der Buchhaltung stöbert oder dass die Personalabteilung ihre neuen Richtlinien auf den öffentlichen Webserver stellt.
Die verschiedenen Abteilungen können Liferay für unterschiedliche Dinge verwenden. So kann Liferay mit dem Iframe-Portlet oder dem Web-Proxy-Portlet die Management-Frontends verschiedener System wie Nagios, Hobbit oder MRTG in einer Oberfläche integrieren. Das Message-Board-Portlet lässt sich als einfaches Helpdesk verwenden. Die Personalabteilung kann mit dem Document-Library-Portlet ihre Dokumente verwalten. Vertrieb und Marketing erhalten über das Web-Proxy-Portlet Auswertungen aus dem CRM-System. Umgekehrt liefert die PR-Abteilung ihre Pressemitteilungen über Liferays Journal-Content-Portlet aus.
Technisches
Das Beispiel in diesem Artikel benutzt den Apache-Server und »mod_jk«, um die Liferay-Anwendung einzubinden. Liferay bringt die in Java geschriebene Hypersonic-Datenbank mit, die aber nur für Entwicklungszwecke geeignet ist. Deshalb soll hier MySQL verwendet werden.
Am besten Sie richten das System so ein, dass MySQL beim Booten automatisch startet. Auf den meisten Distributionen geht das mit »chkconfig mysqld on«. Sie können die Einrichtung mit »chkconfig --list mysqld« überprüfen. Die ausgegebenen Zahlen stehen dabei für die Runlevel, in denen MySQL startet. Haben Sie das erledigt, legen Sie eine Datenbank für Liferay an. Am besten starten Sie dazu den MySQL-Monitor, in dem Sie anschließend noch weiter Aufgaben erledigen ( Listing 1).
|
Listing 1: MySQL einrichten
|
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 58
Server version: 5.0.51a-3ubuntu5.1 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database lportal;
Query OK, 1 row affected (0.02 sec)
mysql> grant all on lportal.* to lportal@localhost identified by 'secretpassword';
Query OK, 0 rows affected (0.08 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
|
Nach dem Anlegen der Datenbank mit »create database« weisen Sie einem Benutzer (im Beispiel ebenfalls »lportal«) mit der Grant-Anweisung alle Rechte für diese Datenbank zu und vergeben ein Passwort (hier: »secretpassword«). Am Ende bringen Sie MySQL dazu, die Rechtetabellen neu einzulesen.
Infrastruktur
Die Liferay-Konfiguration, die dieser Artikel vorstellt, setzt Java, Apache, Tomcat und MySQL voraus. Haben Sie das Liferay-Paket heruntergeladen, wie etwa das Bundle mit Tomcat, entpacken Sie es, beispielsweise im Verzeichnis »/opt«:
unzip liferay-portal-tomcat-5.5-5.1.1.zip -d /opt
Legen Sie eine Gruppe »apache« und einen Benutzer »tomcat« an, der Mitglied der Gruppe ist:
groupadd apache
useradd -g apache tomcat
Die Voreinstellungen des Liferay-Bundles erfordern zusätzlich ein vom Benutzer »tomcat« schreibbares Home-Verzeichnis »/home/tomcat«. Machen Sie nun noch die Startskript für alle Benutzer ausführbar:
chmod 755 /opt/liferay-portal-tomcat-5.5-5.1.1/bin/*.sh
Konfigurieren Sie als nächstes die Datenbank-Verbindung und die Mailserver-Einstellungen, indem Sie die Datei »conf/Catalina/localhost/ROOT.xml« editieren. Sie können die Einträge für nicht verwendete Datenbanken (DB2, Derby und so weiter) entfernen oder einfach auskommentiert belassen. Kommentieren Sie auch den Eintrag für Hypersonic aus und aktivieren Sie stattdessen MySQL mit den vorher eingegeben Account-Daten. Das Ergebnis zeigt Listing 2.
|
Listing 2: »ROOT.xml«
|
01 <Context path="" crossContext="true">
02
03 <!-- MySQL -->
04
05 <Resource
06 name="jdbc/LiferayPool"
07 auth="Container"
08 type="javax.sql.DataSource"
09 driverClassName="com.mysql.jdbc.Driver"
10 url="jdbc:mysql://localhost/lportal?useUnicode=true&amp;characterEncoding=UTF-8"
11 username="lportal"
12 password="secretpassword"
13 maxActive="20"
14 />
15
16 <!-- Mail -->
17
18 <Resource
19 name="mail/MailSession"
20 auth="Container"
21 type="javax.mail.Session"
22 mail.imap.host="localhost"
23 mail.pop3.host="localhost"
24 mail.smtp.host="localhost"
25 mail.store.protocol="imap"
26 mail.transport.protocol="smtp"
27 mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"
28 />
29
30 <!-- JAAS -->
31
32 <Realm
33 className="org.apache.catalina.realm.JAASRealm"
34 appName="PortalRealm"
35 userClassNames="com.liferay.portal.security.jaas.PortalPrincipal"
36 roleClassNames="com.liferay.portal.security.jaas.PortalRole"
37 debug="99"
38 useContextClassLoader="false"
39 />
40 </Context>
|
Wenn Sie im Datenbank-Schritt dem Benutzer »lcportal« alle Rechte zum Anlagen, Verändern und Löschen gegeben haben, kann Liferay die Datenbankstruktur selbst anlegen. Andernfalls müssen Sie das Datenbankschema selbst von der Homepage herunterladen und als privlegierter Datenbanknutzer einlesen. Passen Sie anschließend noch die Eigentumsverhältnisse der Liferay-Installation an:
chown -R tomcat:apache liferay-portal-tomcat-5.5-5.1.1
Ein Beispiel für ein Startskript, das Sie zum Beispiel in »/etc/init.d« anlegen, zeigt Listing 3. Wenn Sie dann mit »/etc/init.d/liferay start« den Server starten, können Sie mit »tail -f liferay-portal-tomcat-5.5-5.1.1/log/catalina.out« das Logfile beobachten. Die Einstiegsseite des Liferay-Portals finden Sie unter der Adresse »http:// Servername:8080«.
|
Listing 3: »/etc/init.d/liferay«
|
01 #!/bin/sh
02
03 export JAVA_HOME=/usr/lib/jvm/java-6-sun/
04 export CATALINA_HOME=/opt/liferay-portal-tomcat-5.5-5.1.1
05 export TOMCAT_USER=tomcat
06
07 start() {
08 echo -n " Starting Liferay-Tomcat ..."
09 su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
10 sleep 2
11 }
12 stop() {
13 echo -n " Stopping Liferay-Tomcat ..."
14 su $TOMCAT_USER -c $CATALINA_HOME/bin/shutdown.sh
15 sleep 5
16 }
17 case "$1" in
18 start)
19 start
20 ;;
21 stop)
22 stop
23 ;;
24 restart)
25 stop
26 start
27 ;;
28 *)
29 echo $"{start|stop|restart}"
30 exit
31 esac
|
Damit haben Sie nun eine funktionierende Liferay-Installation, die zwar noch nicht reif für den produktiven Einsatz ist, auf deren Basis Sie sich aber mit dem System vertraut machen können. Loggen Sie sich dazu mit dem Login »test@liferay.com« und dem Passwort »test« ein. Um das Passwort zu ändern, bewegen Sie die Maus über den Welcome-Button rechts und wählen Sie dort »My Account«.
Die nächsten Schritte sind die Apache-Installation (falls noch nicht vorhanden) und die Einrichtung des »mod_jk«-Connectors, der Apache und Tomcat verbindet. Die Liferay-Bundle enthält bereits die Tomcat-Seite der Verbindung, für Apache müssen Sie noch das passende Paket installieren, das zum Beispiel »libapache2-mod-jk« heißt. Je nach Linux-Distribution müssen Sie nichts weiter konfigurieren oder noch in der Apache-Konfiguration festlegen, dass der Webserver das Modul lädt:
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
Wenn Sie den Tomcat-Teil der Apache-Installation als virtuellen Host betreiben wollen, brauchen Sie noch eine Konfigurationsdatei wie in Listing 4, die Sie zum Beispiel in »/etc/apache2/tomcat.conf« speichern. Binden Sie sie über die folgende Anweisung in der Hauptkonfigurationsdatei ein (»httpd.conf«, »default-server.conf« oder »apache2.conf«, je nach Linux-Variante):
Include /etc/apache2/tomcat.conf
Den eingestellten Hostnamen müssen Sie natürlich ebenfalls entweder im DNS konfigurieren oder - im Testfall - zumindest in den Hosts-Dateien der beteiligten Rechner.
|
Listing 4: »tomcat.conf«
|
01 NameVirtualHost 192.168.1.2
02
03 <VirtualHost 192.168.1.2>
04 ServerName tomcat.testdomain.de
05 ServerAdmin admin@testdomain.de
06
07 DocumentRoot /opt/liferay-portal-tomcat-5.5-5.1.1/webapps/ROOT
08 UseCanonicalName Off
09 ErrorLog /var/log/apache2/tomcat-error.log
10 CustomLog /var/log/apache2/tomcat-access.log combined
11
12 <Directory "/opt/liferay-portal-tomcat-5.5-5.1.1/webapps/ROOT">
13 Options Indexes FollowSymLinks
14 DirectoryIndex index.jsp index.html
15 </Directory>
16
17 <IfDefine SSL>
18 SSLEngine off
19 </IfDefine>
20
21 <Location "/WEB-INF/*">
22 deny from all
23 </Location>
24
25 <Location "/META-INF/*">
26 deny from all
27 </Location>
28
29 JkMount /*.jsp ajp13
30 JkMount /c ajp13
31 JkMount /c/* ajp13
32 JkMount /html/* ajp13
33 JkMount /web/* ajp13
34 JkMount /user/* ajp13
35 JkMount /flash/* ajp13
36 JkMount /image/* ajp13
37 JkMount /language/* ajp13
38 </VirtualHost>
|
Im Test haben diese Einstellungen funktioniert, ohne dass eine spezielle Konfigurationsdatei »workers.properties« für »mod_jk« nötig war - zum Beispiel, weil der Worker-Name »ajp13« dem Default entspricht. Ein Beispiel für eine funktionierende Datei zeigt Listing 5. In die Apache-Konfiguration binden Sie sie mit der Anweisung »JkWorkersFile /etc/apache2/workers.properties« ein. Sie muss sich dann natürlich auch an diesem Ort im Dateisystem befinden.
|
Listing 5: »workers.properties«
|
01 workers.tomcat_home=/opt/liferay-portal-tomcat-5.5-5.1.1
02 workers.java_home=/usr/lib/jvm/java-6-sun
03 ps=/
04 worker.list=ajp13
05 worker.ajp13.port=8009
06 worker.ajp13.host=localhost
07 worker.ajp13.type=ajp13
08 worker.ajp13.lbfactor=1
09 worker.loadbalancer.type=lb
10 worker.loadbalancer.balanced_workers=ajp13
11 worker.inprocess.type=jni
12 worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
13 worker.inprocess.cmd_line=start
14 worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
15 worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
|
Nun spätestens müssten Sie die Liferay-Installation auch direkt über Apache, also ohne den Port-Zusatz 8080, erreichen können.