Running mpdl-scip-linux01

MPDL,Admin

Note: Migrated from ScipWiki, hence in German.

Beschreibung
Der Server wurde der Abteilung ScIP (inzwischen Information) von der IT zur Verfügung gestellt (AP: Axel Römmelmayer), ist nur im Intranet der MPDL verfügbar und kann für Datenverarbeitungen verschiedener Art, Test-Installationen, Demos usw. verwendet werden.

Die installierten Entwicklungsumgebungen sind Voraussetzung für Betrieb und Weiterentwicklung verschiedener produktiver Dienste.

Außerdem laufen automatisierte Datenverarbeitungen, die Daten für produktive Dienste bereitstellen, s. Cronjobs.

Betriebssystem
Debian Linux

Paket-Updates:

täglich (von extern)
 * aptitude update
 * aptitude safe-upgrade -y

automatisiert - Ausnahmen
 * PHP

Generell ist eine gewisse Stabilität der Umgebung von Vorteil, um Probleme mit laufenden Routinen zu vermeiden - daher die Überlegung, die automatisierte Aktualisierung von Paketen einzustellen.

syslog - im Moment lokal, Überlegung -> syslog-Server (Ergänzung)

Monitoring
Nagios (verfügbarer Plattenplatz u.a.)

Email an vlib-support (at) mpdl.mpg.de

Backup
Snapshot kann nicht regelmäßig erstellt werden (bei Bedarf auf Zuruf)

letztes manuell erstelltes Image 08.01.2014 s. IT#100496195567

