Debian环境安装新版Nginx及配置Webdav
Debian 环境安装新版nginx
及配置webdav
一、Nginx
用源安装最新稳定版
二、源码编译安装最新稳定版:
三、配置webdav
模块
(1)配置webdav
(2)设置webdav
帐号和密码:
(3)挂载到坚果云方法
(4)nginx
加入到systemctl
服务运行
(5)常用命令
四、手机用的连接为webdav软件:
五、一些问题及解决方法
一、Nginx
用源安装最新稳定版
参见文章:Debian 环境安装新版 nginx :
在 Debian
系统中,我们可以通过 apt-get
安装系统自带的 nginx
,这样安装的 nginx
版本略旧。Nginx
官网提供了一些编辑绎好的deb
安装包,我们只需更新安装源,就可以通过 apt-get
来安装最新的稳定版 Nginx
了。
加载安装源并导入key
1
2
3$ echo deb http://nginx.org/packages/debian/ buster nginx | sudo tee /etc/apt/sources.list.d/nginx.list
$ wget http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
$ sudo apt update && apt install nginx -y
到这一部分就完成了最新稳定版的 Nginx
的安装。
需要注意的是,这一步安装的 Nginx 和系统自带的 nginx 的配置目录略有区别,可以用一下几个简单的命令修正:1
2
3
4sudo mkdir /etc/nginx/{sites-available,sites-enabled}
sudo mv /etc/nginx/conf.d/* /etc/nginx/sites-available
sudo rmdir -f /etc/nginx/conf.d/
sudo perl -pi -e 's/conf.d/sites-enabled/g' /etc/nginx/nginx.conf
其他问题:bash: nginx:未找到命令
由于shell命令基本都在/usr/bin
,/usr/sbin
,/bin
,/sbin
,/usr/X11R6/bin
中有定义。
所以,只要把这些命令重新取出来就能使用了,也算是个补救的办法。export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
转载于:修改profile导致bash不能用的补救方法
二、源码编译安装最新稳定版:
nginx1.21.1下载地址:
nginx-dav-ext-module v3.0.0下载地址:
1. 卸载并清理安装的nginx
1 | $ sudo apt autoremove nginx |
2. 下载并编译安装
1 | $ tar zxvf nginx-1.21.0.tar.gz |
三、配置webdav模块
配置webdav
1 | # sudo vim /etc/nginx/conf/nginx.conf |
用以下内容替换原内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
server{
listen 81;
server_name webdav;
error_log /etc/nginx/logs/webdav.error.log error;
access_log /etc/nginx/logs/webdav.access.log combined;
location / {
root /home/你的用户名/www/nginx/webdav;
charset utf-8;
autoindex on;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:r all:r;
auth_basic "Authorized Users Only";
auth_basic_user_file /etc/nginx/.htpasswd;
client_max_body_size 5G;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /etc/nginx/html;
}
}
server {
listen 8080;
error_log /etc/nginx/logs/jianguoyun.error.log error;
access_log /etc/nginx/logs/jianguoyun.access.log combined;
location / {
root /home/你的用户名/www/nginx/jianguoyun;
autoindex on;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:r all:r;
auth_basic "Authorized Users Only";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
设置webdav帐号和密码:
1 | ~# echo -n '你的用户名:' | tee /etc/nginx/.htpasswd |
挂载到坚果云方法
1 | $ sudo apt-get install davfs2 |
改为:ignore_dav_header 1
挂载:1
$ sudo mount -t davfs https://dav.jianguoyun.com/dav/ /home/你的用户名/www/nginx/jianguoyun
取消挂载:1
$ sudo fusermount -u /home/你的用户名/www/nginx/jianguoyun
nginx
加入到systemctl
服务运行
1 | $ sudo vim /usr/lib/systemd/system/nginx.service |
输入以下内容并保存1
2
3
4
5
6
7
8
9
10
11
12[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/etc/nginx/logs/nginx.pid
ExecStart=/etc/nginx/sbin/nginx
ExecReload=/etc/nginx/sbin/nginx -s reload
ExecStop=/etc/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载服务配置:1
2sudo systemctl daemon-reload # 重新加载服务配置文件
sudo systemctl start/stop/reload nginx #开启、停止、重新加载nginx
四、手机用的连接为webdav软件:
苹果:FE文件管理器、ES文件浏览器
安卓:CX文件管理器或者Cx File Explorer、ES文件浏览器
推荐几个安卓下载google apk
网站:
1、apkcombo 【已墙】
3、apkpure 【已墙】
2、apkdl
五、一些问题及解决方法:
1. 查找进程:
查询端口:1
ps -ef |grep nginx
2. 开放端口:
1 | $ sudo apt-get install iptables |
持久化规则:这里我们需要在安装一下工具来帮我们实现,这里我们使用 iptables-persistent
安装iptables-persistent
1
$ sudo apt-get install iptables-persistent
持久化规则1
2$ sudo netfilter-persistent save
$ sudo netfilter-persistent reload
完成上述操作就可以永久打开我们需要的端口了
3. 关于权限问题:
1 | $ sudo vim nginx.conf |
注释掉user
,改为user nginx;
重新加载出现:错误提示如下:1
2
3
4
5
6$ sudo nginx -s reload
nginx: [emerg] getpwnam("nginx") failed in /etc/nginx/conf/nginx.conf:2
$ sudo nginx -s closed
nginx: invalid option: "-s closed"
$ sudo nginx -s stop
nginx: [emerg] getpwnam("nginx") failed in /etc/nginx/conf/nginx.conf:2
解决办法:1
2
3
4
5
6$ sudo useradd -s /sbin/nologin -M nginx
useradd:用户“nginx”已存在
$ id nginx
uid=117(nginx) gid=125(nginx) 组=125(nginx)
$ systemctl start nginx
$ sudo nginx -s reload
4. make upgrade
平滑升级
1 | ~# /sbin/mount.davfs: mounting failed; the server does not support WebDAV |
原因是mount.davfs
命令在挂载时和 WebDAV
服务器建立连接,并通过 libneon
库的 ne_options
函数发送 HTTP OPTIONS
请求获取 WebDAV
服务器能力,虽然返回成功但判断坚果云 WebDAV
服务器不支持 Class 1 WebDAV
,因此直接报错挂载失败。
看到这里解决办法也就简单了,davfs2
提供了通过配置文件禁用 WebDAV
头检测的功能,
直接修改/etc/davfs2/davfs2.conf
配置文件解注释并改为:ignore_dav_header 1