developerworks/Cloud

BigBlueButton 설치 및 설정.. 인수인계 버전

수상한 김토끼 2013. 5. 22. 11:06

 Big Blue Button

화상채팅 환경을 구성 해 주는 오픈소스 프로젝트입니다.

BigBlueButton : http://www.bigbluebutton.org/

BigBlueButton 위키 : https://code.google.com/p/bigbluebutton/wiki/InstallationUbuntu

 

리눅스 기반의 OS에서 동작하며 설치 후 간단한 설정만으로 동작합니다.

설치 내용

설치 전 제약사항은

1. 2 GB of memory (4 GB is better)

2. Dual-core 2.6 GHZ CPU (quad core is better)

3. Ports 80, 1935, 9123 accessible

4. Port 80 is not used by another application

5. 50G of free disk space (or more) for recordings

위의 다섯가지이며 추가로 JAVA_HOME을 요구합니다. (Tomcat6을 구동하는 것에 필요합니다.)

 

모든 작업은 root권한으로 수행하였으며 우분투의 시냅틱 패키지를 사용하여 설치하였습니다.

설치 전 locale UTF-8로 맞추어야 하며 jdk 설치 후 JAVA_HOME을 환경변수에 등록합니다.

 

우분투의 시냅틱 패키지를 사용하기위한 인증서를 생성합니다.

# Add the BigBlueButton key

wget http://ubuntu.bigbluebutton.org/bigbluebutton.asc -O- | sudo apt-key add -

 

BigBlueButton저장소를 시냅틱 패키지에 추가합니다.

# Add the BigBlueButton repository URL and ensure the multiverse is enabled

echo "deb http://ubuntu.bigbluebutton.org/lucid_dev_08/ bigbluebutton-lucid main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list

echo "deb http://us.archive.ubuntu.com/ubuntu/ lucid multiverse" | sudo tee -a /etc/apt/sources.list

 

저장소리스트를 새로고침 합니다.

apt-get update

 

시스템을 업그레이드 합니다.

apt-get dist-upgrade

 

루비설치를 위한 패키지들을 설치합니다.

apt-get install zlib1g-dev libssl-dev libreadline5-dev libyaml-dev build-essential bison checkinstall libffi5 gcc checkinstall libreadline5 libyaml-0-2

 

루비를 설치합니다.

install-ruby.sh 파일을 작성하여 설치하였습니다. 각각의 명령어를 순서대로 실행하여도 상관 없습니다.

install-ruby.sh 파일내용

#!/bin/bash

cd /tmp

wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz

tar xvzf ruby-1.9.2-p290.tar.gz

cd ruby-1.9.2-p290

./configure --prefix=/usr\

            --program-suffix=1.9.2\

            --with-ruby-version=1.9.2\

            --disable-install-doc

make

sudo checkinstall -D -y\

                  --fstrans=no\

                  --nodoc\

                  --pkgname='ruby1.9.2'\

                  --pkgversion='1.9.2-p290'\

                  --provides='ruby'\

                  --requires='libc6,libffi5,libgdbm3,libncurses5,libreadline5,openssl,libyaml-0-2,zlib1g'\

                  --maintainer=brendan.ribera@gmail.com

sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.2 500 \

                         --slave /usr/bin/ri ri /usr/bin/ri1.9.2 \

                         --slave /usr/bin/irb irb /usr/bin/irb1.9.2 \

                         --slave /usr/bin/erb erb /usr/bin/erb1.9.2 \

                         --slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.2

sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.9.2 500

 

install-ruby.sh파일에 실행권한을 부여

chmod +x install-ruby.sh

 

install-ruby.sh파일 실행

./install-ruby.sh

 

BigBlueButton 설치합니다.

apt-get install bigbluebutton

 

BigBlueButton의 데모 API를 설치합니다.

apt-get install bbb-demo

 

BigBlueButton 데모를 적용시키기위해 BigBlueButton을 재시작합니다.

bbb-conf --clean

 

BigBlueButton이 정상적으로 실행되는지 check합니다.

bbb-conf –check

 

Big Blue Button API

securitySalt 위치

   /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties

파일을 열어보면 다음과 같은 부분에서 수정이 가능합니다.

   securitySalt=<your_salt>

 

securitySalt를 사용하기 위해 호출명과 sha-1 체크섬을 만들어 줍니다.

예시 :

security salt : "639259d4-9dd8-4b25-bf01-95f9567eaf4b"

호출문 : "createname=Test+Meeting&meetingID=abc123&attendeePW=111222&moderatorPW=333444639259d4-9dd8-4b25-bf01-95f9567eaf4b"

호출문을 sha-1으로 변환합니다.

sha-1으로 변환 된 문장 :"1fcbb0c4fc1f039f73aa6d697d2db9ba7f803f17"

호출문에 sha-1으로 변환 된 문자을 checksum아래 부분에 붙혀줍니다.

완성된호출문: "name=Test+Meeting&meetingID=abc123&attendeePW=111222&moderatorPW=333444&checksum=1fcbb0c4fc1f039f73aa6d697d2db9ba7f803f17"

 

