Open Source im professionellen Einsatz
Linux-Magazin Online Artikel/

Das Liferay-Portal-Toolkit

Hereinspaziert

09.01.2009

Viele Informationsquellen zu einem einheitlichen Webauftritt zusammenzuführen ist und bleibt schwierig. Noch mehr, wenn es sich um eine heterogene IT-Welt mit viele Altlasten handelt. Migration wird damit zum kontinuierlichen Prozess. Das freie Liferay-Portal hilft dabei.

1669

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;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.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Liferay

    Sie sind die zentrale Plattform für Anwendungen, Informationen und Prozesse im Unternehmen und vereinen CMS, DMS und Prozessmanagement: Enterprise-Portale. Dieser Artikel vergleicht die Open-Source-Lösung Liferay 6.1 mit dem jüngst erschienenen Microsoft-Produkt Sharepoint 2013.

  • Rike

    Leichtgewichtige Projektmanagement-Methoden setzen sich offenbar auch in der Software-Entwicklung durch. Die Firma Arago stellte vor Kurzem die Webanwendung Rike unter eine Open-Source-Lizenz. Das Tool beruht auf dem Kanban-Prinzip und empfiehlt sich beim Planen von Programmierprojekten.

  • Der mit dem Kater tanzt

    Sowohl der Webserver Apache als auch der Servlet-Container Tomcat werden von der Apache Software Foundation gepflegt. Ein perfektes Zusammenspiel scheint daher selbstverständlich. Doch die Realität sieht anders aus. Dieser Coffee-Shop zeigt Ansätze für eine Lösung.

  • Bücher

    Das Linux-Magazin bespricht einen Band über Alfresco und Liferay sowie ein Werk, das als Buch auftritt, aber eigentlich ein Blog ist. Es beschäftigt sich mit der Qualität der Software-Entwicklung

  • Einführung

    Echte Knoppix-Fans haben im März ein Date mit der Linux-Magazin-DVD, denn von der einen Seite bootet Klaus Knoppers neuestes Linux. Auf der anderen gibt es ein kostenloses E-Book über Sendmail, den freien Portal-Server Liferay sowie zahlreiche Vortragsvideos.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.