今天在Mac上装了Homebrew后,下载的第一个软件是Nginx服务器,一行命令 brew nginx 就搞定了,真的是很省事。自动下载,编译,启动Nginx后,查看Nginx的加载模块。nginx -V
configure arguments: --prefix=/Users/david/repo/homebrew/Cellar/nginx/1.6.0_1 --with-http_ssl_module --with-pcre --with-ipv6 --sbin-path=/Users/david/repo/homebrew/Cellar/nginx/1.6.0_1/bin/nginx --with-cc-opt='-I/Users/david/repo/homebrew/Cellar/pcre/8.35/include -I/Users/david/repo/homebrew/Cellar/openssl/1.0.1g/include' --with-ld-opt='-L/Users/david/repo/homebrew/Cellar/pcre/8.35/lib -L/Users/david/repo/homebrew/Cellar/openssl/1.0.1g/lib' --conf-path=/Users/david/repo/homebrew/etc/nginx/nginx.conf --pid-path=/Users/david/repo/homebrew/var/run/nginx.pid --lock-path=/Users/david/repo/homebrew/var/run/nginx.lock --http-client-body-temp-path=/Users/david/repo/homebrew/var/run/nginx/client_body_temp --http-proxy-temp-path=/Users/david/repo/homebrew/var/run/nginx/proxy_temp --http-fastcgi-temp-path=/Users/david/repo/homebrew/var/run/nginx/fastcgi_temp --http-uwsgi-temp-path=/Users/david/repo/homebrew/var/run/nginx/uwsgi_temp --http-scgi-temp-path=/Users/david/repo/homebrew/var/run/nginx/scgi_temp --http-log-path=/Users/david/repo/homebrew/var/log/nginx/access.log --error-log-path=/Users/david/repo/homebrew/var/log/nginx/error.log --with-http_gzip_static_module
发现没有DAV模块,查看文档。原来这个模块是默认不加载的,如果需要使用就必须重新编译nginx的源代码。说干就干,这里记录一下编译过程:
由于使用的时homebrew下载的nginx,所以源代码在/Library/Caches/Homebrew下面,进入目录后找到nginx-1.6.0.tar.gz的压缩包,tar -xvf nginx-1.6.0.tar.gz解开压缩包。进入解压缩的目录,
drwxr-xr-x 15 david admin 510 Apr 30 01:40 . drwxr-xr-x 9 david admin 306 Apr 30 01:39 .. -rw-r--r-- 1 david admin 234891 Apr 24 20:52 CHANGES -rw-r--r-- 1 david admin 357716 Apr 24 20:52 CHANGES.ru -rw-r--r-- 1 david admin 1397 Apr 24 20:52 LICENSE -rw-r--r-- 1 david admin 435 Apr 30 01:41 Makefile -rw-r--r-- 1 david admin 49 Apr 24 20:52 README drwxr-xr-x 23 david admin 782 Apr 24 20:52 auto drwxr-xr-x 11 david admin 374 Apr 24 20:52 conf -rwxr-xr-x 1 david admin 2369 Apr 24 20:52 configure drwxr-xr-x 6 david admin 204 Apr 24 20:52 contrib drwxr-xr-x 4 david admin 136 Apr 24 20:52 html drwxr-xr-x 3 david admin 102 Apr 24 20:52 man drwxr-xr-x 11 david admin 374 Apr 30 01:41 objs drwxr-xr-x 8 david admin 272 Apr 24 20:52 src
可以看到是使用make的,可以使用configure命令来编译。首先来编辑configure的命令,配置是在原来的基础上加上-with-http_dav_module,所以命令如下:
./configure --prefix=/Users/david/repo/homebrew/Cellar/nginx/1.6.0_1 --with-http_ssl_module --with-pcre --with-ipv6 --sbin-path=/Users/david/repo/homebrew/Cellar/nginx/1.6.0_1/bin/nginx --with-cc-opt='-I/Users/david/repo/homebrew/Cellar/pcre/8.35/include -I/Users/david/repo/homebrew/Cellar/openssl/1.0.1g/include' --with-ld-opt='-L/Users/david/repo/homebrew/Cellar/pcre/8.35/lib -L/Users/david/repo/homebrew/Cellar/openssl/1.0.1g/lib' --conf-path=/Users/david/repo/homebrew/etc/nginx/nginx.conf --pid-path=/Users/david/repo/homebrew/var/run/nginx.pid --lock-path=/Users/david/repo/homebrew/var/run/nginx.lock --http-client-body-temp-path=/Users/david/repo/homebrew/var/run/nginx/client_body_temp --http-proxy-temp-path=/Users/david/repo/homebrew/var/run/nginx/proxy_temp --http-fastcgi-temp-path=/Users/david/repo/homebrew/var/run/nginx/fastcgi_temp --http-uwsgi-temp-path=/Users/david/repo/homebrew/var/run/nginx/uwsgi_temp --http-scgi-temp-path=/Users/david/repo/homebrew/var/run/nginx/scgi_temp --http-log-path=/Users/david/repo/homebrew/var/log/nginx/access.log --error-log-path=/Users/david/repo/homebrew/var/log/nginx/error.log --with-http_gzip_static_module --with-http_dav_module
执行后,在目录里可以看到生成的objs目录,make install编译安装后使用sudo nginx -s reload重新加载nginx服务器后再使用nginx -V查看nginx是否加载了这个模块。
剩下来得就是配置dav的服务,用编辑器打开/Users/david/repo/homebrew/etc/nginx/nginx.conf加入dav服务的配置,可以参考文档:
location / { root /data/www; client_body_temp_path /data/client_temp; dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; dav_access group:rw all:r; limit_except GET { allow 192.168.1.0/32; deny all; } }
重启,测试,大功告成。