NAS & ODROID/Ubuntu NAS

오드로이드 XU4 를 개인 클라우드 서버로 - 7. h5ai

awesometic 2017. 5. 2. 01:16
반응형

 h5ai 는 modern HTTP web server index 입니다. 그렇게 써있는데, 감이 안 오시는 분들은 간단하게 파일을 웹에서 내컴퓨터에서 보듯 볼 수 있다고 생각하시면 됩니다. 사실 서버 차원에서 기본적인 웹 디렉토리 리스팅 서비스가 지원되지만, 보기도 나쁘고 보안도 취약해 웹 디렉토리 리스팅을 위해선 h5ai 를 사용하는 것이 더 좋다고 봅니다. h5ai의 보안이 뛰어난 것은 아니지만요.. :)

 또한 h5ai는 간단한 문서, pdf, 이미지, 동영상, 소스 코드 뷰어를 지원합니다. 아주 괜찮은 친구에요.

데모 사이트: https://larsjung.de/h5ai/demo/

 h5ai 를 위해선 Nginx, Apache 등 웹 서버와 PHP가 설치되어 있어야 합니다. Apache 권장이지만, 전 Nginx를 사용하겠습니다.




1. h5ai 설치

1.1 h5ai 다운로드 및 압축 해제

 h5ai 는 업데이트를 위한 저장소가 제공되지 않습니다. 사이트에서 받아 설치해야 합니다.

wget https://release.larsjung.de/h5ai/h5ai-0.29.0.zip

 그리고 전 압축을 편의상 /var/www/html/nas 에 풀겠습니다.

sudo mkdir /var/www/html/nas
sudo unzip -d /var/www/html/nas h5ai-0.29.0.zip

 압축을 풀었으니 지우겠습니다.

rm h5ai-0.29.0.zip


1.2 Nginx 설정

 Nginx에서 h5ai를 제대로 작동시키기 위한 작업이 필요합니다. _h5ai/public/index.php 를 index 페이지로 사용하게끔 설정해야 해요. 여기선 새로운 포트를 둬 해당 NAS 페이지로 접근하게끔 하겠습니다.

 먼저 기존 sites-available 설정 파일을 복사합니다. nas란 이름으로 복사하겠습니다

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/nas

 그리고 복사한 파일의 내용에서 listen과 root 부분을 바꿔줍시다. 전 h5ai 페이지에 접속하기 위해 3000번 포트를 사용하며 default_server 키워드를 지우겠습니다. default_server 키워드는 포트 하나만 갖고 있어야 합니다. root와 index 파일의 경로까지 수정해줍니다.

 다음과 같이 하겠습니다.