Vorschlag für tägliche Sicherung dpkg -l (-> Backup-Server) /etc (Einstellungen) - lokale Dateien * mpg_ip.txt * logdownload/* /opt (Daten, inkl. svn_checkout) /opt/data -> /var/userdata /var/lib/mysql (s. MySQL --datadir) /home (Einstellungen .profile, etc.) /root * inkl. * Einstellungen (.profile, .viminfo, etc.) * Perl, cpan Metadaten * bazaar History * subversion * sources/ * XenTools_6.1/ * Ausnahmen * credentials/

Temporäre tar-Datei unter \\filesvr01\share\mpdl\all\Projekte\vLib\mpdl-scip-linux01\cpan.tar.gz zur Bewahrung der Perl-Umgebung

Symlinks sollten auf zu sichernde Dateien und Verzeichnisse verweisen und können ignoriert werden

Backup-User: ldp_bkadmin (uid/gid 77012)

Migration
Liste der Debian sources wird regelmäßig gesichert s. Backup, und kann zur Rekonstruktion der Umgebung verwendet werden.

Perl s. Perl

Zugang
ssh mpdl-scip-linux01 (nur im Intranet)

Bei Bedarf einfach einen Account einrichten lassen (AP: Erik)

Anmeldung über OpenLDAP bei Bedarf möglich

User: nagios-remote

Struktur
Eigene Dateien unter /home/

Gemeinsames Arbeiten unter /opt

Arbeitsverzeichnisse
 * data
 * src - Daten zur Verarbeitung hinterlegen
 * out - verarbeitete Daten
 * proc - eigene Programme in Perl, Python usw.
 * lib - eigene Module
 * svn_checkout - working copies aus verschiedenen svn repositories. Die Arbeitsverzeichnisse enthalten symbolische Links, die auf die Datei in der entsprechenden svn working copy verweisen, Bsp.

erik@mpdl-scip-linux01:/opt/proc/python$ ls -l url_check.py lrwxrwxrwx 1 inga users 42 Mar 21 14:48 url_check.py -> /opt/svn_checkout/url-checker/url_check.py

Benutzerkonten
Es werden persönliche lokale Benutzerkonten erstellt.

Außerdem besteht die Möglichkeit, Unix Funktions-Accounts zu verwenden.

Standardmäßig steht der Benutzer appuser (Gruppe users) zur Verfügung. Das pw ist nicht bekannt, die Anmeldung als appuser erforder sudo-Rechte:

sudo su -l appuser

Automatisierte Routinen bzw. Cronjobs können als appuser ausgeführt werden.

Voraussetzung: erforderliche Rechte (z.B. Ausführen von Programmen, Lesen von Konfigurationsdateien, Schreiben von Logdateien) für appuser oder die Gruppe users.

Benötigte Daten (z.B. Credentials) können im Home-Verzeichnis von appuser vorgehalten werden.

Auf diese Weise können Routinen automatisiert und ohne root-Berechtigungen ausgeführt werden, ohne dass ein Benutzer persönlich für den Ablauf zuständig ist.

Berechtigungen
Benutzerkonten (ScIP-Mitarbeiter) erhalten normalerweise die zusätzliche Gruppe users

weiterführende Rechte (Bsp. sudo, oder Zugang zu Verzeichnissen und Dateien) einfach erfragen (AP: Erik)

Unter /opt sollen alle existierenden und neu erstellten Objekte der Gruppe users gehören (Standard-Berechtigungen, zusätzliche Berechtigungen müssen von root oder dem Besitzer des Objekts vergeben werden).

Zusätzlich werden ACLs eingesetzt, um Schreibrechte auf existierende Objekte für die Gruppe users zu gewährleisten.

Da in den working copies unterhalb von /opt/svn_checkout Besitzer und Berechtigungen offenbar durch svn update zurückgesetzt werden, werden für diese Verzeichnisse ebenfalls ACLs verwendet, so dass die Gruppe users immer explizit volle Berechtigungen erhält, Bsp.

getfacl url-checker user::rwx group::rwx group:users:rwx ... default:group:users:rwx ...
 * 1) file: url-checker
 * 2) owner: inga
 * 3) group: users

Hier kommt es jedoch zu Problemen bzw. zu Konflikten mit Berechtigungen, die z.B. durch svn update gesetzt werden (obwohl Datei-Berechtigungen offenbar nicht im svn repository gespeichert werden). Hierfür gibt es im Moment keine Standard-Lösung. Je nach Bedarf müssen daher Berechtigungen modifiziert oder auch rekursiv neu vergeben werden usw.

Allgemein
Wenn zusätzliche Software benötigt wird, entweder selbst installieren oder einfach bestellen (AP: Erik)
 * sudo apt-get install
 * (externe) Debian packages
 * sudo dpkg -i .deb
 * sudo apt-get install -f (Abhängigkeiten auflösen)

Metadaten
/usr/local/vufind - VuFind, Daten indexieren mit Solr, solrmarc, Web-Interface http://10.1.0.13/vufind/

catmandu - Kommandozeilen-Util von Perl Catmandu, Tutorial - umfassende Verarbeitung, Konvertierung usw. verschiedener Formate, Programmier-Tookkit

yaz-marcdump - MARC-Daten lesen und konvertieren), s. man yaz-marcdump

bibutils - zwischen verschiedenen bibliographischen Formaten konvertieren

/opt/proc/perl/MARCgrep.pl - MARC-Daten filtern, s. perldoc MARCgrep.pl

XSLT
xsltproc XSLT 1.0 Kommandozeilen-Prozessor

Saxon XSLT 2.0, Aufruf über Kommandozeile java -cp /opt/proc/java/saxon/saxon9he.jar net.sf.saxon.Transform -s:test.xml -xsl:test.xsl -o:out.xml

Tests und Vergleiche
Link-Checker (von Inga), s. #3276

Titlelisten-Vergleich (von Inga), s. #3758

Logfiles
/opt/proc/python/anonymizer.py (von André Wobst) - zur Anonymisierung von Logfiles, s. python anonymizer.py -h, #894

SSLyze
SSL scanner as 3rd party package, see https://github.com/iSECPartners/sslyze

packaged version 0.12 downloaded (.zip)

requires Python 2.7

run at

/opt/proc/python/sslyze/sslyze>python sslyze.py -h

Perl
Für Installationen steht die cpan-Shell zur Verfügung (Abhängigkeiten werden automatisch installiert) sudo cpan > o conf init (vollständige Konfiguration) > install 

oder im Notfall manuelle Installation, sources unter /root/sources/cpan.old

Perl-Upgrade bzw. Migration in eine andere Umgebung sudo cpan > autobundle (erstellt /root/.cpan/Bundle/Snapshot_YYYY_MM_DD_00.pm) > install Bundle::Snapshot_YYYY_MM_DD_00 d.h. alle cpan als installiert bekannten Module werden in der neuen Umgebung neu installiert. Deshalb ist die Modul-Installation über cpan nicht nur am bequemsten (automatische Auflösung von Abhängigkeiten u.a.), sondern auch am nachhaltigsten.

eigene Programme unter /opt/proc/perl, Code s. https://devtools.mpdl.mpg.de/projects/vlib/browser/software/trunk/perl/proc

eigene Module unter /opt/lib/perl, Code s. https://devtools.mpdl.mpg.de/projects/vlib/browser/software/trunk/perl/lib

Python
eigene Programme unter /opt/proc/python, Code s. https://devtools.mpdl.mpg.de/projects/vlib/browser/software/trunk/python_scripts

PHP
 PHP 5.4.36-0+deb7u3 (cli) (built: Jan 9 2015 09:05:14) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies 

möglichst stabil (Entwicklungsumgebung für VuFind, VuFind2)

MySQL
MySQL sollte laufen, Bsp.  mysql    4186  0.0  3.9 317848 40272 pts/0    Sl   13:23   0:14 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 

root-Zugang  mysql -u root -p [in pw-Safe, bitte Irina oder Erik fragen] 

phpMyAdmin
Aktuelle Version heruntergeladen und entpackt (Debian-Paket ist ungeeignet).


 * Installations-Verzeichnis /var/www/phpMyAdmin im httpd docroot.
 * Config-Verzeichnis /etc/phpMyAdmin, Anpassung CONFIG_DIR in phpMyAdmin/libraries/vendor_config.php erforderlich. Berechtigungen config.*.inc.php root: rw, www-data: r
 * Auth type "cookie" (default), i.e. Login mit MySQL-Accounts.
 * (Standard-)pw's überprüft und bei Bedarf zurückgesetzt.
 * Custom key (mind. 32 Zeichen lang) in config.inc.php zur Verschlüsselung der cookie auth.
 * Config storage in separater Datenbank phpmyadmin, bei Bedarf Nutzerrechte auf die Datenbank vergeben.
 * Apache config s. /etc/apache2/conf.d/phpMyAdmin inkl. Freischaltung für interne IPs

Cronjobs
sudo crontab -u root -l

30 23 * * * /bin/bash -c 'python /opt/proc/python/imeji/item_uploader.py -p "/mnt/outbox_upload" -r "overkamp@mpdl.mpg.de,mayer@mpdl.mpg.de" -c "/opt/proc/python/imeji/outbox" -d -u' > /opt/proc/python/imeji/outbox-logfile.txt 2>&1 00 01 * * * /bin/bash -c 'python /opt/proc/python/imeji/excel-splitter.py -p "/mnt/oa_metrics" -r "overkamp@mpdl.mpg.de,sikora@mpdl.mpg.de" -d 1' 30 01 * * * /bin/bash -c 'python /opt/proc/python/imeji/item_uploader.py -p "/mnt/oa_metrics/outbox_upload" -r "overkamp@mpdl.mpg.de,sikora@mpdl.mpg.de" -c "/opt/proc/python/imeji/outbox" -d -u'
 * Outbox Uploads
 * Zweck: Upload institutsspezfischer Nutzungsstatistiken und APC-Reports in die Outbox - zur Bereitstellung an MPG-Bibliotheken
 * Zuständigkeit: Inga (Vertretung: Doro)
 * Häufigkeit: täglich
 * Info: s.
 * Trac-Ticket:3811 - Nutzungsstatistiken
 * Trac-Ticket:3900#comment:21 - APC-Reports
 * Cronjobs (root)
 * Uploader und Excel-Splitter ausführen
 * 1) Outbox upload for usage stats, IOv
 * 1) Excel splitting and outbox upload for APC reports, IOv see #3900

/etc/cron.d/local

00 09 * * * root logfile=/opt/bin/IpData/logs/ip_download.log; /opt/bin/IpData/ip_download.sh > $logfile 2>&1; mail -s "mpdl-scip-linux01 ip_download.sh" vlib-support@mpdl.mpg.de < $logfile
 * IP-Liste unter /etc/mpg_ip.txt aktualisieren
 * Zweck: Wird von anonymizer benötigt, s. Logfiles
 * Zuständigkeit: Erik (Vertretung: Inga)
 * Format Diskussion:IM:IPAddr (bitte Bescheid geben, wenn weitere Formate gewünscht werden)
 * Häufigkeit: täglich
 * Cronjob (root)
 * IP-Liste mpg_ip.txt über IpLoader herunterladen
 * Logfile /opt/bin/IpData/logs/ip_download.log
 * Email an vlib-support

05 09 * * * root logfile=/opt/bin/LogData/LogDownload/logs/vzg.log; /opt/bin/LogData/LogDownload/LogDownload.sh vzg > $logfile 2>&1; mail -s "mpdl-scip-linux01, LogDownload.sh vzg " vlib-support@mpdl.mpg.de < $logfile 10 09 * * * root logfile=/opt/bin/LogData/LogDownload/logs/gwdg.log; /opt/bin/LogData/LogDownload/LogDownload.sh gwdg > $logfile 2>&1; mail -s "mpdl-scip-linux01, LogDownload.sh gwdg " vlib-support@mpdl.mpg.de < $logfile
 * Log-Download
 * Zweck: Automatisierter Download von Webserver-Logdateien
 * Zuständigkeit: Erik (Vertretung: Irina)
 * Häufigkeit: täglich
 * Info: s. Trac-Ticket
 * Cronjob (root)
 * Config-Dateien unter /etc/logdownload (les- und schreibbar nur für root)
 * Routine ausführen
 * Logfiles logfile=/opt/bin/LogData/LogDownload/logs/*.log
 * Email an vlib-support

00 07 * * 1-5 appuser logfile=/opt/bin/UrlChecker/logs/aleph_ers01.log; /opt/bin/UrlChecker/run.sh aleph_ers01 > $logfile 2>&1; mail -s "mpdl-scip-linux01, aleph_ers01.sh" vlib-support@mpdl.mpg.de < $logfile
 * eResCat-Linkchecker
 * Zweck: URLs in Aleph ERS01 Feldern prüfen (http-Status)
 * Zuständigkeit: Erik (Vertretung: Inga)
 * Häufigkeit: täglich
 * Info: s. Trac-Ticket
 * Cronjob (appuser)
 * Routine ausführen
 * Logfile /opt/bin/UrlChecker/logs/aleph_ers01.log
 * Email an vlib-support

30 06 * * 1-5 appuser logfile=/opt/bin/UrlChecker/logs/travelmagic.log; /opt/bin/UrlChecker/run.sh travelmagic > $logfile 2>&1; mail -s "mpdl-scip-linux01, travelmagic.sh" vlib-support@mpdl.mpg.de < $logfile
 * Travel Magic Services-Monitor
 * Zweck: Travel Magic Services monitoren (sind die Remote Access-Dienste auf den Zielseiten noch verfügbar?)
 * Zuständigkeit: Erik (Vertretung: Inga)
 * Häufigkeit: täglich
 * Info: s. Trac-Ticket
 * Cronjob (appuser)
 * Routine ausführen
 * Logfile /opt/bin/UrlChecker/logs/travelmagic.log
 * Email an vlib-support

00 10 05 * * appuser logfile=/opt/bin/LogData/LogProc/vufind/wrapper.log; /opt/bin/LogData/LogProc/vufind/wrapper.sh > $logfile 2>&1; mail -s "mpdl-scip-linux01, VuFind statistics LogProc/vufind/wrapper.sh" vlib-support@mpdl.mpg.de < $logfile
 * VuFind-Statistik
 * Zweck: Monatliche Auswertung der VuFind-Logfiles unter /mnt/mpdl_stats/zzzanon/vufind/. Erzeugte csv-Dateien werden anschließend manuell (nach Prüfung) an Empfänger versandt.
 * Zuständigkeit: Erik (Email-Adresse in wrapper.sh)
 * Häufigkeit: monatlich
 * Info: s. Trac-Ticket
 * Cronjob (appuser)
 * Logfile /opt/bin/LogData/LogProc/vufind/wrapper.log
 * Email an vlib-support

55 19 * * 1-5 appuser /opt/bin/ErmData/download.sh > /opt/bin/ErmData/logs/download.log 2>&1 00 20 * * 1-5 root logfile=/opt/bin/ErmData/logs/upload_test.log; /opt/bin/ErmData/upload.sh test > $logfile 2>&1; mail -s "mpdl-scip-linux01 ErmData, upload.sh (test)" vlib-support@mpdl.mpg.de,arndt@mpdl.mpg.de < $logfile 05 20 * * 1-5 root logfile=/opt/bin/ErmData/logs/upload_prod.log; /opt/bin/ErmData/upload.sh prod > $logfile 2>&1; mail -s "mpdl-scip-linux01 ErmData, upload.sh (prod)" vlib-support@mpdl.mpg.de,arndt@mpdl.mpg.de < $logfile
 * ERM-Daten
 * Zweck: LIMA-Export auf Aleph-Server laden
 * Zuständigkeit: Erik (Vertretung: Irina)
 * Häufigkeit: täglich
 * Cronjobs
 * download.sh (appuser) Download der ERM-Daten von SESAM-LIMA (Format Aleph-Sequential), Verarbeitung/Bereitstellung
 * upload.sh (root) Upload der Daten auf den Aleph-Server (als root)
 * Logfiles /opt/bin/ErmData/logs/*.log
 * Email an vlib-support, Irina

00 08 * * * appuser logfile=/opt/bin/mysql/backup.log; /opt/bin/mysql/backup.sh > $logfile 2>&1; mail -s "mpdl-scip-linux01, mysql/backup.sh" vlib-support@mpdl.mpg.de < $logfile
 * Selektives MySQL-Backup
 * Zweck: Automatisierter mysqldump bestimmter Datenbanken/Tabellen (s. /opt/bin/mysql/backup.sh)
 * Zuständigkeit: Erik (Vertretung: Inga)
 * Häufigkeit: täglich
 * Backup-Verzeichnis /opt/data/backup/mysql
 * Datenaufbewahrung: 7 Tage
 * Cronjob (appuser)
 * Logfile /opt/bin/mysql/backup.log
 * Email an vlib-support

Emails
SMTP-Server exim, interface /usr/lib/sendmail - TODO Postfix installieren (IT: "unser Standard")

Beispiele
für laufende Datenverarbeitungen und Prozesse

...
 * Aufbereitung von Metadaten (Validierung, Korrekturen, Anreicherung usw.)
 * Organisation, Auswertung und Anonymisierung von Log-Daten
 * VuFind-Demoserver

Setup
permanente Netzlaufwerke:

a) für Statistik & Apache Logfile Handling: sudo mount -t cifs //filesvr01.mucam.mpg.de/share/mpdl/stats /mnt/mpdl_stats -o user= ,uid=0,gid=0 Details s. Cronjobs, Log-Download

b) für Outbox-Uploader: sudo mount -t cifs //filesvr01.mucam.mpg.de/share/mpdl1/scip_metrics_plus/outbox_upload /mnt/outbox_upload -o user= ,uid=0,gid=0 sudo mount -t cifs //filesvr01.mucam.mpg.de/share/mpdl1/scip_infomana/im_oa/oa_metrics /mnt/oa_metrics -o user= ,uid=0,gid=0 sudo mount -t cifs //filesvr01.mucam.mpg.de/share/mpdl1/scip_softwarelizenzen /mnt/software_lic -o user= ,uid=0,gid=0

c) fuer eBook-Datenverarbeitung: sudo mount -t cifs //filesvr01.mucam.mpg.de/share/mpdl1/scip_ebooks/Daten /mnt/ebook_data -o user= ,uid=0,gid=0

Jeweils eingerichtet von einem Nutzer (filesvr user) mit Berechtigung für das jeweilige Netzwerklaufwerk - BUG: Netzlaufwerk kann nicht automatisiert mit Funktions-Account mpdl_stats gemountet und muss daher nach Reboot neu erstellt werden

Netzlaufwerk einrichten
s. IT-Doku

oder auch (bis zum nächsten System-Neustart), Bsp.

sudo mount -t cifs //filesvr01.mucam.mpg.de/home/ /home//mountdir -o user=,uid=,gid=

dann wird man zur Eingabe des Fileserver-Passworts aufgefordert.

uid, gid (Unix User- bzw. Gruppen-ID) bestimmen die Ownership für die Dateien und Ordner, die unterhalb des Mount-Verzeichnisses (/home/user/mountdir) gelistet werden

Unix User-ID und "persönliche" Gruppe (:)

more /etc/passwd | grep  :x:<UID>:<GID> ...

Gruppe users (:users)

more /etc/group | grep users users:x:100 ...

Laufwerk einrichten mit -o ...,uid=<UID>,gid=100

ls -l /home/<Unix USER>/mountdir/testfile rw-r-r ... <Unix USER> users ... testfile

Log-Daten anonymisieren
s. https://devtools.mpdl.mpg.de/projects/vlib/ticket/894

issues - anonymize apache logfiles - caveats, anonymize log data

s. auch https://subversion.mpdl.mpg.de/repos/software/trunk/anonymizer/readme.txt