为了防止我在复刻的时候失忆,特此记录。
系统为Ubuntu22.04,要用到php。主要通过webDAV编辑文件,h5ai只是为了好看。用nginx是因为vps配置有点拉。
必须项目搞一下
sudo apt update && sudo apt upgrade -y
sudo apt install nginx nginx-extras php-fpm php-cli php-curl php-xml php-mbstring curl git -y
文件夹搞好
sudo mkdir -p /var/www/webdav
sudo chown -R www-data:www-data /var/www/webdav
sudo chmod -R 755 /var/www/webdav
h5ai下载
sudo apt install unzip -y
cd /var/www/webdav
sudo curl -L https://github.com/lrsjng/h5ai/releases/download/v0.30.0/h5ai-0.30.0.zip -o h5ai.zip
unzip h5ai.zip
sudo rm h5ai.zip
弄个密码,安全点
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/webdav_passwd 用户名
有域名就申请下证书
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d 域名.com
sudo certbot renew --dry-run
h5ai莫得上传或者删除,所以要搞个webdav服务。
写配置文件/etc/nginx/sites-available/webdav
server {
listen 80;
server_name 域名.com;
return 301 https://$host$request_uri; # Redirect HTTP to HTTPS
}
server {
listen 443 ssl;
server_name 域名.com;
ssl on;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_certificate /etc/letsencrypt/live/域名.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/域名.com/privkey.pem;
root /var/www/webdav;
index /_h5ai/public/index.php;
try_files $uri $uri/ =404;
location / {
root /var/www/webdav/;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
dav_access user:rw group:rw all:r;
auth_basic "WebDAV";
auth_basic_user_file /etc/nginx/webdav_passwd;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
location /_h5ai/ {
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location ~ /(private|config|lib|templates|3rdparty|tests|data)/ {
deny all;
}
}
error_log /var/log/nginx/webdav_error.log;
access_log /var/log/nginx/webdav_access.log;
}
尝试运行
sudo ln -s /etc/nginx/sites-available/webdav /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
理论上这样应该能运行,因为过程比较曲折我也记不清了。连接webdav就用域名+用户名+密码。
我还搞了个aria2,远程下点东西来。大佬的脚本:
wget -N git.io/aria2.sh && chmod +x aria2.sh
./aria2.sh
防止出什么权限问题搞个脚本/usr/local/bin/fix_permissions.sh
#!/bin/bash
chown -R www-data:www-data /var/www/webdav
chmod -R 755 /var/www/webdav
给个权限
sudo chmod +x /usr/local/bin/fix_permissions.sh
修改/etc/aria2.conf
on-download-complete=/usr/local/bin/fix_permissions.sh
然后用脚本重启下就好了
感谢GPT兄和网上的各路大佬提供参考。