[Support] zentral gepflegter Kalender-Server

Michael Hierweck michael.hierweck at hostsharing.net
Mi Feb 7 23:02:43 CET 2018


Hallo zusammen,

On 06.02.2018 13:31, Peter Hormanns wrote:
> Hallo Martin,
> 
> Am 06.02.2018 um 01:28 schrieb Dr. Martin Weigele:
>>
>> Jedoch findet sich in unserem Wiki die Anleitung zur Einrichtung eines Python-
>> basierten RadicaleCalDAVservers, 
>>
>> 	https://wiki.hostsharing.net/index.php?title=RadicaleCalDAVServer
>>
>> Mittels pip -U kann später auch ein upgrade der Software durch einfachen 
>> Aufruf durchgeführt werden. Die im Vergleich zu php-basierten Systemen eher 
>> selten erforderlichen Sicherheitsupdates für das zugrundeliegende Python 
>> System sowie für das Betriebssystem werden vom Hostsharing Team ständig im 
>> Rahmen der Pflege unserer Server ( = Managed Hosting) routinemäßig ebenso wie 
>> Backups durchgeführt.
>>
> 
> Ich habe es gerade in die Wiki-Seite geschrieben:
> 
> Die Anleitung funktioniert nur für Radicale 1.x
> 
> Die Version 2.x braucht Python 3. Ich habe die Installation mit pip3
> nicht auf Anhieb hinbekommen. Das muss sich mal jemand ansehen, der sich
> im Python-Universum auskennt.

Ich habe Radicale 2.x komplett analog zu Radicale 1.x installiert,
allerdings nicht nach der Anleitung im Wiki, sondern (wie allgemein
empfohlen) mit virtualenv. Virtualenv managed Python-Packages im Userland.

Anleitung:

mkdir -p radicale/etc
mkdir -p radicale/var
mkdir -p radicale/log

chmod 700 radicale

virtualenv -p python3 radicale/virtualenv

radicale/virtualenv/pip install radicale
radicale/virtualenv/pip install --upgrade passlib bcrypt

echo <<EOF >doms/example.com/.htaccess
PassengerPython $HOME/radicale/virtualenv/bin/python
EOF

echo <<EOF >doms/example.com/app-ssl/passenger_wsgi.py
import os
from radicale import Application, config, log

config_paths = ["$HOME/radicale/etc/config"]
configuration = config.load(config_paths, ignore_missing_paths=False)
filename = os.path.expanduser(configuration.get("logging", "config"))
debug = configuration.getboolean("logging", "debug")
logger = log.start("radicale", filename, debug)
EOF
application = Application(configuration, logger)

mkdir doms/example.com/app-ssl/tmp
touch doms/example.com/app-ssl/tmp/restart.txt


Dann legt man in $HOME/radicale/etc/ Konfiguarationsdateien gemäß
Upstream-Anleitung an:

config:

[server]

[encoding]
request = utf-8
stock = utf-8

[auth]
type = htpasswd
htpasswd_filename = /home/........../radicale/etc/users

[rights]
type = from_file
file = /home/................./radicale/etc/rights

[storage]
type = multifilesystem
filesystem_folder = /home/.............../radicale/var/

[logging]
config = /home/............./radicale/etc/logging
debug = False
full_environment = False


users:
	(htpassword-Format mit -B für bcrypt)

rights:

[all]
user: .+
collection: .*
permission: rw

logging:

[loggers]
keys = root

[handlers]
keys = file

[formatters]
keys = full

[logger_root]
level = INFO
handlers = file

[handler_file]
class = FileHandler
args = ('/home/...................../radicale/log/radicale.log',)
formatter = full

[formatter_full]
format = %(asctime)s - %(levelname)s: %(message)s



Muster für die Konfigurationsdateien, aber auch für das Startup-File,
gibt es "upstream":

https://github.com/Kozea/Radicale/tree/2.0.x


Ich möchte dieses Installationsschema grundsätzlich für
Python-Anwendungen empfehlen:

- Installationshauptordner
- virtualenv
- aus Passenger dort hinein verweisen


Man *kann* das auch anders machen, aber der vorgestellte Weg hat sich
für zahlreiche Anwendungen bewährt. Virtualenv ermöglicht u.a.
Installationen zu trennen, zu sichern und Pakete in von Hostsharing
abweichenden Versionen zu installieren.

Beste Grüße

Michael



Mehr Informationen über die Mailingliste Support

Hostsharing einen Monat lang kostenlos und unverbindlich testen

Nutzen Sie unser kostenloses Test- und Beratungsangebot.
Nehmen Sie jetzt Kontakt auf und lernen Sie den Hostsharing-Service kennen.

Jetzt Testsystem bestellen Mehr erfahren