server {
    listen       3000;
    server_name  localhost;
    root   /var/www/html/nas;

    location / {
        index  index.html /_h5ai/public/index.php;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }

        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

 해당 파일에 대한 소프트 링크 파일을 /etc/nginx/sites-enabled/nas 파일로 만들어줍시다.

sudo ln -s /etc/nginx/sites-available/nas /etc/nginx/sites-enabled/nas

 마지막으로 Nginx를 reload 해줍시다.

sudo service nginx reload

 접속해봅시다.

http://{오드로이드IP}:3000/

 외부에서도 접속하려면 방화벽 및 공유기의 포트 포워딩 설정을 꼭 확인해주세요. 1편부터 따라오신 분들이라면 방화벽이 설치되어 있지 않으니 공유기의 포트 포워딩 설정만 알아보시면 됩니다. 


1.3 설치 확인

 잘 뜨지만, 여러 기능이 잘 작동하는가 상태를 확인하려면 _h5ai/public/index.php 에 직접 접근해보면 됩니다.

http://{오드로이드IP}:3000/_h5ai/public/index.php

 로그인하라는데, 간단히 엔터치면 됩니다. 비밀번호 및 기능 설정은 조금 이따 하겠습니다.

 빨갛게 no 라고 뜨는 게 별로 맘에 들지 않네요. PHP arch 는 파일 크기 측정, PHP를 이용한 압축 및 다운로드 시 지원하는 단일 파일 크기에 영향을 끼칩니다. 오드로이드 XU4의 AP가 32bit라 어쩔 수 없이 2기가 미만의 파일만 파일 크기가 표시되고, 총 용량이 2기가 미만이어야 압축되어 다운로드 할 수 있습니다. 나머지 캐시 및 썸네일 관련해선 하나씩 잡아가겠습니다. 사용하기에 꼭 필요한 작업은 아닙니다.


2. no 잡기

2.1 Public Cache dirextory, Private Cache directory

 간단합니다. 캐싱을 위한 디렉토리에 대한 권한이 없다는 뜻입니다. sudo 로 압축을 풀었으니 소유권이 root 겠죠. Nginx의 소유권과 같은 www-data로 바꿔줍시다.

sudo chown -R www-data:nogroup /var/www/html/nas/_h5ai


2.2 Image thumbs

여러 그래픽을 다루는 GD 라이브러리를 PHP와 연동시키기 위한 PHP-GD 라이브러리가 없어서 그렇습니다. apt-get 으로 설치해줍니다.

sudo apt-get install php-gd


2.3 Movie thumbs

 ffmpeg 등 오디오/비디오 코덱 라이브러리가 없어서 그렇습니다. apt-get 으로 설치해줍니다. 

sudo apt-get install ffmpeg


2.4 PDF thumbs

 여러 형식의 이미지 파일을 다루거나 변환하기 위한 ImageMagick 프로그램/라이브러리가 없어서 그렇습니다. PHP와 연동하기 위해 PHP-imagick과 함께 apt-get 으로 설치해줍니다. 

sudo apt-get install imagemagick php-imagick


2.5 상태 확인


3. 소프트 링크를 이용한 파일 보이기

 직접 h5ai 경로(/var/www/html/nas)에 파일을 넣지 않고도 소프트 링크를 활용해 파일을 보이게 할 수 있습니다.

 전 외장하드의 파일들을 전부 보이게 하겠습니다.

 제 외장하드 마운트 지점은 /media/externalHdd/ext1, ../ext2 입니다. 제 경우는 다음과 같습니다.

sudo ln -s /media/externalHdd/ext1/ /var/www/html/nas/3.0TB
sudo ln -s /media/externalHdd/ext2/ /var/www/html/nas/1.5TB

 그러면 아래 화면과 같이 뜰 것입니다.


4. 마무리 설정

4.1 옵션 변경

 _h5ai/private/conf/options.json 을 통해 여러 h5ai의 옵션을 변경할 수 있습니다.

sudo vi /var/www/html/nas/_h5ai/private/conf/options.json

 상태 페이지 접근 패스워드, 다운로드 기능 활성화, 미리보기 할 확장자 등 여러 가지 옵션이 제공되니 사용하시면서 입맛대로 바꾸세요


4.2 PHP-JSON 설치

4번째에.. 우분투 서버에선 PHP JSON 지원을 위해 추가 패키지를 설치해야 할 것이라 합니다. 당장 눈에 띄게 안 되는 기능은 없지만, 제작자가 설치하라 하니까 설치합시다.

sudo apt-get install php-json


(옵션) 접속 시 로그인 설정하기

 주소만 안다고 아무나 접근해서 파일을 가져가면 안 되겠죠? .htpasswd를 이용해 접근 제어를 해봅시다.

 먼저 암호화된 패스워드를 얻기 위해 apache2-utils 를 설치하겠습니다.

sudo apt-get install apache2-utils

 그리고 아래 명령어를 통해 /etc/nginx/.htpasswd 파일을 생성합니다.

sudo htpasswd -c /etc/nginx/.htpasswd {사용자이름}

 잘 생성됐나 확인합니다.

cat /etc/nginx/.htpasswd

 됐을 겁니다. 그리고 이제 해당 파일을 적용시킬 페이지 설정 파일을 수정해야 합니다. NAS 접근 페이지니, nginx/sites-available/nas 를 수정합니다.

sudo vi /etc/nginx/sites-available/nas

 root 밑에 블록 안에 아래 두 문장을 추가합니다.

auth_basic "{로그인 프롬프트에 나올 말}";
auth_basic_user_file /etc/nginx/.htpasswd;

 마지막으로 Nginx를 다시 로드해줍니다.

sudo service nginx reload

 확인해봅니다. 접속 시 아래 프롬프트와 유사하게 나오면 정상입니다.

 로그인 해 접속해봅니다.

 안전하지 않은 연결을 통해 전송된다고 하는데, 이 부분에 관해선 추후 도메인 + SSL 적용으로 해결하겠습니다. 다른 일들에 치여 서버 구축의 진도가 느리네요.. 




 h5ai 설치를 마쳤습니다. 다 좋지만, txt 등 문서 프리뷰에선 한글이 항상 깨져 나오네요. 코드를 분석해 고쳐보려 했지만 코드에선 UTF-8만 사용하니 깨질 이유가 없는데.. CSS의 설정이나 뭐 다른 문제가 있는 것 같습니다. 해결법을 아시는 분이나 짐작이 가는 게 있으시다면 댓글로 알려주세요 :)

 

참고 사이트:
a. 본문 내 링크
b. https://www.digitalocean.com/community/tutorials/how-to-set-up-basic-http-authentication-with-nginx-on-ubuntu-14-04




전체 글 목록
2017/04/23 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 1. 우분투 설치
2017/04/24 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 2. Webmin 설치
2017/04/25 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 3. 외장하드 마운트
2017/04/25 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 4. Samba
2017/04/28 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 5. Plex
2017/04/30 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 6. Nginx, PHP, MariaDB
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 7. h5ai
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 8. Wordpress
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 9. 무료 도메인
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - 10. 무료 SSL
2017/05/02 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - IRQ Balancing
2017/05/08 - [오드로이드 XU4] - 오드로이드 XU4 를 개인 클라우드 서버로 - CPU Governor

반응형