zoukankan      html  css  js  c++  java
  • 利用Nginx WebDAV搭建自己的网盘

    利用Nginx WebDAV搭建自己的网盘

    需要准备的东西

    硬件:

    Linux服务器

    软件:

    名称 简介 下载地址
    nginx源码 服务端需要自己编译代码 https://nginx.org/en/download.html
    nginx扩展dav模块 nginx自身的dav功能不足以用来做webdav,需要用这个模块扩展 https://github.com/arut/nginx-dav-ext-module.git
    raidrive windows客户端 https://www.raidrive.com/download

    编译nginx

    获取上次编译的参数

    如果系统已经通过apt或者yum等工具安装过了nginx,可以通过 nginx -V 指令提取上次编译的参数
    里面如果有涉及到目录路径的项需要根据情况编辑

    安装用到的库

    
    apt install -y gcc make libpcre3-dev libssl-dev zlib1g-dev libxml2 libxml2-dev libxslt-dev libgd-dev libgeoip-dev
    
    

    配置与编译

    在配置参数最后加上--add-module=./nginx-dav-ext-module 后面的路径根据情况修改.

    ./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --add-module=./nginx-dav-ext-module
    
    make -j8
    

    安装

    如果是初次安装nginx

    可以直接用下面的命令把编译出来的结果安装到系统

    make install
    

    如果是要替换已经存在的nginx

    把编译出来的文件复制过去替换即可:

    cp objs/nginx /usr/sbin/nginx
    cp objs/*.so //usr/share/nginx/modules/
    

    配置webdav

    创建目录

    请根据实际使用情况修改目录:

    mkdir /mnt/d/webdav
    cd !:1
    mkdir mydrive
    

    安装密码配置工具并配置密码

    注意,这里的user和password请设置一下用户名和密码,后面连接要用

    apt install -y apache2-utils 
    # 生成密码文件:
    htpasswd -cb ./drive1htpasswd user password
    

    最终目录结构:

    配置nginx:

    编辑这个文件:

    vim /etc/nginx/sites-available/drive1
    

    内容:

    server {
            #for https
        #listen  443 ssl;
        #server_name xxx.com;
        #ssl_certificate ./fullchain10.pem;
        #ssl_certificate_key ./privkey10.pem;
        #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            #for http
            listen 113;
    
        charset utf-8,gbk;
        location / {
            set $dest $http_destination;
            if (-d $request_filename) {
                rewrite ^(.*[^/])$ $1/;
                set $dest $dest/;
            }
            #if ($request_method ~ (MOVE|COPY)) {
            #    more_set_input_headers 'Destination: $dest';
            #}
    
            if ($request_method ~ MKCOL) {
                            rewrite ^(.*[^/])$ $1/ break;
            }
            root /mnt/d/webdav/drive1;
            # alias /data/dav;
            autoindex on;
            dav_methods PUT DELETE MKCOL COPY MOVE;
            dav_ext_methods PROPFIND OPTIONS;
            create_full_put_path on;
            client_max_body_size 0M;
            dav_access user:rw group:rw all:rw;
            auth_basic "Authorized Users Only";
            auth_basic_user_file /mnt/d/webdav/drive1htpasswd;
        }
    }
    

    然后创建个文件链接到enabled目录:

    ln -s /etc/nginx/sites-available/drive1 /etc/nginx/sites-enabled/
    

    重启nginx:

    systemctl restart nginx
    

    如果没有报错就是成功了

    Windows客户端连接


    填写这些:

    注意address后面的勾,用于选择http协议或者https协议
    apply -> ok

    如果这里显示三角形,点一下,就会连接,然后显示正方形表示成功.

    Linux客户端连接

    安装

    apt install -y davfs2
    echo "use_locks       0" >> /etc/davfs2/davfs2.conf
    

    手工挂载试试:

    mkdir /mnt/drive1
    mount -t davfs https://xx.com/dav/ /mnt/drive1
    

    设为开机自动挂载

    网上很多文章都推荐添加到fstab,不过不建议那么干,那玩意不稳定,很容易出问题,导致开机无法进系统,这里推荐用systemd管理挂载
    复制这段脚本,参数分别修改一下,在shell执行,就可以配置好自动挂载

    # -----编辑这些参数:
    export url=https://xx.com/dav/
    export mntpath=/mnt/drive1/
    export mntscript=mnt-drive1
    # 修改时注意上面两行目录名称的关联,如果不一致会挂载失败
    export user=user
    export password=password
    # -----
    # 下面指令自动生成挂载文件,别改
    echo ""$url" "$user" "$password"" >> /etc/davfs2/secrets
    export mountfile=/etc/systemd/system/$mntscript.mount
    export automountfile=/etc/systemd/system/$mntscript.automount
    echo "[Unit]
    Description = Mount webdav disk
    Wants=network.target
    After=network.target
    [Mount]
    What = $url
    Where = $mntpath
    Type = davfs
    Options = defaults
    [Install]
    WantedBy = multi-user.target">$mountfile
    
    echo "[Automount]
    Where = $mntpath
    [Install]
    WantedBy = multi-user.target">$automountfile
    systemctl enable ${mntscript}.automount
    systemctl start ${mntscript}.automount
    
  • 相关阅读:
    UVA 1001 Say Cheese
    UVa 821 Page Hopping
    UVA 1569 Multiple
    UVA 1395 Slim Span
    UVA 12219 Common Subexpression Elimination
    UVA 246 10-20-30
    Mysql基本操作
    浅析关键字static
    面试回答技巧
    五个程序员好习惯
  • 原文地址:https://www.cnblogs.com/DragonStart/p/13410090.html
Copyright © 2011-2022 走看看