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