================================================================================
Datenbankanwendung Universitätssammlungen: Installation
================================================================================
2009-10-04, martin.stricker@gmail.com

Die Anwendung ist eine von spezifischen Serverumgebungen weitgehend 
unabhängig konfigurierte PHP Anwendung, basiert auf dem Zend Framework und 
nutzt MySQL als Datenbank Server. Möglicherweise - dies könnte sich im Laufe 
der Zeit ändern - enthält sie eine MediaWiki Installation, die separat 
konfiguriert werden müsste.

Installation Überblick:

A. Anwendung im Anwendungsverzeichnis installieren
B. Web Server und PHP5 Modul konfigurieren
C. MySQL Datenbank installieren
D. Anwendungskonfiguration anpassen
E. Cron Jobs einrichten
F. (optional) MediaWiki installieren und konfigurieren


Systemanforderungen
===================

- eine Unix-ähnliche Serverumgebung (Linux, BSD, Mac OS X, ...)
- Apache HTTP Server 2.2 oder später, mod_rewrite erforderlich
  http://www.apache.org/
- PHP 5.2 oder später, als Apache Modul, mit Erweiterungen mbstring, mysqli
  http://www.php.net/
- Zend Framework 1.9 oder später (Standard Framework plus Extras ZendX)
  installiert und im include_path
  http://framework.zend.com/
- MySQL 5.0 oder später
  http://www.mysql.com/
- Super User Rechte für Server und Datenbankserver


Dateien und Datenbankdumps
==========================

{usm2.pack} = usm2.tgz (Archivierte Anwendungsverzeichnisse und -dateien)
{usm2.sql}  = usm2.sql (MySQL Dump der Anwendungsdatenbank)
{wiki.sql}  = wiki.sql (MySQL Dump der MediaWiki Datenbank)


Variablen
=========

{usm2dir}
  Anwendung Installationsverzeichnis
{usm2db}
  Anwendung MySQL Datenbank
{usm2host}
  Anwendung Web URL (Home)
{apacheuser}
  Unix User, unter dem Apache läuft
{wikidb}
  MediaWiki MySQL Datenbank
  

Benutzernamen und Passwörter
============================

{usm2admin} =
  Anwendung Administratoraccount
{usm2adminpw} =
  Anwendung Administratoraccount Passwort

{wikiadmin} =
  MediaWiki Administratoraccount
{wikiadminpw} = 
  MediaWiki Administratoraccount Passwort
  

============
Installation
============

A. Anwendung im Anwendungsverzeichnis installieren
==================================================

1. Ein neues und leeres Verzeichnis {usm2dir} für die Anwendung einrichten
2. Die archivierten Anwendung {usm2.pack} in das Verzeichnis {usm2dir} 
   auspacken lassen
   
Beispiel: [shell]: mkdir {usm2dir}
                   cd {usm2dir}
                   tar xvzf /pfad/zu/usm2.tgz


B. Web Server und PHP5 Modul konfigurieren
==========================================

1. Falls beabsichtigt, einen neuen Virtual Host einrichten
2. Den (Virtual) Host konfigurieren:
      DocumentRoot = "Absoluter Pfad zu {usm2dir}/public"
      AllowEncodedSlashes On
   Hinweise: Die Anwendung ist so konfiguriert, dass sie automatisch erkennt,
             wenn sie in einem Unterverzeichnis unter einem DocumentRoot
             läuft. In diesem Falle kann man einen symbolischen Link
             einrichten, der auf {usm2dir}/public verweist.

3. Zend Framework (Zend) und Zend Framework Extras (ZendX) müssen installiert
   sein und sich im include_path des PHP Moduls befinden


C. MySQL Datenbank installieren
===============================

1. Eine neue und leere MySQL Datenbank {usm2db} einrichten
2. {usm2.sql} in {usm2db} importieren
   Beispiel: [shell]: mysql {usm2db} < {usm2.sql}
3. Wenn gewünscht, einen dedizierten MySQL Benutzer für {usm2db} einrichten,
   mit vollen Schreib- und Leserechten für die gesamte Datenbank


D. Anwendungskonfiguration anpassen
===================================

1. Datenbank Host, Name, User und Passwort von {usm2db} in der
   Anwendungskonfiguration anpassen:
   Konfigurationsdatei:
     {usm2dir}/application/configs/application.ini
   Konfigurationsoptionen:
     resources.db.params.host = "[MySQL Host von {usm2db}]"
     resources.db.params.username = "[MySQL User von {usm2db}]"
     resources.db.params.password = "[Passwort für MySQL User von {usm2db}]"
     resources.db.params.dbname = "{usm2db}"

2. Unix Lese- und Schreibrechte für dieses Verzeichnis und dessen Inhalte auf 
   Welt lesen und schreiben setzen:
      {usm2dir}/public/wpdimg
   Beispiel: [shell]: chmod -R 777 {usm2dir}/public/wpdimg
   
   Hinweis: Die Rechte können auch anders (sicherer) angepasst werden. Es muss
   sichergestellt sein, dass sowohl {apacheuser} als auch der Unix User, unter
   dessen Name die Cron Jobs (E.) eingerichtet werden, Schreib- und Leserechte
   für das Verzeichnis haben. 

Die Anwendung müsste nun im Web unter {usm2host} erreichbar sein. Anschliessend
eventuell den Abschnitt "Variablen" in PACKANDGO aktualisieren.


E. Cron Jobs einrichten
=======================

Für den ordentlichen Betrieb der Anwendung ist das Einrichten von Cron Jobs
erforderlich. Es handelt sich dabei um PHP Skripte.

Stündlich: {usm2dir}/application/cli/hourly.php
Täglich: {usm2dir}/application/cli/daily.php

Beispiel:
  41 3 * * * /pfad/zu/php /application/cli/daily.php
  11 * * * * /pfad/zu/php /application/cli/hourly.php
  
Die Skripte produzieren Log Output, der entsprechend verarbeitet werden sollte
(Log Datei, E-Mail, /dev/null etc.). Der Benutzer, unter dessen Namen die 
Cron Jobs laufen, muss Schreib- und Lesezugriff auf {usm2dir}/public/wpdimg
haben (vgl. D.2.)


F. (optional) MediaWiki installieren und konfigurieren
======================================================

Zur Zeit (2009-10-04) befindet sich in {usm2dir}/public/wiki eine MediaWiki
Installation, die per {usm2host}/wiki im Web erreichbar ist. Vgl. auch
http://www.mediawiki.org

1. MediaWiki MySQL Datenbank {wiki.sql} importieren:
   - neü und leere Datenbank einrichten {wikidb}
   - {wiki.sql} importieren
     Beispiel: [shell]: mysql {wikidb} < {wiki.sql}

2. Konfiguration MediWiki anpassen
   Datei: {usm2dir}/public/wiki/LocalSettings.php
   
3. Dem Web Server User {apacheuser} Lese- und Schreibrechte auf dieses
   Verzeichnis und dessen Inhalte erteilen:
   {usm2dir}/public/wiki/images
   
4. Das Verzeichnis {usm2dir}/public/wiki enthält möglicherweise eine
   .htaccess Datei, die auf dem HTTP Level eine Server-basierte 
   Authentifzierung konfiguriert. Diese müsste vermutlich angepasst
   oder entfernt werden.



