DAViCal installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(User anlegen und konfigurieren)
K (Kapitelnumerierung)
Zeile 1: Zeile 1:
{{HSDoku-Links}}
{{HSDoku-Links}}


== DAViCal ==
== Allgemein ==
=== Allgemein ===
=== Beschreibung ===
==== Beschreibung ====
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen CLient-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry oder iCal / iPhone.
[http://www.davical.org/ DAViCal] ist ein Server für die Verwaltung von Kalendern über das [http://caldav.calconnect.org/ CalDAV-Protokoll]. Die Kalenderdaten können mit allen CalDAV-fähigen CLient-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit [http://www.mozilla.org/projects/calendar/lightning/ Lightning], Evolution, Mulberry oder iCal / iPhone.


Zeile 12: Zeile 11:
Es werden auch Kalender über das WebDAV-Protokoll untersützt, hier wird aber eine Nur-Lesemodus empfohlen.
Es werden auch Kalender über das WebDAV-Protokoll untersützt, hier wird aber eine Nur-Lesemodus empfohlen.


==== Voraussetzungen ====
=== Voraussetzungen ===


DAViCal setzt technisch voraus:
DAViCal setzt technisch voraus:
Zeile 21: Zeile 20:
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared Hosting Umgebung bei Hostsharing installiert und betreibt.
Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared Hosting Umgebung bei Hostsharing installiert und betreibt.


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






==== Design ====
=== Design ===


Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür aufgeschalteten Subdomain über SSL betrieben wird. Für andere Konfigurationen, wie z.B. Installation in einer Subdomain im <tt>sub</tt>-Verzeichnis müssen kleine Anpassungen vorgenommen werden.
Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür aufgeschalteten Subdomain über SSL betrieben wird. Für andere Konfigurationen, wie z.B. Installation in einer Subdomain im <tt>sub</tt>-Verzeichnis müssen kleine Anpassungen vorgenommen werden.
Zeile 31: Zeile 30:
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von den übrigen Domaininhalten isoliert werden kann, z.B. php-Konfiguration oder auch anderen Domain-Admin.
Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von den übrigen Domaininhalten isoliert werden kann, z.B. php-Konfiguration oder auch anderen Domain-Admin.


==== Subdomain aufschalten ====
=== Subdomain aufschalten ===


Wie in [[Verwalten_der_Zonendaten]] beschrieben das Zonefile der Domain anpassen um die Subdomain explizit den DNS-Servern zu delegieren und dann über [[Hsadmin]] die Subdomain anzulegen und einem Domain-Admin zuzuordnen.
Wie in [[Verwalten_der_Zonendaten]] beschrieben das Zonefile der Domain anpassen um die Subdomain explizit den DNS-Servern zu delegieren und dann über [[Hsadmin]] die Subdomain anzulegen und einem Domain-Admin zuzuordnen.
Zeile 47: Zeile 46:




==== Quellen ====
=== Quellen ===


Für DAViCal werden neben dem eigentlichen Sourcecode des Projekts noch die PHP-Library [http://andrew.mcmillan.net.nz/projects/awl ''Andrew's Web Libraries''] benötigt. Beides findet sich auf derselben Webseite.
Für DAViCal werden neben dem eigentlichen Sourcecode des Projekts noch die PHP-Library [http://andrew.mcmillan.net.nz/projects/awl ''Andrew's Web Libraries''] benötigt. Beides findet sich auf derselben Webseite.
Zeile 57: Zeile 56:
Hier jeweils die Source-Dateien *.tar.gz benutzen
Hier jeweils die Source-Dateien *.tar.gz benutzen


===== Download =====
==== Download ====
 
<pre><nowiki>
<pre><nowiki>
$ cd /home/doms/cal.example.org/var
$ cd /home/doms/cal.example.org/var
Zeile 64: Zeile 64:
</nowiki></pre>
</nowiki></pre>


===== Auspacken =====
==== Auspacken ====
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen wird die Dateierzeungsmaske temporär auf 022 gesetzt.
Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen wird die Dateierzeungsmaske temporär auf 022 gesetzt.


Zeile 77: Zeile 77:
</nowiki></pre>
</nowiki></pre>


==== PostgreSQL vorbereiten ====
=== PostgreSQL vorbereiten ===


Es wird eine eigene PostgreSQL-Datenbank benötigt, sowie 2 Datenbanknutzer.
Es wird eine eigene PostgreSQL-Datenbank benötigt, sowie 2 Datenbanknutzer.


===== Datenbank und -Nutzer anlegen =====
==== Datenbank und -Nutzer anlegen ====
{| class="wikitable"
{| class="wikitable"
|- class="hintergrundfarbe5"
|- class="hintergrundfarbe5"
Zeile 93: Zeile 93:
|}
|}


===== Umgebungsvariablen und <tt>.pgpass</tt> =====
==== Umgebungsvariablen und <tt>.pgpass</tt> ====
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Dabei wird <tt>xyz00_davical_dba</tt> als Datenbank-Besitzer angegeben. Als Zeichensatz <tt>UTF-8</tt> (Default) auswählen.
Die Nutzer und die Datenbank können über [[Hsadmin]] angelegt werden. Dabei wird <tt>xyz00_davical_dba</tt> als Datenbank-Besitzer angegeben. Als Zeichensatz <tt>UTF-8</tt> (Default) auswählen.


Zeile 114: Zeile 114:
</nowiki></pre>
</nowiki></pre>


===== PL/pgSQL installieren =====
==== PL/pgSQL installieren ====


In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese kann folgendermaßen angelegt werden:
In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese kann folgendermaßen angelegt werden:
Zeile 122: Zeile 122:
</nowiki></pre>
</nowiki></pre>


==== Datenbank-Tabellen anlegen und initialisieren ====
=== Datenbank-Tabellen anlegen und initialisieren ===


DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter <tt>davical/dba/create-database.sh</tt>. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.
DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter <tt>davical/dba/create-database.sh</tt>. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.
Zeile 149: Zeile 149:
</nowiki></pre>
</nowiki></pre>


==== Konfiguration ====
=== Konfiguration ===


DAViCal kann über eine <tt>config.php</tt> konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] zu finden.
DAViCal kann über eine <tt>config.php</tt> konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im [http://wiki.davical.org/w/Configuration DAViCal-Wiki] zu finden.
Zeile 169: Zeile 169:
</nowiki></pre>
</nowiki></pre>


==== Fast-CGI Patch ====
=== Fast-CGI Patch ===


Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.
Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden [http://wiki.davical.org/w/FastCGI FAQ-Eintrag] behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.
Zeile 206: Zeile 206:


[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]
[[Bild:DAViCAl-home.png‎|miniatur|400px|right|Screenshot DAViCal Einloggen]]
==== Webspace aktivieren ====
=== Webspace aktivieren ===


Schließlich muß die Installation noch mit dem Webspace verknüpft werden.
Schließlich muß die Installation noch mit dem Webspace verknüpft werden.
Zeile 217: Zeile 217:
Wenn alles richtig gemacht wurde, erscheint der Login-Screen.
Wenn alles richtig gemacht wurde, erscheint der Login-Screen.


=== Nutzung ===
== Nutzung ==


==== User anlegen und konfigurieren ====
=== User anlegen und konfigurieren ===


Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.
Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.
Zeile 261: Zeile 261:
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)
Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)


==== Zugriff über Client-Programme ====
=== Zugriff über Client-Programme ===


TODO: Beispiel Thunderbird
TODO: Beispiel Thunderbird


=== URL Rewriting für kürzere URL's ===
== URL Rewriting für kürzere URL's ==


TODO: .htaccess Beispiel
TODO: .htaccess Beispiel

Version vom 17. April 2011, 11:24 Uhr

Allgemein

Beschreibung

DAViCal ist ein Server für die Verwaltung von Kalendern über das CalDAV-Protokoll. Die Kalenderdaten können mit allen CalDAV-fähigen CLient-Programmen gelesen und geschrieben werden, z.B. Thunderbird mit Lightning, Evolution, Mulberry oder iCal / iPhone.

Das CalDAV-Protokoll wird im Wesentlichen breiter unterstützt, als es die Clients bisher unterstützen. Serien, Erinnerungen, Einladungen, Ressourcen, Arbeitsgruppen etc. sind alle Bestandteil der Features.

Die Software ist in PHP geschrieben, lizensiert unter GPL.

Es werden auch Kalender über das WebDAV-Protokoll untersützt, hier wird aber eine Nur-Lesemodus empfohlen.

Voraussetzungen

DAViCal setzt technisch voraus:

  • PostgreSQL
  • Webserver mit PHP5
  • Perl für den Installationsvorgang

Die Installations-Anleitung auf der Projekt-Homepage geht davon aus, daß mal als Administrator auf den Server zugreifen kann. Die Anleitung hier beschreibt, wie man konkret DAViCal in der Shared Hosting Umgebung bei Hostsharing installiert und betreibt.

Installation

Design

Diese Installationsanleitung beschreibt, wie DAViCal in einer eigens dafür aufgeschalteten Subdomain über SSL betrieben wird. Für andere Konfigurationen, wie z.B. Installation in einer Subdomain im sub-Verzeichnis müssen kleine Anpassungen vorgenommen werden.

Der Vorteil einer Installation in einer aufgeschalteten Subdomain ist, daß die Installation leicht von den übrigen Domaininhalten isoliert werden kann, z.B. php-Konfiguration oder auch anderen Domain-Admin.

Subdomain aufschalten

Wie in Verwalten_der_Zonendaten beschrieben das Zonefile der Domain anpassen um die Subdomain explizit den DNS-Servern zu delegieren und dann über Hsadmin die Subdomain anzulegen und einem Domain-Admin zuzuordnen.

Für diese Anleitung werden folgende Daten als Konvention angenommen

Typ Wert Beschreibung
(Sub)-Domain cal.example.org Die Sub-Domain unter der der DAViCal-Server betrieben wird
Domain-Admin xyz00-hans Der User, dem die Sub-Domain delegiert wurde


Quellen

Für DAViCal werden neben dem eigentlichen Sourcecode des Projekts noch die PHP-Library Andrew's Web Libraries benötigt. Beides findet sich auf derselben Webseite.

Die jeweils neuste Versionen befinden sich unter

Hier jeweils die Source-Dateien *.tar.gz benutzen

Download

$ cd /home/doms/cal.example.org/var
$ wget http://debian.mcmillan.net.nz/packages/awl/awl-0.46.tar.gz
$ wget http://debian.mcmillan.net.nz/packages/davical/davical-0.9.9.4.tar.gz

Auspacken

Um die Dateien für den Betrieb in der Serverumgebung lesbar zu machen wird die Dateierzeungsmaske temporär auf 022 gesetzt.

Symbolische Links erzeugen generische Verzeichnise davical und awl, die auf die jeweils installierte Version zeigen. Dies erleichtert spätere Versionswechsel.

$ umask 022
$ tar xfvz awl-0.46.tar.gz
$ tar xfvz davical-0.9.9.4.tar.gz
$ ln -s awl-0.46 awl
$ ln -s davical-0.9.9.4 davical
$ umask 077

PostgreSQL vorbereiten

Es wird eine eigene PostgreSQL-Datenbank benötigt, sowie 2 Datenbanknutzer.

Datenbank und -Nutzer anlegen

Typ Wert Beschreibung
DB-Admin xyz00_davical_dba Der PostgreSQL-Nutzer, dem die Datenbank gehört und administrative Tätigkeiten durchführt
DB-Nutzer xyz00_davical_app Der PostgreSQL-Nutzer, der über DAViCal auf die Datenbank lesen/schreibend zugreift
Datenbank xyz00_davical Die Datenbank, die alle Daten für den DAViCal-Server enthält

Umgebungsvariablen und .pgpass

Die Nutzer und die Datenbank können über Hsadmin angelegt werden. Dabei wird xyz00_davical_dba als Datenbank-Besitzer angegeben. Als Zeichensatz UTF-8 (Default) auswählen.

Sowohl für die weitere Installation, als auch für den Betrieb des Servers ist es am besten die Passwörter in die .pgpass-Datei zu schreiben, dann müssen sie nicht innerhalb der PHP-Dateien angebenen werden, bzw. während der Installation manuell eingegeben werden.

$ echo "localhost:5432:*:xyz00_davical_dba:geheimes_passwort" >> ~/.pgpass
$ echo "localhost:5432:*:xyz00_davical_app:geheimes_passwort" >> ~/.pgpass
$ chmod 0600 ~/.pgpass

Darüberhinaus werden noch Umgebungsvariablen gesetzt, so daß beim Aufruf von psql über die Kommandozeile Datenbankname/Nutzer nicht eingegeben werden müssen. Diese Angaben sind nach Beenden der Shell-Sitzung automatisch zurückgesetzt.


$ PGHOST=localhost 
$ PGUSER=xyz00_davical_dba
$ PGDATABASE=xyz00_davical 
$ export PGHOST PGUSER PGDATABASE 

PL/pgSQL installieren

In der Datenbank wird die prozedurale Sprache PL/pgSQL benötigt. Diese kann folgendermaßen angelegt werden:

$ psql -A -c "CREATE LANGUAGE plpgsql;"

Datenbank-Tabellen anlegen und initialisieren

DAViCal enthält ein eigenes Installations-Skript, das die PostgreSQL-Tabellen anlegt und initialisiert. Dies liegt unter davical/dba/create-database.sh. Hier wird aber davon ausgegegangen, daß man Adminrechte hat, was in der Shared-Hosting-Umgebung nicht der Fall ist.

Das Anlegen der Datenbank, der -Nuter und kreieren von PL/pgSQL wurde bereits oben beschrieben. Darüberhinaus sind noch folgende Befehle auszuführen. Diese können in dieser Form einfach nacheinander ausgeführt werden, wenn wie oben beschrieben die PG* Umgebungsvariablen gesetzt wurden und die .pgpass-Datei gefüllt wurde.

$ psql -A -f awl/dba/awl-tables.sql
$ psql -A -f awl/dba/schema-management.sql
$ psql -A -f davical/dba/davical.sql
$ ./davical/dba/update-davical-database –dbhost=${PGHOST} –dbuser=${PGUSER} –dbname=${PGDATABASE} --appuser=${PGDATABASE}_app
The database is version 8.4 currently at revision 1.2.9. 
No patches were applied. 
Supported locales updated. 
Updated view: dav_principal.sql applied. 
CalDAV functions updated. 
RRULE functions updated. 
Database permissions updated. 
$ psql -A -f davical/dba/base-data.sql

Für den DAViCal-Admin muß noch ein Passwort gesetzt werden – '**' vor dem Passwort ist hier wichtig.

$ psql -A -c "UPDATE usr SET password = '**geheim' WHERE user_no = 1;"

Konfiguration

DAViCal kann über eine config.php konfigriert werden. Eine Beispiel-Datei ist unten abgebildet. Details sind im DAViCal-Wiki zu finden.

$ cat > davical/config/config.php
   $c->pg_connect[] = "dbname=xyz00_davical user=xyz00_davical_app host=localhost"; 
   $c->use_persistent = true; 
   $c->sysabbr     = 'cal@example.org'; 
   $c->admin_email = 'admin@cal.example.org'; 
   $c->system_name = 'CalDAV Server example.org'; 
   $c->default_locale = 'de_DE'; 
   $c->template_usr = array( 'active' => true, 
                             'locale' => 'de_DE', 
                             'date_format_type' => 'E', 
                             'email_ok' => date('Y-m-d') 
                           ); 
^D

Fast-CGI Patch

Bei der Benutzung von Fast-CGI werden die HTTP_AUTHORIZATION Header normalerweise nicht weitergeleitet. Dieses Problem wird auch im DAViCal-Wiki in einem entsprechenden FAQ-Eintrag behandelt, aber dort unter der Annahme gelöst, daß man Adminrechte hat.

In der Shared-Hosting-Umgebung von Hostsharing kann dies auch über ein Redirect in der .htaccess-Datei gemacht gelöst werden:

$ cd /home/doms/cal.example.org/htdocs-ssl
$ cat >> .htaccess
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
^D

Diese Regel muß die letzte in der .htaccess sein. Die Datei muß für alle lesbar sein:

$ chmod 0644 .htaccess


Darüberhinaus muß noch die Datei davical/inc/HTTPAuthSession.php angepasst werden. Hier ist die Variable $_SERVER["AUTHORIZATION"] ersetzt werden durch $_SERVER["REDIRECT_HTTP_AUTHORIZATION"]. Außerdem gibt es noch einen Bug: Es wird an einer Stelle split() statt explode benutzt. split() ist seit PHP 5.3.0 deprecated.

@@ -87,8 +87,8 @@
     /**
     * Get HTTP Auth to work with PHP+FastCGI
     */
-    if (isset($_SERVER["AUTHORIZATION"]) && !empty($_SERVER["AUTHORIZATION"])) {
-      list ($type, $cred) = split (" ", $_SERVER['AUTHORIZATION']);
+    if (isset($_SERVER["REDIRECT_HTTP_AUTHORIZATION"]) && !empty($_SERVER["REDIRECT_HTTP_AUTHORIZATION"])) {
+      list ($type, $cred) = explode (" ", $_SERVER['REDIRECT_HTTP_AUTHORIZATION']);
       if ($type == 'Basic') {
         list ($user, $pass) = explode (":", base64_decode($cred));
         $_SERVER['PHP_AUTH_USER'] = $user;                                                                                                    }


Screenshot DAViCal Einloggen

Webspace aktivieren

Schließlich muß die Installation noch mit dem Webspace verknüpft werden.

$ cd /home/doms/cal.example.org
$ rm htdocs-ssl
$ ln -s var/davical/htdocs htdocs-ssl

Wenn alles richtig gemacht wurde, erscheint der Login-Screen.

Nutzung

User anlegen und konfigurieren

Im User-Interface muß man sich als Admin (oder Nutzer mit Adminrechten) einloggen um neue Nutzer anzulegen.

Um einen neuen Nutzer anzulegen: MenuUser FunctionsCreate Principal

Feld Wert Beschreibung
Principal ID New Principal Bei neuen Nutzern wird das Feld automatisch beim Anlegen gefüllt
Username hans Nutzername für den Kalender. Der Username ist Bestandteil der Kalender-URL
Change Password geheimespasswort
Confirm Password geheimespasswort
Fullname Hans Meier Der Name des Nutzers
Email Address hans@example.org Über die Email-Adresse ist der Nutzer für andere Nutzer im System zu finden, z.B. für Einladungen
Locale Deutsch
Date Format Style European
Principal Type Person Üblicherweise Person für einen natürlichen Nutzer (hier können auch Ressourcen und Gruppen angelegt werden)
Administrator Falls der User Adminrechte bekommen soll
Active X Soll der Nutzer aktiv geführt werden?

Beim Anlegen des ersten Nutzers erscheint eine Fehlermeldung:

ERROR: SQL error "23505" - ERROR: duplicate key value violates unique constraint "principal_pkey"" 
Home calendar added. 

Dies ist ein Bug. Siehe auch Thread in Dev-Mailingliste.

Zum Umgehen des Bugs einfach den Nutzer nochmal anlegen und dann funktioniert alles ;-)

Zugriff über Client-Programme

TODO: Beispiel Thunderbird

URL Rewriting für kürzere URL's

TODO: .htaccess Beispiel