Cách triển khai WebDAV trên Debian 10 bằng WsgiDAV

1. WebDAV là gì?

Web Authoring Authoring and Versioning (WebDAV) là một tiện ích mở rộng HTTP cung cấp khung để tạo và sửa đổi các tệp từ xa trên máy chủ. WsgiDAV là một máy chủ WebDAV được viết bằng python.

2. Cách cài đặt

cập nhật hệ thống và nhận chứng chỉ SSL miễn phí từ Let Encrypt

sudo apt update
sudo apt upgrade -y
sudo apt install -y certbotad

Trong lệnh bên dưới, thay thế dav.example.com và email@domain.tld bằng tên miền và địa chỉ email của bạn tương ứng trước khi thực hiện nó:

sudo certbot certonly –standalone –agree-tos -m email@domain.tld -d dav.example.com

Máy chủ của bạn sẽ được gửi một thách thức để xác minh rằng bạn kiểm soát tên miền được chỉ định. Nếu thành công, chứng chỉ sẽ được cấp và lưu, cùng với các tệp khác như khóa riêng, bên dưới

/etc/letsencrypt/live/dav.example.com/.

* Cài đặt WsgiDAV:

Đầu tiên, cài đặt trình quản lý gói python pip:

sudo apt update
sudo apt install -y python3-pip

WsgiDAV yêu cầu máy chủ HTTP hỗ trợ WSGI.

sudo pip3 install wsgidav cheroot lxml python-pam

* Cấu hình WsgiDAV:

Tệp thực thi WsgiDAV được lưu trữ /usr/local/bin. Tải xuống tệp cấu hình mẫu với các lệnh sau:

sudo mkdir -p /usr/local/etc
sudo wget https://github.com/mar10/wsgidav/raw/master/sample_wsgidav.yaml -O /usr/local/etc/wsgidav.yaml

Mở nó với trình soạn thảo của bạn:

sudo $EDITOR /usr/local/etc/wsgidav.yaml

Tìm các dòng sau trong phần “Hỗ trợ SSL”:

# ssl_certificate: “wsgidav/server/sample_bogo_server.crt”
# ssl_private_key: “wsgidav/server/sample_bogo_server.key”
# ssl_certificate_chain: null

Thay thế chúng bằng cách sau:

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”

Tiếp theo, chúng tôi sẽ định cấu hình đường dẫn chia sẻ bằng cách ánh xạ đường dẫn HTTP (chẳng hạn /) đến các vị trí tương ứng trên hệ thống tệp (chẳng hạn như /var/www/dir1). Đối với mục đích trình diễn, chúng tôi sẽ chia sẻ hai thư mục, một trong số đó sẽ chỉ đọc. Tìm provider_mappingkhối trong phần “CHIA SẺ”:

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}

Thay thế nó:

provider_mapping:
“/”:
root: “/var/www/html/documents”
readonly: false
“/reports”:
root: “/var/www/html/reports”
readonly: true

Để xác thực, chúng tôi sẽ sử dụng trình điều khiển PAM. Trong phần “AUTHENTICATION”, tìm các dòng sau:

accept_basic: true
accept_digest: true
default_to_digest: true
domain_controller: null

Thay thế chúng bằng cách sau:

accept_basic: true
accept_digest: false
default_to_digest: false
domain_controller: wsgidav.dc.pam_dc.PAMDomainController

Bây giờ bạn có thể kiểm tra máy chủ của mình:

sudo wsgidav -c /usr/local/etc/wsgidav.yaml

Mở https://dav.example.com:8080/ trong trình duyệt web của bạn. Vì chúng tôi đã định cấu hình xác thực PAM, bạn sẽ cần phải đăng nhập bằng tài khoản người dùng Linux của mình. Sử dụng CTRL+ C để dừng máy chủ trước khi tiếp tục.

Để chạy máy chủ WebDAV của bạn dưới dạng dịch vụ hệ thống được quản lý bởi systemd, hãy tạo một tệp đơn vị:

sudo $EDITOR /etc/systemd/system/wsgidav.service

Nhập theo chỉ dẫn:

[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

Sau đó tạo tệp cấu hình cho dịch vụ ghi nhật ký hệ thống:

sudo $EDITOR /etc/rsyslog.d/wsgidav_service.conf

Điền vào tệp với các mục sau:

if $programname == ‘wsgidav_service’ then /var/log/wsgidav.log
& stop

Lưu và thoát, sau đó sử dụng các lệnh bên dưới để tạo tệp nhật ký:

sudo touch /var/log/wsgidav.log
sudo chown root:adm /var/log/wsgidav.log

Cuối cùng, tải tệp đơn vị systemd mới và khởi động lại dịch vụ ghi nhật ký trước khi bắt đầu WsgiDAV:

sudo systemctl daemon-reload
sudo systemctl restart rsyslog.service
sudo systemctl start wsgidav.service

Bây giờ bạn có thể sử dụng systemctl để bắt đầu, dừng và khởi động lại máy chủ WebDAV của mình. Nếu bạn muốn máy chủ WebDAV tự động khởi động khi khởi động hệ thống, hãy thực hiện:

sudo systemctl enable wsgidav.service

Leave a Reply

Your email address will not be published. Required fields are marked *