Alfresco Loging reduzieren: AccessLogValve in server.xml

Meine Alfersco-Installation “flutet” den Server mit sehr grossen “localhost_access_log” Files. Hauptsächlich mit SOLR-Requests dieser Sorte:

GET /alfresco/service/api/solr/transactions?fromCommitTime=1352137016770&toCommitTime=1352144216770&maxResults=2000 HTTP/1.1" 200 115

Also jedesmal wenn Solr mit Alfresco kommuniziert, wird ein Log-Eintrag erstellt.

“Lösung” nach Holzhacker-Methode:

  • Deaktivieren der Tomcat-Valves
sudo vi tomcat/conf/server.xml

Und deaktivieren bzw auskommentieren des Valves:

<!--<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" /> -->

 

Alfresco Upgrade Prozedur von Version 5.1 auf Version 5.2 (Alfresco Community Edition 201612 GA)

Dieses Howto beschreibt meine Schritte um eine Alfresco 5.1 Installation nach Alfresco 5.2 (Alfresco Community Edition 201612 GA) zu erhöhen.

Aktuelle Alfresco Installation

Mein Alfresco-System wird nicht im produktiven Umfeld sondern lediglich privat genutzt. Die Anforderungen an das System sind entsprechend niedgrig (keine Skalierung, geringe Performance).

Alfresco
2 Server 1 VM-Server für die Alfresco Installation, DB und Index (45 GB Festplatte)
1 VM-Server für Daten (350 GB Festplatte)
Alfresco Home /opt/alfresco-community
Installation Default installations-Routine
Postgres-SQL Ja, Installiert über die normale Installations-Routine von Alfresco
Index SOLR4
Alfresco Service Ja. Servicename “alfresco”, Installiert über die normale Installations-Routiene von Alfresco
alf_data Das alf_data Verzeichnis befindet sich ausgelagert auf einem NFS-Server (VM für Daten und Index). Das alf_data Verzeichnis wird dann auf dem Alfresco-Server nach /opt/alfresco/alf_data gemounted.
Ugrade Prozedur Die Upgrade Prozedur richtet sich grundsätzlich nach der Alfresco-Doku: Link

Neue VM erstellen

Bei einem Alfresco-Update (welches ja nicht so häufig vorkommt) erstelle ich meist eine neue VM mit aktuellstem Ubuntu-Betriebssystem (LTS):

  1.  Neue VM erstellen (ESXi 5.5, VM mit Ubuntu-Linux, 4 CPUs, 8GB RAM)
  2. Alfresco benötigt einige Libs als Voraussetzung. Die Installationsroutine meckert, wenn diese nicht vorhanden sind (siehe hier).
    Auf Ubuntu folgendes ausführen:

    sudo apt-get install libice6 libsm6 libxt6 libxrender1 libxext6 libfontconfig1 libcups2 libglu1-mesa libcairo2 libegl1-mesa libxinerama1

    Achtung: Die Installationsroutine zeigt nach der Installation aller notwendigen Libs immer noch an, dass diese Fehlen (Stand 3.1.2017, Ubuntu 16.04). Das scheint aber ein Bug der Installationsroutine von Alfresco zu sein.

  3. Alfresco auf der neuen VM installieren.
    1. Für die Installation verwende ich die default Installations-Routine von Alfresco.
    2. Die Ports Ändere ich auf 80 bzw. 443.
    3. Den Service installiere ich auch mit der Alfresco Installations-Routine.
  4. Memory anpassen: Link
  5. Max Open Files anpassen: Link
  6. Anschlissend überprüfen ob die neue Installation sauber funktioniert (z.B. LibreOffice).

Konfigurationen/Customizing der neuen Installation anwenden

Ich habe auf meinem Alfresco einige “customs” eingebaut:

Custom Datalists

Custom Share Header

