[우분투, 민트] nginX에서 WebDAV 쉽게 설정하기
WebDAV(Web Distributed Authoring and Versioning, 웹 분산 저작 및 버전 관리)는 하이퍼텍스트 전송 프로토콜(HTTP)의 확장으로, 쉽게 말해서 HTTP 프로토콜을 이용하여 서버에 문서를 만들거나 편집할 수 있게하고 이동할수 있는 프레임워크를 제공하는 것이다. 초보자들을 위해 더욱 쉽게 말하자면 FTP(File Transfer Protocol, 파일전송프로토콜)를 HTTP 프로토콜로 구현한 것으로 이해하는 것도 좋겠다.
최근 Apache를 버리고 nginX로 갈아탄지 약 3년정도 됐는데, Apache에서는 쉽게 제공되던 webdav 모듈이 nginX에서는 제대로 제공되고 있지 않았다. 그래서 여기저기 자료를 찾아봤더니 확장모듈이 설치되어 있지 않은 탓이고, 확장모듈을 설치하려면 nginX 소스를 받아서 컴파일을 해야 한다는 인터넷의 각종 글들만 보였다. 그러다 최근 설치한 Xubuntu에 시냅틱패키지관리자를 설치하고나서 패키지에서 nginx를 조회하다가 우연히 nginx-light, nginx, nginx-full, nginx-extras의 종류가 있는 것을 보게 되고 그 패키지에 대한 설명들을 읽고 이거구나 싶었다. 각 모듈별로 그 용도에 따라 미리 만들어 놓은 패키지를 골라서 사용하기만 하면 된다.
요약 : nginX를 컴파일하지 않고도 기존 배포판 nginX 패키지중에 골라 사용하면 쉽게 WebDAV를 구성할수 있습니다.
각 패키지별 설치되는 모듈들은 다음 표를 참고하자.
참고페이지 : http://www.cambus.net/nginx-packages-in-debian-stable/
2013년 자료이기 때문에 현재와 조금 다를 수 있다.
| nginx | nginx-light | nginx-full | nginx-extras | (0.7.67) | (1.2.1) | (1.2.1) | (1.2.1) -----------------------|-------------|-------------|-------------|------------- Core | X | X | X | X Access | X | X | X | X Auth Basic | X | X | X | X Auto Index | X | X | X | X Browser | X | | X | X Charset | X | X | X | X Empty GIF | X | X | X | X FastCGI | X | X | X | X Geo | X | | X | X Gzip | X | X | X | X Headers | X | X | X | X Index | X | X | X | X Limit Requests | X | | X | X Limit Zone | X | | X | X Limit Conn | X | X | X | X Log | X | X | X | X Map | X | X | X | X Memcached | X | | X | X Proxy | X | X | X | X Referer | X | | X | X Rewrite | X | X | X | X SCGI | X | | X | X Split Clients | X | | X | X SSI | X | | X | X Upstream | X | X | X | X User ID | X | | X | X UWSGI | X | | X | X X-Accel | X | X | X | X
| nginx | nginx-light | nginx-full | nginx-extras | (0.7.67) | (1.2.1) | (1.2.1) | (1.2.1) -----------------------|-------------|-------------|-------------|------------- Addition | | | X | X Degradation | | | | Debug | X | | X | X Embedded Perl | | | | X FLV | X | | | X GeoIP | X | | X | X Google Perftools | | | | Gzip Precompression | X | X | X | X Image Filter | | | X | X IPv6 | X | X | X | X MP4 | | | | X Random Index | | | | X Real IP | X | | X | X Secure Link | | | | X SSL | X | X | X | X Stub Status | X | X | X | X Substitution | X | | X | X WebDAV | X | | X | X XSLT | | | X | X
이곳에 WebDAV 모듈이 있다고 해서 WebDAV가 제대로 작동하지는 않는다. 가장 하단에 있는 Third Party 모듈에 있는 DAV Ext가 필요하다.
| nginx | nginx-light | nginx-full | nginx-extras | (0.7.67) | (1.2.1) | (1.2.1) | (1.2.1) -----------------------|-------------|-------------|-------------|------------- Mail Core | X | | X | X IMAP | X | | X | X POP3 | X | | X | X SMTP | X | | X | X SSL | X | | X | X
| nginx | nginx-light | nginx-full | nginx-extras | (0.7.67) | (1.2.1) | (1.2.1) | (1.2.1) -----------------------|-------------|-------------|-------------|------------- Auth PAM | | | X | X DAV Ext | | | X | X Echo | | X | X | X Embedded Lua | | | | X HTTP Chunkin | | | | X HTTP Headers More | | | | X HTTP Push | | | | X Nginx Development Kit | | | | X Upload | | | | X Upload Progress | | | | X Upstream Fair Queue | X | | X | X
full, extras에서 DAV Ext 기능을 사용할수 있는 모듈이 포함되어 있다.
그럼 이제 부가설명은 그만하고 설치에 들어가 보자.
기존 설치된 nginx를 완전히 지우고 시작하고 싶다면 nginx 서비스를 종료하고 난후에 apt-get purge 명령어로 삭제한 후에 다음과 같은 명령어를 실행한다. 설치된 nginx가 없거나 지우지 않고 설치하고 싶다면 바로 다음의 과정으로 들어가면 된다.
$ sudo apt-get update $ sudo apt-get install nginx nginx-full
nginx-extras 로 설치하는 것도 동일한 효과를 볼 수 있다. 자신에게 필요한 모듈이 더 있다면 extras를 선택하기 바란다.
설치 후에 모듈이 제대로 있는지 확인하자.
$ nginx -V nginx version: nginx/1.4.6 (Ubuntu) built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1) TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --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 --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-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=/build/nginx-J0mhXC/nginx-1.4.6/debian/modules/nginx-auth-pam --add-module=/build/nginx-J0mhXC/nginx-1.4.6/debian/modules/nginx-dav-ext-module --add-module=/build/nginx-J0mhXC/nginx-1.4.6/debian/modules/nginx-echo --add-module=/build/nginx-J0mhXC/nginx-1.4.6/debian/modules/nginx-upstream-fair --add-module=/build/nginx-J0mhXC/nginx-1.4.6/debian/modules/ngx_http_substitutions_filter_module $
하단부에 제대로된 모듈이 연결되어 있다. –add-module=/build/nginx-J0mhXC/nginx-1.4.6/debian/modules/nginx-dav-ext-module
$ sudo mkdir /var/dav $ sudo chown www-data:www-data /var/dav
/etc/nginx/sites-available 디렉토리로 이동한후 WebDAV를 적용하고 싶은 도메인 설정파일 혹은 default 파일 등에 다음과 같은 설정을 적용한다.
location /webdav { autoindex on; alias /var/dav; # webdav가 실행될 디렉토리를 지정합니다. 혹은 root /var/dav; 로 설정해도 됩니다. auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; #사용자 id와 password를 설정할 파일 client_body_temp_path /var/dav/temp; dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS; dav_access user:rw group:rw all:r; }
다음을 입력하면 사용자아이디와 패스워드를 생성할 수 있다.
$ sudo htpasswd -c /etc/nginx/.htpasswd 사용자아이디
New password: Re-type new password: Adding password for user 사용자아이디
/etc/nginx/.htpasswd 파일의 구조는 다음과 같다.
login-id:password
위의 패스워드 파일은 시스템 로그인 아이디, 패스워드와 전혀 다르게 작동하는 별개의 것이다.
이제 바뀐 설정들이 적용되도록 nginX를 재가동 시켜주면 된다.
$ sudo service nginx restart
1. 주소창에 http://도메인/webdav 를 입력했을때 다음과 같은 사용자 인증 화면이 나타나야 한다.
2. 인증이 완료되면 다음과 같은 리스트 화면이 뜬다. 파일이 들어있다면 파일 목록들이 주욱 뜬다.
xp나 windows 7에서 네트워크 드라이브로 연결하는 방법들은 인터넷에 많이 나와있어서 일부러 여기에 기술할 필요는 없을것 같다. 검색이 힘든 분들을 위해서 예제 사이트를 한곳 링크해 둔다.
참고사이트 :
http://jos39.tistory.com/46 xp와 7
http://3jini.tistory.com/30 8.1 (8.1부터는 레지스트리 수정이 필요없다고 함)
넷드라이브를 사용하면 쉽고 편리하게 WebDAV를 하드디스크처럼 설정해준다. 필요할때만 로드 시켜서 사용하기도 편리한데 1.3.4버전이상은 무료버전이었으나 2이상 버전으로 업그레이드 되면서 유료버전으로 변경되었다. 2버전은 30일 무료버전으로 30일이 만료되면 탐색기창에 광고 화면과 글씨가 뜨며 속도도 느리다. 2버전의 장점은 sftp를 통한 접속도 지원하는것으로 ssh만 설정되어 있는 서버에도 접속이 가능해서 굳이 webdav를 사용 할 필요가 없어진다.
어쨌든 우리가 현재 설정한 것은 WebDAV이므로 이 프로토콜만 제대로 쓰기에는 구버전인 1.3.4버전을 추천한다.
“넷드라이브”를 검색어로 검색해보시면 역시 마찬가지로 사용법은 인터넷에 상당히 많으므로 여기서는 설명을 생략하기로 한다.
위에서 말했던 것처럼 nginX를 컴파일해서 사용하는 것은 자기에게 필요한 모듈들만 구성해서 최적화 시킬수 있다는 장점이 있는 반면, 구성환경과 gcc 버전, 배포판 등의 문제로 컴파일시 에러를 유발할수 있고 평소 리눅스나 리눅스개발환경에 지속적인 관심을 기울이는 개발자가 아니라면 에러유발시 스트레스가 상당할 것이다. 이런 에러유발이 쉽게 해결되면 괜찮지만 하루, 이틀, 삼일이 지나가고 인터넷에서도 딱히 다른 해법을 찾지 못한다면 더더욱 nginx를 입맛대로 사용하는 것은 어려운 일이라 느끼고 포기하게 될지도 모를 일이다.
최적화는 못할지 모르겠지만(전문적인 웹서비스를 제공할곳이 아니라면 굳이 전문적인 최적화가 필요할까 라는 생각이 들기도 한다) 라이트하고 편리하게 기존 패키지를 활용해서 충분히 쉽게 구축할수 있고 활용할수 있는 방법이 있는데 굳이 어려운 길로 돌아가는 것도 힘든 일이다.
nginx-light, nginx, nginx-full, nginx-extras 각 확장모듈별로 입맛대로 골라쓸수 있다는 점 명심하시고 컴파일 등의 머리아픈 과정 없이도 쉽게 WebDAV 등을 구성할수 있다는 점을 다시한번 상기하자.