일반적으로 스트리밍 서버는 윈도우 서버로만 가능한 것으로 알고 있다. 그래서 스트리밍 서비스를 하려면 윈도우 서버를 사용하고는 했다. 얼마전 리눅스 서버에서 스트리밍 서비스를 할 수있는 간단한 프로그램을 찾게 되어 이렇게 소개를 한다. 아직 배타판이라서 성능 검증되지는 않았지만, 계속 발전한다면 서비스 정도는 아니지만, 간단한게 활용 할 수있을 것 같다. 왜 스트리밍 서버를 사용할까? 일반적으로 웹에서 사용하면되지? 이런 의문이 생긴다. 단순히 웹페이에 링크하게 되면 순차적으로 볼 수 밖에 없다. 다음 2개의 동영상을 비교해 보겠다.
안 되는것
위 동영상은 베이비복스의 우연이다. 저작권이 걸린다면 문제라면 그 강좌의 마지막에 나온 메일 주소로 메일 한통 바랍니다....
1. 설치
설치전에 이 강좌를 읽고 직접 이 프로그램을 서비스를 하려고 시도하면 큰 코를 다친다. 단지 설치해 보고, 개인용 사이트로 운영하려면 사용해 보기 바란다. 설치후 다음 문제들을 발견했다.
1. windows XP 에서 실행되지 않는다. 2. 매우 불안전 하다. 3. 가끔 데몬이 죽어버린다.
이젠 설치 법을 다룬다.. 본 강좌를 쓰는 시점에서 테스트를 해 보고 올린 것이기 때문에 다른 버전은 호환되지 않을 수도 있다. 그러니 아래 나오는 버전을 맞추도록 한다.
1. 프로그램 다운로드
수정한프로그램(senator_1.0b3.tar.gz) <== 다운로드
- senator 홈페이지 방문. http://www.angelfire.com/linux/senator/ 여기 방문해서 자료를 받는다.. 현재 버전은 senator-1.0beta3.tar.gz 이다.
- 다음 필요한것은 netclass 0.2.7 이다. http://netclass.sourceforge.net/ 방문해서 위 버전의 netclass를 받는다. senator 를 설치하려면 꼭 필요하기 때문에 꼭 설치한다.
2. 압축 풀기
작업 디렉토리를 /root로 하겠다. netclass-0.2.7.tar.gz senator-1.0beta3.tar.gz 위 두 파일을 /root로 가져와서 압축을 풀어야 한다.
(1) netclass-0.2.7.tar.gz 설치 [root@test root]#tar xvfz netclass-0.2.7.tar.gz 이렇게 하면 다음 netclass 디렉토리가 생긴다. [root@test root]#cd netclass 간단하게 다음과 같이 실행한다. [root@test netclass]# ./configure && make && make install 이렇게 하면, 환경설정, 컴파일, 설치 까지 한줄에 끝이난다. 특별한 경우가 아니면 에러가 나지 않을것이다. 이렇게 하면 netclass 설치가 끝이난다.
(2) senator-1.0beta3.tar.gz 설치 [root@test root]# tar xvfz senator-1.0beta3.tar.gz 이렇게하면 다음 디렉토리가 생긴다. senator-1.0beta3 [root@test root]#cd senator-1.0beta3/ 지 이렇게 하였다면 이제 부터 고생 시작이다. senator 설명 파일을 보면 단순히 make 라고 치면 컴파일이 이루어 진다고 하는데.. 그건 아니였다.
% 본강좌에서 제공하는 파일을 받았다면 다음과정을 생략해도 무관한다.
윈도우에서 작업하고 올린건지 ^M 문자 때문에 컴파일 되지 않는다. 파일을 열어서 ^M을 제거하려면 하루 종일 걸린다. ftp 로 ascii 모드로 해서 전송해 버리면 없어진다.
다른 방법은 vi 에서 일괄적으로 지우는 방법 :%s/^M// 위와 같이 해야하는데 ^M을 입력하는 방법은 Ctrl + V , Ctrl + M 이렇게 누르면 ^M 이 입력된다. 다음 .. Makefile을 수정해 주어야 한다.
DEFS = -I$(incdir) LIBS = -lpthread -lnetclass
이렇게 되어있지만 좀전에 설치한 netclass 패스가 잡히지 않아서 컴파일 되지 않는다. 다음과 같이 바꾸어 주야한다.
DEFS = -I$(incdir) -I../netclass/src LIBS = -L../netclass/src -lnetclass -L/usr/lib -lpthread
추가된 부분은 -I../netclass/src 은 헤드파일의 경로이고, -L../netclass/src -lnetclass 이 부분은 라이브러리 파일의 경로이다.
위와같이 수정하고 난 뒤 make 명령어를 내린다. 에러 없이 컴파이이 되었다면, 레드헷 사용자라면, make install_redhat데비안 사용자라면, make install_debian 이렇게 설치를 한다.
2. 환경파일 설정 정상적으로 설치 되었다면, 컨피그 파일을 수정해 준다. 위치는 다음과 같다. [root@test senator-1.0beta3]# cat /etc/senator.conf # Senator config file # Copyright (c) 2002 anonymous author # # the config parser is case sensitive! # port number of the server portNumber 1755 <-- 이 부분이 포트가 들어가는 부분이다. (스트리밍 서버는 1755) # max client connection to prevent flooding maxConnections 15 <-- 최대 접속자 # root of the data files rootDirectory /home/doly/www <-- 동영상 파일이 위치할 경로 # the virtual filename of the status page # if left blank there will be no status # information made availble. Don't forget the / statusPageName /status.html <--- 상황을 볼 수 있는 가상파일
# below this line is the advanced config # please read the source code of more information # before changing anything # use HTTP stream protocol # # Mediaplayer supports both raw streaming and # and streaming using some sort of protocol # # If you want to use the HTTP stream protocol # you must identify your server with the # starting string "Cougar" # # Cougar is ofcourse (c) microsoft... hmmm # # valid types: # # true,1,yes,yeppers,go! # false,0,no,nope,bleuh # HTTPStreamProtocol yeppers <-- 그냥 놔 두면 된다.
# server identification string # # asfLinux, Cougarama, or any other # identifyAs Cougarama <-- 그냥 놔 두면 된다.( 바꾸면 서비스 안됨)
3. 테스트 앞에서도 언급했지만, 서비스용으로는 아직 부 적합 하다. 다음과 같이 테스트만으로 끝내길 바란다
브라우저의 url창에: mms://ip:포트번호/파일이름 예) mms://210.114.223.192:1755/우연.asf
[root@test senator-1.0beta3]# /usr/bin/senator -v -d
Senator 1.0beta2 asf video streamer Copyright (c) 2002, anonymous author server started (log begins) config file : /etc/senator.conf running at port: 1755 server running in non daemon mode installing signal handlers starting the stream server waiting for connection [67.78.24.20] client connected [67.78.24.20] client requested fileheader for : /우연.asf [67.78.24..20] sending client the HTTP 200 header 위와같이 접속 하고 끊어지고 상황을 볼 수있다.
4. 운영 프로그램이 아직 배타라서 운영하기는 권장하지 않고, 개인적으로 도시락 싸들고 다니면서 말리고 싶다. 하지만 꼭 원한다면, 운영 해 보도록 한다.
1. 시작 : /etc/rc.d/init.d/senator start 2. 종료 : /etc/rc.d/init.d/senator stop % 본 강좌에서 받은 파일로 설치하지 않았다면 위 과정에서 에러가 날 것이다. 스크립트를 수정하거나 본강좌에서 제공하는 것을 받아서 운영한다.
3. 운영 상황보기 앞에서 설정한 환경파일 (/etc/senator.conf)에서 가상 파일을 하나 정했을 것이다. 이 파일이 상황을 보여 주는 파일인데 다음과 같은 화면으로 상황을 볼 수있다. 
5. 마치며... 이 프로그램을 설치한다고 시간을 많이 허비했다. 허비한 시간이 아까워서 이렇게 남기고 나처럼 시간 허비하는 사람이 없기를 바라면서 이 강좌를 마무리 한다. 이 프로그램을 임시 서버에서 돌리기 때문에 언제 정지 할지 모르는 상황이다. 혹시 이 서버가 죽어 있고 , 꼭 테스트 해 보길 원한다면, 메일로 문의 바란다. 메일주소는 doly 엣 superuser.co.kr 이다. 메일 주소를 무단 수집해서 스팸메일을 보내는 이를 막기 위해서 위와 같이 표기했으며, 엣 부분은 @ 치환하면 된다. 이상... 수퍼유저 운영자 doly ... |