회의 생성

전달 된 매개 변수에 따라 bigbluebutton 회의를 만듭니다.

Resource URL :

http://127.0.0.1/bigbluebutton/api/create?[parameters]&checksum=[checksum]

parameters는 위의 호출문, checksum sha-1으로 변환 한 부분입니다.

호출 시 아래와 같은 응답을 받을 수 있습니다.

<response>

        <returncode>SUCCESS</returncode>

    <meeting>

        <meetingID>Test</meetingID>

        <createTime>1308591802</createTime>

        <attendeePW>ap</attendeePW>

        <moderatorPW>mp</moderatorPW>

        <hasBeenForciblyEnded>false</hasBeenForciblyEnded>

        <messageKey>createSuccess</messageKey>

        <message>Meeting has been create</message>

    </meeting>

</response>

 

회의 참여

전달 된 매개 변수에 지정된 회의에 사용자가 참여합니다.

http://127.0.0.1/bigbluebutton/api/join?[parameters]&checksum=[checksum]

 

회의 종료

강제로 회의를 종료하고 모든 참가자의 접속을 종료합니다.

http://127.0.0.1/bigbluebutton/api/end?[parameters]&checksum=[checksum]

호출 시 아래의 응답을 받을 수 있습니다.

<response>

   <returncode>SUCCESS</returncode>

   <messageKey>sentEndMeetingRequest</messageKey>

   <message>

   A request to end the meeting was sent. Please wait a few seconds, and then use the getMeetingInfo or isMeetingRunning API calls to verify that   it was ended.

   </message>

</response>

 

회의 정보 조회

이 호출은 참석자 목록뿐만 아니라 포함하여 회의의 모든 정보를 반환합니다.

http://127.0.0.1/bigbluebutton/api/getMeetingInfo?meetingID=test01&password=mp&checksum=1234

호출 시 아래의 응답을 받을 수 있습니다.

<response>

   <returncode>SUCCESS</returncode>

   <meetingName>Test</meetingName>

   <meetingID>test01</meetingID>

   <createTime>1315254777880</createTime>

   <voiceBridge>70775</voiceBridge>

   <attendeePW>ap</attendeePW>

   <moderatorPW>mp</moderatorPW>

   <running>true</running>

   <recording>false</recording>

   <hasBeenForciblyEnded>false</hasBeenForciblyEnded>

   <startTime>1315254785069</startTime>

   <endTime>0</endTime>

   <participantCount>1</participantCount>

   <maxUsers>20</maxUsers>

   <moderatorCount>1</moderatorCount>

   <attendees>

      <attendee>

         <userID>1</userID>

         <fullName>John Doe</fullName>

         <role>MODERATOR</role>

      </attendee>

   </attendees>

   <metadata/>

   <messageKey/>

   <message/>

</response>

 

전체 회의 목록 조회

이 호출은 서버에있는 모든 회의의 목록을 반환합니다

http://127.0.0.1/bigbluebutton/api/getMeetings?checksum=[checksum]

호출 시 아래의 응답을 받을 수 있습니다.

<response>

   <returncode>SUCCESS</returncode>

   <meetings>

      <meeting>

         <meetingID>test01</meetingID>

         <meetingName>Test</meetingName>

         <createTime>1315254777880</createTime>

         <attendeePW>ap</attendeePW>

         <moderatorPW>mp</moderatorPW>

         <hasBeenForciblyEnded>false</hasBeenForciblyEnded>

         <running>true</running>

      </meeting>

   </meetings>

</response>

 

이 호출회의 내용을 녹화합니다.

http://127.0.0.1/bigbluebutton/api/getRecordings?[parameters]&checksum=[checksum]

호출 시 아래의 응답을 받을 수 있습니다.

<response>

   <returncode>SUCCESS</returncode>

   <recordings>

      <recording>

         <recordID>183f0bf3a0982a127bdb8161-1308597520</recordID>

         <meetingID>CS101</meetingID>

         <name><![CDATA[On-line session for CS 101]]></name>

         <published>false</published>

         <startTime>34545465656</startTime>

         <endTime>34575565465</endTime>

         <metadata>

            <title><![CDATA[Test Recording]]></title>

            <subject><![CDATA[English 232 session]]></subject>

            <description><![CDATA[First Class]]></description>

            <creator><![CDATA[Fred Dixon]]></creator>

            <contributor><![CDATA[Richard Alam]]></contributor>

            <language><![CDATA[en_US]]></language>

         </metadata>

         <playback>

            <format>

               <type>simple</type>

               <url>http://server.com/simple/playback?recordID=183f0bf3a0982a127bdb8161-1...</url>

               <length>62</length>

            </format>

         </playback>

      </recording>

      <recording>

         <recordID>183f0bf3a0982a127bdb8161-13085974450</recordID>

         <meetingID>CS102</meetingID>

         ...

      </recording>

   </recordings>

   <messageKey/>

   <message/>

</response>