Custom Web-Extensions

  1. Zwei eigene Listen (Inventar und Bibliothek). Hier zeige ich nur die Bibliotheksliste. Das selbe auch für Inventar machen.
  2. Die neuen Datalists registrieren
    cp /opt/alfresco-alt//tomcat/shared/classes/alfresco/extension/customDatalist-model-context.xml /opt/alfresco-neu//tomcat/shared/classes/alfresco/extension/customDatalist-model-context.xml

    Datalist-Model erstellen/kopieren

    cp /opt/alfresco-alt/tomcat/shared/classes/alfresco/extension/bibliothekDatalistModel.xml /opt/alfresco-neu/tomcat/shared/classes/alfresco/extension/bibliothekDatalistModel.xml

    Das web-extensions File erweitern mit den Erweiterungen aus der alten Instanz

    /opt/alfresco-community/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml
  3. Download Buttons entfernen: Link
  4. Header-Icons ausblenden, welche nicht gebraucht werden: Link
  5. Download-Button nur wenn Schreibrecht vorhanden: Link

Alte Alfresco-Instanz backupen

  1. Alte Alfresco-Instanz stoppen
  2. Ganze DB backupen
    1. Postgres starten
      sudo /opt/alfresco-community/alfresco.sh start postgresql
    2. Die gesamte Alfresco-Datenbank dumpen
      cd /opt/alfresco-community/postgresql/bin/
      ./pg_dump -h localhost -U alfresco alfresco > /tmp/alfrescodbdump
    3. Postgres stoppen
      sudo /opt/alfresco-4.2.d/alfresco.sh stop postgresql
  3. alf_data Verzeichnis der alten Alfresco-Instanz backupen. => Darauf achten, dass der Alfresco-Service nicht läuft!
    Ich kopiere dazu einfach das gesamte alte alf_data Verzeichnis nach alf_data_alt.

Daten auf neuer Alfresco-DB Instanz restoren

  1. Die neue Alfresco-Instanz stoppen.
  2. Nun die Postgresql-Datenbank der NEUEN Installation starten:
    sudo /opt/alfresco-community/alfresco.sh start postgresql
  3. Die Datenbank “alfresco” der neuen Installation löschen:
    cd /opt/alfresco-community/postgresql/bin/
    ./dropdb -U alfresco alfresco -h localhost -i
    Database "alfresco" will be permanently removed.
    Are you sure? (y/n) y
    Password:
    
  4. Die gelöschte Datenbank wieder erstellen
    $ sudo ./createdb -U postgres -T template0 alfresco -h localhost
    Password:
    
  5. Nun den Alfresco-Dump der alten Instanz auf der neuen einspielen:
    $ sudo ./psql -U alfresco alfresco -h localhost < /tmp/alfrescodbdump
    Password:
    (...)
    ALTER TABLE
    ALTER TABLE
    REVOKE
    REVOKE
    GRANT
    GRANT
    $ exit
  6. Die Postgres-DB der neuen Installation wieder stoppen.
    sudo /opt/alfresco-community/alfresco.sh stop postgresql

Content-Store und Idexe restoren

Content-Store und Index habe ich auf einem NFS-Server.

  1. Wichtig, nicht das postgres-Datenverzeichnis der neuen Installation löschen!!!!!! Das ganze alf_data Verzeichnis der neuen Alfresco-Instanz nach ~/alf_data_backup verschieben. Dies, weil sich auch das postgres-Datenverzeichnis hier befindet. Die DB mit den Daten wird wegkopiert.
    sudo mv /opt/alfresco/alf_data ~/alf_data
  2. Jetzt den mount-Punkt “alf_data” des NFS-Servers auf die neue Alfresco-Instanz mounten.
  3. Nun die postgres Daten wieder zurück kopieren
    sudo rm -r
    sudo cp ~/alf_data/postgresql/* /opt/alfresco/alf_data/postgresql/
  4. Reindexierung von SOLR4:
    Ich initialisiere Solr4 nach jeder Installation neu gem. Alfresco-Dokumentation: Link

Alfresco 5.0 Previewer: pdfjs Download Button entfernen

Alfresco liefert ab Version 5 einen neuen Previewer, der die Abhängigkeit zu Flash redizieren soll. Leider liefert der neue Previewer einen Download-Button mit, der es jedem Nutzer ermöglicht, den Inhalt herunterzuladen. Klar. Es kann so ziemlich alles, was ein Browser anzeigt, heruntergelanden werden. Ich möchte es den Usern aber nicht zu einfach machen.

Download-Button auf Previewer ausblenden/entfernen

So kann man den Download-Button ganz einfach komplett zu entfernen:

cd /opt/alfresco-5.0.c/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/modules/preview
vi pdfjs.get.js

Anschliessend folgende Passage auskommentieren:

/*{
id: "download",
type: "button",
icon: "components/documentlibrary/actions/document-download-16.png",
label: msg.get("button.download"),
title: msg.get("button.download")
},*/

