Einführung
Web Distributed Authoring und Versionierung (WebDAV) ist eine HTTP-Erweiterung, die ein Framework zum Remote-Erstellen und Ändern von Dateien auf einem Server bietet. WsgiDAV ist ein in Python geschriebener WebDAV-Server. Dieses Handbuch hilft Ihnen bei der Installation von WsgiDAV Version 3.0 auf einem Vultr-Server unter Debian 10. Wir erhalten auch ein SSL-Zertifikat, um eine sichere Verbindung sowie eine PAM-Authentifizierung bereitzustellen.
Voraussetzungen
- Ein Debian 10-System, auf das Sie privilegierten Zugriff haben (über den Root-Benutzer oder einen beliebigen Sudo-Benutzer).
- Die
$EDITORUmgebungsvariable muss auf einen Texteditor Ihrer Wahl eingestellt sein.
- Ein registrierter Domainname ist erforderlich. Die Nameserver müssen mit einem
ADatensatz konfiguriert sein , der auf die IPv4-Adresse Ihres Servers verweist, und optional mit einem AAAADatensatz, der auf die IPv6-Adresse verweist.
- Es wird empfohlen, sich mit der YAML-Syntax vertraut zu machen.
Der Platzhalter dav.example.comwird für den Domainnamen Ihres Servers verwendet.
Installation
SSL-Zertifikat
Wir beginnen mit der Aktualisierung des Systems und dem Erhalt eines kostenlosen SSL-Zertifikats von Let's Encrypt . Aktualisieren Sie dazu zuerst Ihr System und installieren Sie das certbotDienstprogramm:
sudo apt update
sudo apt upgrade -y
sudo apt install -y certbot
Ersetzen Sie im folgenden Befehl dav.example.comund [email protected]durch Ihren Domainnamen bzw. Ihre E-Mail-Adresse, bevor Sie ihn ausführen:
sudo certbot certonly --standalone --agree-tos -m [email protected] -d dav.example.com
Ihr Server erhält eine Aufforderung, um zu überprüfen, ob Sie den angegebenen Domänennamen steuern. Wenn dies erfolgreich ist, wird das Zertifikat ausgestellt und zusammen mit anderen Dateien wie dem privaten Schlüssel unter gespeichert /etc/letsencrypt/live/dav.example.com/.
WsgiDAV installieren
Installieren Sie zunächst den Python-Paketmanager pip:
sudo apt update
sudo apt install -y python3-pip
WsgiDAV erfordert einen HTTP-Server, der WSGI unterstützt. Wir werden die Standardoption Cheroot installieren. Wir werden auch die lxml-Python-Bibliothek installieren, die tendenziell eine bessere Leistung aufweist als die standardmäßig installierte XML-Bibliothek. Die Python3-Bibliothek PAM (Pluggable Authentication Module) wird ebenfalls benötigt. Installieren Sie die erforderlichen Pakete mit dem pipTool:
sudo pip3 install wsgidav cheroot lxml python-pam
WsgiDAV konfigurieren
Die ausführbare WsgiDAV-Datei wird in gespeichert /usr/local/bin, daher wird die Konfigurationsdatei im /usr/local/etcVerzeichnis abgelegt . Laden Sie die Beispielkonfigurationsdatei mit den folgenden Befehlen herunter:
sudo mkdir -p /usr/local/etc
sudo wget https://github.com/mar10/wsgidav/raw/master/sample_wsgidav.yaml -O /usr/local/etc/wsgidav.yaml
Öffnen Sie es mit Ihrem Editor:
sudo $EDITOR /usr/local/etc/wsgidav.yaml
Suchen Sie die folgenden Zeilen im Abschnitt "SSL-Unterstützung":
# ssl_certificate: "wsgidav/server/sample_bogo_server.crt"
# ssl_private_key: "wsgidav/server/sample_bogo_server.key"
# ssl_certificate_chain: null
Ersetzen Sie sie durch Folgendes:
ssl_certificate: "/etc/letsencrypt/live/dav.example.com/cert.pem"
ssl_private_key: "/etc/letsencrypt/live/dav.example.com/privkey.pem"
ssl_certificate_chain: "/etc/letsencrypt/live/dav.example.com/chain.pem"
Als Nächstes konfigurieren wir die Freigabepfade, indem wir HTTP-Pfade (z. B. /) entsprechenden Speicherorten im Dateisystem (z. B. /var/www/dir1) zuordnen . Zu Demonstrationszwecken werden wir zwei Verzeichnisse gemeinsam nutzen, von denen eines schreibgeschützt ist. Suchen Sie den provider_mappingBlock im Abschnitt "SHARES":
provider_mapping:
"/": "/path/to/share1"
"/pub":
root: "/path/to/share2"
readonly: true
"/share3":
provider: path.to.CustomDAVProviderClass
args: ["/path/to/share3", "second_arg"]
kwargs: {"another_arg": 42}
Ersetze es:
provider_mapping:
"/":
root: "/var/www/html/documents"
readonly: false
"/reports":
root: "/var/www/html/reports"
readonly: true
Bei diesen Zuordnungen https://dav.example.com:8080/entspricht dies dem /var/www/html/documentsVerzeichnis auf dem Server, während https://dav.example.com:8080/reportses /var/www/html/reportsohne Schreibzugriff zugeordnet wird.
Zur Authentifizierung verwenden wir den PAM-Treiber. Dadurch entfallen separate WebDAV-Benutzerkonten, und Systembenutzer können sich mit ihren üblichen Anmeldeinformationen anmelden.
Suchen Sie im Abschnitt "AUTHENTICATION" die folgenden Zeilen:
accept_basic: true
accept_digest: true
default_to_digest: true
domain_controller: null
Ersetzen Sie sie durch Folgendes:
accept_basic: true
accept_digest: false
default_to_digest: false
domain_controller: wsgidav.dc.pam_dc.PAMDomainController
Sie können jetzt Ihren Server testen:
sudo wsgidav -c /usr/local/etc/wsgidav.yaml
Öffnen Sie https://dav.example.com:8080/in Ihrem Webbrowser. Da wir die PAM-Authentifizierung konfiguriert haben, müssen Sie sich mit Ihrem Linux-Benutzerkonto anmelden. Verwenden Sie CTRL+ C, um den Server zu stoppen, bevor Sie fortfahren.
Installation als Service
Erstellen Sie eine Einheitendatei, um Ihren WebDAV-Server als von systemd verwalteten Systemdienst auszuführen:
sudo $EDITOR /etc/systemd/system/wsgidav.service
Gib Folgendes ein:
[Unit]
Description=WsgiDAV WebDAV server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/wsgidav -c /usr/local/etc/wsgidav.yaml
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=wsgidav_service
[Install]
WantedBy=multi-user.target
Erstellen Sie dann eine Konfigurationsdatei für den Systemprotokollierungsdienst:
sudo $EDITOR /etc/rsyslog.d/wsgidav_service.conf
Füllen Sie die Datei mit Folgendem:
if $programname == 'wsgidav_service' then /var/log/wsgidav.log
& stop
Speichern und beenden Sie den Vorgang und verwenden Sie die folgenden Befehle, um die Protokolldatei zu erstellen:
sudo touch /var/log/wsgidav.log
sudo chown root:adm /var/log/wsgidav.log
Laden Sie abschließend die neue systemd-Einheitendatei und starten Sie den Protokollierungsdienst neu, bevor Sie WsgiDAV starten:
sudo systemctl daemon-reload
sudo systemctl restart rsyslog.service
sudo systemctl start wsgidav.service
Sie können jetzt systemctlIhren WebDAV-Server starten, stoppen und neu starten. Die Standardausgabe und der Standardfehler von WsgiDAV werden protokolliert /var/log/wsgidav.logund können auch über verwendet werden sudo journalctl -u wsgidav.service.
Wenn der WebDAV-Server beim Systemstart automatisch gestartet werden soll, führen Sie Folgendes aus:
sudo systemctl enable wsgidav.service
Weiterführende Literatur