赞
踩
因为需要跟 zotero 进行交互,因此需要在服务器搭建一个webDav
以下是搭建步骤:
- sudo apt-get update
- sudo apt-get install apache2
Ubuntu 安装apache2来实现
不同于Centos
安装好了之后,运行
- a2enmod dav_fs
- a2enmod dav
激活模块。
进入到 /etc/apache2 目录下。修改port,使得它不跟nginx起冲突
Listen 后面加上自己要自定义的接口
然后我们就要生成密码了:
htpasswd -c /etc/apache2/webdav.password 你的用户名
输入密码。
然后进入到 /etc/apache2/sites-available 目录下。
可以选择新建一个conf文件,也可以选择修改原来的 000-default.conf
- <VirtualHost *:7080>
- ServerAdmin webmaster@localhost
- DocumentRoot /home/imp/edc_demo/webdav
- ErrorLog ${APACHE_LOG_DIR}/error.log
- CustomLog ${APACHE_LOG_DIR}/access.log combined
-
- DavLockDB "/var/DavLock"
- <Directory /home/imp/edc_demo/webdav/>
- DAV On
- Options Indexes MultiViews
- AllowOverride None
- Order allow,deny
- allow from all
- </Directory>
-
- Alias /webdav /home/imp/edc_demo/webdav
- <Location /webdav>
- DAV On
- AuthType Basic
- AuthName "agile"
- AuthUserFile /var/passwd.dav
- Require valid-user
- </Location>
-
- </VirtualHost>

解释一下上面的几个参数哈。
<VirtualHost *:7080>
:代表监听的端口,也是之后要在浏览器输入的端口,这个端口和刚刚ports.conf里配的是同一个
ServerAdmin webmaster@localhost
:设置管理员邮箱地址。
DocumentRoot /home/imp/edc_demo/webdav
:指定网站的根目录。
ErrorLog ${APACHE_LOG_DIR}/error.log
:指定错误日志文件的位置。
CustomLog ${APACHE_LOG_DIR}/access.log combined
:设置访问日志的位置和格式。
DavLockDB "/var/DavLock"
:指定 WebDAV 的锁定数据库文件位置。
<Directory /home/imp/edc_demo/webdav/>
:配置 /home/imp/edc_demo/webdav
目录的访问权限。
DAV On
:启用 WebDAV 功能。
Options Indexes MultiViews
:允许目录浏览和多视图。
AllowOverride None
:禁止使用 .htaccess
文件覆盖配置。
Order allow,deny
和 allow from all
:控制访问权限,允许所有客户端访问此目录。
Alias /webdav /home/imp/edc_demo/webdav
:创建别名 /webdav
,指向 /home/imp/edc_demo/webdav
目录。
<Location /webdav>
:针对 /webdav
路径的配置。
DAV On
:启用 WebDAV 功能。
AuthType Basic
:启用基本身份验证。
AuthName "agile"
:设置认证提示信息。
AuthUserFile /var/passwd.dav
:指定用户名和密码的文件。
Require valid-user
:要求用户进行验证后才能访问 /webdav
目录。
有点多,没事,我概括一下
把
AuthName "agile"
AuthUserFile /etc/apache2/webdav.password
改成 自己的用户名,把刚才生成的password文件的位置放进来。
把
Alias /webdav /home/imp/edc_demo/webdav
后面改成你要暴露的linux 文件路径地址。
sudo systemctl restart apache2
6、验证一下
打开浏览器输入 http://ip:host/webdav/
输入用户名密码
我写了一个脚本。这个脚本可以在你搭建好这套之后,通过传入用户名、密码,自动创建一个账号,并且在 目录下 建一个 和用户同名的 文件夹
它分成2个部分
add_user.exp
- #!/usr/bin/expect
- set user [lindex $argv 0]
- set password [lindex $argv 1]
-
- spawn sudo htpasswd -c /etc/apache2/webdav.password $user
-
- expect "New password:"
- send "$password\r"
- expect "Re-type new password:"
- send "$password\r"
- interact
add_user.sh
- #!/bin/bash
-
- user=$1
- password=$2
-
- # 创建文件夹
- echo "创建文件夹 /home/imp/edc_demo/webdav/$user"
- mkdir -p "/home/imp/edc_demo/webdav/$user"
-
- # 添加用户
- echo "添加 $user 对应的webdav配置"
- expect ./add_user.exp "$user" "$password"
-
- # 更新配置文件
- file="/etc/apache2/sites-available/000-default.conf"
- if grep -q "Location /webdav/$user\b" "$file"; then
- echo "Location already exists in $file"
- else
- sed -i "/<\/VirtualHost>/ i\\
- \\
- \t<Location /webdav/$user>\\
- \t\tDAV On\\
- \t\tAuthType Basic\\
- \t\tAuthName \"$user\"\\
- \t\tAuthUserFile /etc/apache2/webdav.password\\
- \t\tRequire valid-user\\
- \t</Location>\\
- " "$file"
-
- systemctl restart apache2
- fi
-
- echo "添加用户成功!!!!"

使用的话,就是
./add_user.sh 用户名 密码
执行完这套之后,可以在浏览器里访问
http://ip:port/webdav/用户名,访问到这个用户才能访问到的文件夹。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。