OMV4에서는 Webdav플러그인을 지원했기 때문에 쉽게 설정할 수 있었지만, OMV5로 업데이트되면서 플러그인이 지원하지 않게 되었습니다.
그래서 플러그인에서 사용하던 wabdav소스인 sabre/dav
를 직접 다운로드하여 설정해주어야 합니다.
sabre/dav 다운로드하기
sabre/dav
를 다운로드하기 위해서는 php-composer
가 필요합니다. 그래서 먼저 php-composer
를 설치해줍니다.
SSH
접속을 하여 아래 명령줄을 입력해 줍니다.
wget https://getcomposer.org/installer
mv installer composer-setup.php
php composer-setup.php
rm composer-setup.php
sudo cp composer.phar /usr/bin/composer
그다음 composer
를 입력해보고 제대로 설치되었는지 확인해 줍니다. 제대로 설치되었다면 sabre/dav
를 다운로드하여 줍니다.
sudo composer require sabre/dav ~3.2.0
sudo composer update sabre/dav
파일 다운로드와 업데이트를 마쳤다면 다운로드한 파일을 웹 디렉터리로 옮겨줍니다.
sudo mkdir /var/www/openmediavault/webdav
sudo mv vendor/ /var/www/openmediavault/webdav
sabre/dav 설정하기
webdav
에서 사용할 파일들이 저장되는 디스크가 어디에 탑재되어 있는지 찾아야 합니다.
[Develop/Raspberry Pi] - [Raspberry Pi_OMV5] 2. OMV5 HDD 설정하기
[Raspberry Pi_OMV5] 2. OMV5 HDD설정하기
OMV5의 기본 설정하는 부분은 이전 버전인 OMV4와 차이가 없으므로 기본 설정은 다음 글을 참고해 주세요. [Develop/Raspberry Pi] - [Raspberry Pi_OMV] 2. OMV 기본 설정하기 [Raspberry Pi_OMV] 2. OMV 기본 설..
blog.jeuke.com
위 글에서 레이블을 주어서 생성하였다면 /srv/dev-disk-by-label-[설정한 레이블 명]/
에 디스크가 탑재되어 있습니다.
레이블 명을 설정하지 않았다면 아래 명령어로 확인해 주어야 합니다.
ls /srv/
저 명령어로 나온 결과 중 dav-disk-by
로 시작하는 폴더에 디스크가 탑재되어 있습니다.
이 경로를 기억한 다음에 sabre/dav
를 사용하기 위한 파일과 폴더를 만들어 줍니다.
cd /var/www/openmediavault/webdav/
sudo mkdir data/
sudo ln -s [위에서 찾은 디스크 경로(/srv/dev-disk-by~)]/[공유 폴더 명] public
sudo chmod a+rwx data
위 명령줄의 3번째 줄의 예시는 아래와 같습니다.
sudo ln -s /srv/dev-disk-by-label-HDD/Data public
이제 server.php
파일을 만들어 주어 sabre/dav
의 설정을 마쳐줍니다.
sudo nano server.php
php
파일은 아래와 같이 작성합니다(복사, 붙여 넣기가 안될 경우 하단에 올려놓은 파일을 이용해 주세요).
<?php
use
Sabre\DAV;
// The autoloader
require 'vendor/autoload.php';
// Now we're creating a whole bunch of objects
$rootDirectory = new DAV\FS\Directory('public');
// The server object is responsible for making sense out of the WebDAV protocol
$server = new DAV\Server($rootDirectory);
// If your server is not on your webroot, make sure the following line has the
// correct information
$server->setBaseUri('/webdav/');
// The lock manager is reponsible for making sure users don't overwrite
// each others changes.
$lockBackend = new DAV\Locks\Backend\File('data/locks');
$lockPlugin = new DAV\Locks\Plugin($lockBackend);
$server->addPlugin($lockPlugin);
// This ensures that we get a pretty index in the browser, but it is
// optional.
$server->addPlugin(new DAV\Browser\Plugin());
// All we need to do now, is to fire up the server
$server->exec();
[Ctrl
] + [x
]를 누른 뒤 [y
], [Enter
] 키를 차례로 눌러 저장하고 나와줍니다.
Nginx 설정하기
sabre/dav
설정이 마쳤다면 웹에서 sabre/dav
를 접근할 수 있게 Nginx
를 설정해 주어야 합니다.
sudo nano /etc/nginx/sites-enabled/openmediavault-webgui
listen [::]:80 ~
줄 위에 아래 내용을 추가해 줍니다.
location /webdav {
proxy_pass http://[라즈베리파이의 IP주소]:30080;
}
[Ctrl
] + [x
]를 누른 뒤 [y
], [Enter
] 키를 차례로 눌러 저장하고 나와줍니다.
하나의 서버 파일을 하나 더 생성해 줍니다.
sudo nano /etc/nginx/sites-enabled/webdav
아래와 같이 서버 설정을 작성해 줍니다(복사, 붙여 넣기가 안될 경우 하단에 올려놓은 파일을 이용해 주세요).
server {
listen 30080;
allow [라즈베리파이의 IP주소];
deny all;
root /var/www/openmediavault/webdav/;
index server.php;
location / {
rewrite ^/(.*)$ /server.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
}
[Ctrl
] + [x
]를 누른 뒤 [y
], [Enter
] 키를 차례로 눌러 저장하고 나와줍니다.
작성한 Nginx
설정 파일이 문제없는지 확인한 후 Nginx
를 재시작하여 적용해 줍니다.
sudo nginx -t
sudo systemctl restart nginx
공유폴더 권한 설정
webdav에서 사용할 공유폴더에 www-data의 접근권한이 있어야 읽기/쓰기가 가능합니다.
OMV 웹 설정 화면에 들어가서 [접근 권한 관리
] - [공유 폴더
]로 들어갑니다.
webdav
에서 사용하는 공유폴더를 선택한 다음 [접근 제어 목록
] 버튼을 눌러줍니다.
[사용자/그룹 권한
]에서 www-data
를 선택한 뒤 적용 후 저장해 줍니다.
파일 다운로드
이제 webdav
가 정상적으로 접속되는지 확인해 줍니다. 접속은 http://[라즈베리파이의 IP주소]/webdav
로 접속하면 됩니다.
파일의 업로드, 다운로드가 정상적으로 된다면 webdav
설정이 끝난 것입니다.
접속 암호 설정은 아래 글을 이용해서 설정하면 됩니다.
[Develop/Server] - [Server] SabreDAV 인증 구현하기
[Server] SabreDAV 인증 구현하기
SabreDAV는 다양한 방법의 인증을 지원합니다. 웹서버 인증, htdigest 인증, 별도의 인증 함수 구현, DB 활용 인증, IMAP 인증이 있습니다. 1. apache2-utils 설치하기 이 글에서 사용할 인증 방법은 htdigest..
blog.jeuke.com
설치가 잘 진행되지 않는다면 댓글 달아주세요. 제가 알고 있는 한 최대한으로 도와드리도록 하겠습니다.
'Develop > Server' 카테고리의 다른 글
[Server] SabreDAV 인증 구현하기 (1) | 2020.07.09 |
---|---|
[Raspberry Pi_OMV5] 6. OMV5 webdav 설정하기 (28) | 2020.03.19 |
[Raspberry Pi_OMV5] 5. OMV5 SMB 공유 설정하기 (4) | 2020.03.16 |
[Raspberry Pi_OMV5] 4. OMV5 사용자 추가하기 (3) | 2020.03.06 |
[Raspberry Pi_OMV5] 3. OMV5 공유 폴더 만들기 (1) | 2020.03.05 |
[Raspberry Pi_OMV5] 2. OMV5 HDD설정하기 (3) | 2020.03.04 |
안녕하세요.
ngnix세팅 후 확인시 오류가 발생하고 그 디뒤로 omv localhost진입이 안되는 문제가 발생하고 있습니다. 혹시 해결법이 있을까요?
체크했을 때는 문제가 없었는데 ip 주소/webdav 했을 때 502 bad gateway가 뜨며 접속이 안 됩니다. 이럴 때는 어떻게 해야 하나요?
추가로, webdav를 이용하여 외부망에서 접속하는 것도 가능한가요? 외부망 접속을 위해 계속 찾아보고 있는데 잘 모르겠네요...
2020/03/26 21:21:07 [emerg] 24278#24278: invalid IPv6 address in upstream "[192.168.0.100]:30080" in /etc/nginx/sites-enabled/openmediavault-webgui:39
로 찍혀 있는것을 확인했습니다.
문제있는 부분을 찾아서 수정했습니다. 도움주셔서 감사합니다.
혹시 webdav에서 업로드한 파일 삭제는 어떻게 하나요?
ㅠㅠ 진짜 마지막으로 질문 하나 여쭙겠습니다
webdav 용량 제한을 푸는 방법은 무엇인가요? 윈도우상 레지스트리 수정은 413 Request Entity Too Large를 뱉으며 오류가 나더라구요 ㅠㅠ
마지막에 크롬으로 접속했을 때 다음과 같이 뜹니다
3.2.2 UnexpectedValueException FilesystemIterator::__construct(public): failed to open dir: No such file or directory
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:sabredav-version>3.2.2</s:sabredav-version>
<s:exception>UnexpectedValueException</s:exception>
<s:message>
FilesystemIterator::__construct(public): failed to open dir: No such file or directory
</s:message>
<s:message>...</s:message>
</d:error>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">...</d:error>
어디서부터 다시 시작해야 할까요?
public폴더는 있었으나 sudo ln -s [~~~]부분에서 없는 공유폴더를 바로잡아서 webdav으로 접속까지 성공했습니다.
그런데 webdav를 이용하여 업로드/다운로드가 안됩니다.
어떤 설정을 건드려야 할까요?
nginx 재시작할때 에러가 뜨면서 안되요
뭐가 문제일까요
server {
listen 30080;
root /var/www/openmediavault/webdav/;
index server.php;
location / {
rewrite ^/(.*)$ /server.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
}
}
이렇게 하는 건가요?
allow, deny를 지웠는데도 안되요.
sudo nginx -t
sudo systemctl nginx는 실행시켰습니다.
file is not found 라고 뜨는 게 정상인가요?
물론 파일은 아직 안넣었습니다.
그리고 omv5에서는 헤놀로지처럼 워드프레스나 제로보드는 설치가능한가요?
추가로 여기에 h5ai는 설치할 수 있나요? 좋긴 한데 토렌트 저장 폴더로 쓰고있는데 폴더단위 다운로드가 안되는 것 같아요.
3.2.2 UnexpectedValueException FilesystemIterator::__construct(public): failed to open dir: No such file or directory
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:sabredav-version>3.2.2</s:sabredav-version>
<s:exception>UnexpectedValueException</s:exception>
<s:message>FilesystemIterator::__construct(public): failed to open dir: No such file or directory</s:message>
...
</d:error>
webdav를 접속하려하면 이 내용이 뜨는데 어떻게 해결해야하나요?
public 폴더를 위의 코드대로 여러번 다시했는데 파일이 존재한다는말 이외에는 변화가 없어요
안녕하세요, ip주소:30080 포트로 들어가면 nginx 404 not found가 나오고,
ip주소/webdav 로 들어가면 폴더가 나오는데 이게 정상인가요? ㅜㅜ