HOWTO: SeedDMS installieren

Wer versucht SeedDMS (Document Management System) zu installieren wird schnell feststellen, dass es keinen Installationsleitfaden gibt. Ohne ein wenig Linux Kenntnisse gestaltet sich die Installation recht schwierig.

Aus diesem Grund habe ich meine Installation auf einem frisch aufgesetzten Ubuntu 16.04 dokumentiert. Ich arbeite als root und lasse deshalb das sudo vor jedem Befehl weg. Die Versionsnummern der Installationspakete müssen selbstverständlich mit der Zeit angepasst werden, wenn neuere Versionen zum Download bereit stehen.

Wir beginnen mit den benötigten Paketen für Ubuntu:

apt-get update
apt-get install apache2 php7.0 mysql-server libapache2-mod-php7.0 php7.0-xml php7.0-gd php7.0-mbstring php7.0-mysql php-pear 
apt-get install zend-framework imagemagick id3 poppler-utils catdoc docx2txt
pear install Log
pear install channel://pear.php.net/HTTP_WebDAV_Server-1.0.0RC8
pear install Mail
pear install Net_SMTP

Um die Sicherheit zu erhöhen, führen wir folgendes Script aus:

mysql_secure_installation

Installation von SeedDMS (https://sourceforge.net/projects/seeddms/files):

cd /var/www
wget https://sourceforge.net/projects/seeddms/files/seeddms-5.1.6/seeddms-5.1.6.tar.gz/download
mv download seeddms-5.1.6.tar.gz
tar -xzf seeddms-5.1.6.tar.gz
rm seeddms-5.1.6.tar.gz
mv seeddms-5.1.6 dms
touch /var/www/dms/conf/ENABLE_INSTALL_TOOL
cp /var/www/dms/conf/settings.xml.template /var/www/dms/conf/settings.xml
chown -R www-data:www-data /var/www/dms

Verzeichnisse für die Daten anlegen:

mkdir /var/dms /var/dms/data /var/dms/data/lucene /var/dms/data/staging/ /var/dms/data/cache/
chown -R www-data:www-data /var/dms

Weitere dazugehörige Dateien mit wget von Sourceforge in temporären Ordner herunterladen und installieren:

pear install SeedDMS_Core-5.1.6.tgz
pear install SeedDMS_Lucene-1.1.12.tgz
pear install SeedDMS_SQLiteFTS-1.0.9.tgz
pear install SeedDMS_Preview-1.2.8.tgz

In der Datei settings.xml muss die Zeile dbDriver angepasst werden:

dbDriver = "mysql"

Anlegen der Datenbank. ‘Passwort’ sollte natürlich geändert werden:

mysql -u root -p
CREATE USER 'dms'@'localhost' IDENTIFIED WITH mysql_native_password AS 'Passwort';
SET PASSWORD FOR 'dms'@'localhost' = PASSWORD('Passwort');
GRANT USAGE ON *.* TO 'dms'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `dms`;
GRANT ALL PRIVILEGES ON `dms`.* TO 'dms'@'localhost';
quit

Anlegen der Apache-Config:

nano /etc/apache2/sites-available/dms.conf

mit dem Innhalt:

<VirtualHost *:80>
        ServerName dms.musterser.ver
        ServerAdmin abuse@musterser.ver
        DocumentRoot /var/www/dms
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Anschließend notwendige Module und die Konfiguration aktivieren:

ln -s /etc/apache2/sites-available/dms.conf /etc/apache2/sites-enabled/
a2enmod rewrite
service apache2 restart

Nun sind wir so weit und können über die Weboberfläche die Konfiguration fortsetzen, indem wir die Seite http://dms.musterser.ver/install/install.php aufrufen.
Dort sollte die SeedDMS Installationsseite kommen. Hier sind nun die gewünschten Verzeichnisse und die Daten der Datenbankanbindung zu vergeben.

Root directory: /var/www/dms/
Http Root: /
Content directory: /var/dms/data/
Directory for full text index: /var/dms/data/lucene/
Directory for partial uploads: /var/dms/data/staging/
Cache directory: /var/dms/data/cache/

Database Type: mysql
Server name: localhost
Database: dms
Username: dms
Password: Passwort
Create database tables: Unbedingt auswählen

Danach kommt man mit Benutzer und Passwort ‘admin’ auf die Einstellung-Seite. Ab hier können die gewünschten Einstellungen über die Website vorgenommen werden.

Abschließend möchte ich noch darauf hinweisen, dass man so ein System im produktiven Umfeld nicht ohne Verschlüsselung (SSL/HTTPs) laufen lassen sollte. Aber wie man Apache2 absichert beschreiben diverse andere HOWTOs im Netz. Darum gehe ich hier nicht mehr darauf ein.

Ich hoffe das kurze HOWTO ist hilfreich. Ich freue mich über Kommentare 😉

Zahnstein beim Hund ohne Vollnarkose entfernen

Vor einigen Wochen war ich mit Balko bei unserem Tierarzt für den jährlichen Gesundheitscheck. Es kam genau so, wie ich es erwartet hatte: Der Hund ist gesund, das Gewicht noch gerade so okay, aber der Zahnstein muss runter.

Balko ist inzwischen knapp neun Jahre alt und genau wie alle anderen Hundebesitzern zucke auch ich zusammen, wenn ich das Wort Vollnarkose höre. Der Tierarzt hat also auf meinen Wunsch hin Blut abgenommen, um ganz sicher zu gehen, dass Balko keine anderen Krankheiten hat und die Narkose gut überstehen wird. Das Blut kam ins Labor und ich hatte ein paar Tage Zeit nach Alternativen zu suchen.

Also habe ich am nächsten Tag erst mal Google befragt. Dabei bin ich auf zwei Möglichkeiten gestoßen, die von vielen Hundebesitzern mit viel Erfolg genutzt werden. Zumindest sieht es so in den Bewertungen aus. Das eine ist die Emmi-Pet Ultraschall-Zahnbürste für Haustiere samt dazugehöriger Emmi-Pet Zahnpasta. Aber mit 199 Euro ist das ein stolzer Preis.

Viel günstiger ist da eine unscheinbare Tinktur mit dem Namen FORTAN Zahnpflege, die man für deutlich unter zehn Euro kaufen kann. Bevor ich also fast zweihundert Euro für etwas ausgebe, bei dem ich mir nicht sicher bin, ob es funktioniert, bestelle ich mir doch lieber erst mal das günstige Produkt.

Zwei Tage später war die FORTAN Zahnpflege da und die Blutergebnisse auch. Balko ist fit und es spricht nichts gegen eine Narkose. Egal! Ich will keine Narkose für Balko, wenn es nicht unbedingt sein muss.

Also legten wir los. Ein Fingerling, den wir noch zu Hause hatten, wurde mit der Tinktur befeuchtet. Anschließend haben wir die Flüssigkeit mit dem Fingerling auf die Zähne aufgetragen. An den Stellen, an den viel Zahnstein vorhanden war, haben wir auch etwas länger geputzt. Da die Zahnpflege leicht süßlich riecht, hat Balko die Prozedur auch mit wenig Gegenwehr über sich ergehen lassen.

Nach einer Woche täglicher Anwendung hatte sich optisch nicht viel getan. Aber Balko wusste schon, wenn der Fingerling kam, dass es jetzt wieder los geht. Begeisterung sieht bei ihm anders aus, aber es scheint erträglich zu sein, denn er hat auch nicht versucht, sich zu verdrücken.

Nach knapp zwei Wochen wurde ich ungeduldig und bin mit meinem Daumennagel an einen Eckzahn gegangen. Ich wollte sehen, ob sich der Zahnstein vielleicht zumindest ein bisschen gelöst hat. Knack! Es löste sich eine kleine Platte Zahnstein in der Größe von ca. 2×2 mm. Also schnell weiter. So war es überall. Ich konnte den Zahnstein ohne Probleme mit den Fingernägeln von Balkos Zähnen kratzen. Nach ca. 5 Minuten hatte ich einen genervten Hund ohne sichtbaren Zahnstein. Aber der Zweck heiligt eben doch die Mittel.

Die Falsche FORTAN Zahnpflege ist auch nach den zwei Wochen täglicher Benutzung noch zu dreiviertel gefüllt. Es ist also auch noch sehr sparsam. Nachdem der Zahnstein entfernt ist, soll man das Produkt weiterhin 1-2 mal pro Woche anwenden um die Neuentstehung von Zahnstein zu verhindern.

Jetzt überlege ich, ob ich das Zeug mal an mir selber ausprobiere. Vielleicht kann ich mir damit sogar die PZR beim Zahnarzt sparen 😉 (Nicht so ernst gemeint)

Zum Schluss noch die vorher-nachher Bilder von Balko. Es liegen, wie beschrieben, ca. zwei Wochen zwischen den Aufnahmen:

Aufnahmen von Balkos Zähnen im Abstand von zwei Wochen
© Sebastian Gerlach
Aufnahmen von Balkos Zähnen im Abstand von zwei Wochen
© Sebastian Gerlach

WordPress durch Cronjob beschleunigen

Kurz dokumentiert:

Es gibt eine einfache Möglichkeit, die Antwortzeiten von WordPress zu beschleunigen. In einer Standard-Installation wird bei jedem einzelnen Seitenaufruf zusätzlich die wp-cron.php ausgeführt.

Wenn ihr Zugriff auf die Cronjobs des Webservers habt, kann man dieses Verhalten abschalten und die wp-cron.php mittels Cronjob in regelmäßigen Abständen ausführen. Für den Besucher verbessern sich dadurch die Zugriffszeiten und der Traffic sinkt.

Es sind nur zwei Schritte erforderlich:
1) In der Datei wp-config.php tragt ihr folgende Zeile direkt unterhalb von ‘define(‘DB_COLLATE’, ”);’ ein:

define('DISABLE_WP_CRON', true);

2) In der Crontab wir folgende Zeile ergänzt:

59 * * * * www-data /usr/bin/php -f /var/www/<Pfad zur WP-Installation>/wp-cron.php

In meinem Beispiel führt nun der User www-data jede Stunde in der 59 Minute den Cronjob aus. In den meißten Fällen wird eine stündliche Ausführung genügen.