nPlayer용으로 nginx 설정하기

AdSense

아이폰 무인코딩 앱 중에서 유명한 nPlayer!!!

 

 

저도 포고를 구입한 큰 이유 중 하나가 아이폰에서 영상을 보고 싶은데...

 

포고의 성능이 떨어지다보니 웹서버의 대표적인 apache는 포고에 올리기 좀 버겁다고 합니다....(실제로 설치해보진 않았네요^^)


그리고 전세계적으로 점유율이 높은 건 apache 웹서버 이구요

2위가 nginx입니다.


nginx가 인기가 있는 이유는 비동기소켓으로... 뭐 어쩌고 저쩌고가 있는데... 이런건 잘모르겠고 속도가 좋다고 합니다....


개인(소규모)이 사용한다면 비슷할겁니다....



그리고 제 경우엔 nginx가 설정이 훨신 쉬워보이더군요....


 

이런저런 이유로 많은 포고 유저들이 nginx를 이용하시는데요..

(아치리눅스에 맞는 아파치 webdav설정 강좌가 없는것도 큰 이유...)



 


하지만.... Series4에 대표적은 OS Archlinux에서 패키지로 설치한 nginx는 확장 모듈 내장되어있지 않아 확장모듈을 필요로 하는 클라이언트들에선... 접속이 안됩니다......


nplayer에서 접속을 할수가 없습니다..


 



webdav에는 


PROPFIND - 정보를 얻는데 사용되며,콜렉션 스트럭트(폴더)를 얻는데 이용합니다...

PROPPATCH - 정보를 변경하는데 이용

MKCOL - 콜렉션(폴더)을 만드는데 이용

COPY - 복사하는데 이용

MOVE - 이동하는데 이용

LOCK - 파일을 잠그는데 이용

UNLOCK - 잠금해제 하는데 이용


이런 메소드가 있다는데... 이런건 중요하지 않죠 사실... 일반 사용자입장에선


위에 PROPFIND, PROPPATCH 부분이 확장 모듈부분입니다.

2개의 모듈이 없어서 nPlayer에서 접속하면 405 에러를 띄웁니다..






그럼 본격적인 강좌 들어갈게요



기존에 nginx(엔진엑스)를 설치하신 분들은 


nginx -V


를 쳐서 엔진엑스의 설치 환경을 봅니다...


길게 나열된 부분에서 --with-http_dav_module부분이 보일겁니다... 팩맨으로 설치한 패키지에선 dav는 기본적으로 지원은합니다만!

어디에도 ext_module부분은 보이지 않습니다...


설치가 되어있는 분들은 삭제를 합니다.


nginx -R nginx



확장모듈을 포함해서 개별적으로 설치할려면 아래 3개가 필요합니다.


1. nignx 소스 파일  다운로드

2. 확장모듈 파일    다운로드

3. 컴파일에 필요한 패키지   gcc 와 make



다운 받는건 pc에서 받아 ftp나 samba를 통해 포고로 이동시켜도 되고

wget으로 직접 다운받아도 됩니다.


현재 엔진엑스 최신버전은 1.4.1이고, 개발자버전은 1.5.0입니다.

둘중에 선호하는거 설치하시면 됩니다.


직접 받으시려면


wget http://nginx.org/download/nginx-1.4.1.tar.gz



확장모듈은 


wget https://github.com/arut/nginx-dav-ext-module/archive/master.zip



다운받은 폴더로 가서


tar -xzvf nginx-1.4.1.tar.gz


압축해제합니다.


확장모듈 파일역시 압축해제 합니다.


모듈파일 2개를 (ngx_http_dav_ext_module.c와 config) 폴더 하나에 넣어둡니다.



그리고 컴파일과 설치에 필요한 패키지를 설치합니다.


pacman -S gcc make



모든 준비는 끝났고, 컴파일과 설치에 들어가겠습니다.



컴파일옵션은 엔진엑스를 패키지 설치했을때의 옵션 그대로 넣겠습니다.