Siehe dazu auch:
https://github.com/share-extras/media-viewers/commit/9978b09a5ad280a2ca577fc9d43211290e0a5646

Download wenn Plugin nicht installiert

Wenn der Browser das Flash-Plugin nicht installiert hat, kann natürlich auch der Flashplayer das Video in der Preview nicht abspielen. Leider ist es so, dass in diesem Falle Alfresco einen Text anzeigt und gleichzeitig die Download-Option anbietet:

Die Lables dafür befinden sich unter

/opt/alfresco-community/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/preview

Ich habe einfach die Lables “label.noPreview” und “label.noPreview.ios” angepasst und den link daraus entfernt.

Alfresco Previewer: Flash reaktivieren

Alfresco liefert ab Version 5 einen neuen Previewer, der die Abhängigkeit zu Flash redizieren soll. Tolles Ding. Leider liefert der neue Previewer einen Download-Button mit, der es jedem Nutzer ermöglicht, den Inhalt herunterzuladen. Klar. Es kann so ziemlich alles, was ein Browser anzeigt, heruntergelanden werden. Ich möchte es den Usern aber nicht zu einfach machen.

Eine Variante ist es, einfach den alten Flash-Player (schande aber auch…) wieder zu aktivieren:

vi alfresco/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/preview/web-preview.get.config.xml

auskommentieren:

<!-- Documents that have been converted to .pdf -->
<!--
      <condition mimeType="application/pdf">
         <plugin progressiveLoading="false">PdfJs</plugin>
      </condition>
      
      <condition thumbnail="pdf">
         <plugin src="pdf" progressiveLoading="false">PdfJs</plugin>
      </condition>
-->

Alfresco neu starten

Siehe auch: https://forums.alfresco.com/forum/end-user-discussions/alfresco-share/move-back-flash-previewer-50-10232014-1205

Alfresco 5 – LibreOffice Preview

Bei den neuen Alfresco-Community Versionen, installiert über die Default-Installationsroutine (Version 5.0.a – 5.1), habe allesamt das Problem, dass die Preview-Funktion von docx, doc, odt, etc. nicht funktioniert und auch ein Upload eines Media-Files mit einem Fehler endet.

Siehe auch:

http://alfresco-ecm.cz/wp/2015/03/22/alfresco-5-libreoffice-working/

Folgende Links bringen die Lösung:

Symbolic-Link erstellen

ln -s /array/alfresco/libreoffice/scripts/libreoffice_ctl.sh /array/alfresco/libreoffice/scripts/ctl.sh

Libreoffice ctl File anpassen :

vi /opt/alfresco/libreoffice/scripts/ctl.sh

Man beachte Linie:

SOFFICE="$SOFFICEWRAPPER --nofirststartwizard --nologo --headless "--accept=socket,host=localhost,port=$SOFFICE_PORT\;urp\;StarOffice.ServiceManager""

mit den doppelten Gänsefüsschen (“”):

# Libre Office
 SOFFICE_PATH="/array/alfresco/libreoffice/program"
 SOFFICE_PORT="8100"
 SOFFICEBIN=/array/alfresco/libreoffice/program/.soffice.bin
 SOFFICEWRAPPER=/array/alfresco/libreoffice/program/soffice.bin
 SOFFICE="$SOFFICEWRAPPER --nofirststartwizard --nologo --headless "--accept=socket,host=localhost,port=$SOFFICE_PORT\;urp\;StarOffice.ServiceManager""
 SOFFICE_STATUS=""

Unter Ubuntu xenial konnte libreoffice auch nicht starten, weil eine library gefehlt hat:

Check:

/opt/alfresco-5.0.a/libreoffice/program/soffice.bin --nofirststartwizard --nologo --headless --accept=socket,host=localhost,port=8100

Resultat:

libreoffice libGL.so.1: cannot open shared object file: No such file or directory

Abhilfe:

sudo apt-get install libglu1