엔진엑스 소스파일을 풀어둔 폴더에 들어가서


./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=http --group=http --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/client-body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-imap --with-imap_ssl_module --with-ipv6 --with-pcre-jit --with-file-aio --with-http_dav_module --add-module=확장모듈이 있는 폴더 --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_realip_module --with-http_spdy_module --with-http_ssl_module --with-http_stub_status_module


이렇게 넣어줍니다.


긴 컴파일이 끝나면


설치해주면 됩니다


make && make install



이제 남은일은 설정과, 시스템 서비스에 등록하는겁니다.

 

먼저 시스템 서비스에 등록하겠습니다. 편리한 실행을 위해!

이부분은 systemd가 적용된 시스템에 해당하는 내용입니다.

 


nano /usr/lib/systemd/system/nginx.service


[Unit]
Description=A high performance web server and a reverse proxy server
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'pid /run/nginx.pid; daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'pid /run/nginx.pid; daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'pid /run/nginx.pid; daemon on; master_process on;' -s reload
ExecStop=/usr/sbin/nginx -g 'pid /run/nginx.pid;' -s quit

[Install]
WantedBy=multi-user.target

복붙 한 뒤 ctrl+x로 저장후 나옵니다.
위 내용은 패키지 설치시 등록되는 서비스 내용 그대로입니다..

그래서 컴파일 옵션도 똑같이 했던거구요.. 다르게 하고 싶으시다면 컴파일 옵션에서 각종 경로 수정 후 서비스에더 경로를 수정하면 됩니다.


이제 설정파일을 수정할 차례입니다.

nano /etc/nginx/nginx.conf

합니다.


열면 뭔가 길게 적힌게 나올겁니다...

처음부터 보면
#user nobody;                  # 권한 관련 부분입니다. 뒤에 설명 하겠습니다
worker_processes  1;        # 동시 접속자 설정(worker_processes*work_processes)

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {                                # 동시 접속자
    worker_connections  10;     # worker_processes*work_processes 만큼 접속가능
}

http {
    include       mime.types;
    default_type  application/octet-stream;

조금 더 내려서 아래와 같은 부분이 있을겁니다.
    server {
        listen       80;         # 서비스 포트
        server_name  localhost;

        charset utf-8;            # 한글 폴더명 파일명 깨지는 문제 처리

        #access_log  logs/host.access.log  main;

        location / {
            root /usr/share/nginx/html;
            index  index.html index.htm;
        }

        location /webdav {    # 접속하고 싶은 뒷부분 주소
            autoindex on;
            alias /home/webdav/torrent;            # 공유하고 싶은 위치
            auth_basic "Restricted Access";
            auth_basic_user_file /etc/nginx/security/.htpasswd;    # 비번 저장 위치
            client_body_temp_path /tmp/nginx/webdav;        # 임시파일 저장 위치
            dav_methods PUT DELETE MKCOL COPY MOVE;    # 기본모듈 옵션
            dav_ext_methods PROPFIND OPTIONS;        # 확장모듈 옵션
            create_full_put_path  on;
            dav_access user:rw group:rw  all:r;        # 권한에 대한 내용
        }
주소, 공유위치, 임시저장파일 위치만 빼고 똑같이 적으시면 될겁니다.

 

비밀번호 파일 설정은

echo "계정:$(openssl passwd -crypt 비밀번호)" >> /etc/nginx/security/.htpasswd 

 

하면됩니다.

 

계정은 리눅스 로컬계정과 아무런 관련이 없습니다.


권한부분에서 현재 설정은 유저 읽기쓰기, 그룹 읽기쓰기, other 읽기만 가능하도록 되어있습니다.


이제 모든 설정이 끝나고 구동하면 됩니다.

systemctl start nginx

부팅시 자동실행은

 

systemctl enable nginx 

이제 남은 부분은 공유기 포트포워딩 정도겠네요^^

 

 

여기에 쓰인 정보들은 http://cafe.naver.com/pogolinux/285 글과 구글 검색에서 나온 각종 정보들을 정리한겁니다.