2009年8月16日 星期日

在Redhat 8.0 上安裝 Red5

以下是我的 Red 5 安裝經驗,每個人的環境可能有所不同,所以僅供參考~
作業系統:RedHat 8.0
Java SDK 1.6.0_14
Apach ANT 1.7.1
Red5 0.7.0

Step1:安裝 Java SDK

在 http://java.sun.com 找到了 j2se sdk,有二種版本,一為 Binary,一為 rpm,選擇下載了 rpm 格式的 jdk,檔名是 jdk-6u14-linux-i586-rpm.bin,忘了在 redhat 上直接下載,只好再用 WinSCP 將檔案傳至 RedHat 8 伺服器上。

這是一個自解壓縮檔,先做 chmod
#chmod a+x jdk-6u14-linux-i586-rpm.bin
執行解壓縮
#./jdk-6u14-linux-i586-rpm.bin
解壓縮完後產生七個 rpm 檔
jdk-6u14-linux-i586.rpm
sun-javadb-client-10.4.2-1.1.i386.rpm
sun-javadb-common-10.4.2-1.1.i386.rpm
sun-javadb-core-10.4.2-1.1.i386.rpm
sun-javadb-demo-10.4.2-1.1.i386.rpm
sun-javadb-docs-10.4.2-1.1.i386.rpm
sun-javadb-javadoc-10.4.2-1.1.i386.rpm

照字面上來看,應該安裝 jdk-6u14-linux-i586.rpm 就可以了吧?
#rpm –iv jdk-6u14-linux-i586.rpm
依照 rpm 預設,java sdk 的安裝路徑會在 /usr/java 下,修改 java 環境配置,在 /etc/profile 文件尾加入以下配置
JAVA_HOME=/usr/java/jdk1.6.0_14
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:&JAVA_HOME/jre/lib
export JAVA_HOME
export PATH
export CLASSPATH
存檔後離開,執行 source /etc/profile 讓它立即生效
#source /etc/profile
在 shell 下執行一小段 java 程式測試有無問題,先用 vi 寫一個 test.java
public class test{
public static void main(String[] args){
 System.out.println("Hello World!");
 }
}
存檔離開然後執行javac 產生 test.class
#javac test.java
執行 java test ,shell 印出 Hello World 時即表示環境無誤,Java 可以正常運作
#java test

Step2:安裝 Apach ANT

只找到 Binary 型式的安裝檔,將就著用吧,其實 ant 並不需要什麼安裝,解壓縮後設置好環境變數即可使用。

先下載檔案回來
#wget http://ftp.mirror.tw/pub/apache/ant/binaries/apache-ant-1.7.1-bin.tar.gz
解壓縮
#tar zxf apache-ant-1.7.1-bin.tar.gz
ls 一下,檔案已被解壓縮至 apache-ant-1.7.1 目錄下了,刪除原來的壓縮檔
#rm apache-ant-1.7.1-bin.tar.gz
再檢查一下,發現apache-ant-1.7.1 位於 /root 目錄下,不太好,還是把它移到 /usr/local 下比較好
#mv apache-ant-1.7.1 /usr/local
再來就是設置環境變數,一樣打開 /etc/profile 在文件尾加上
export ANT_HOME=/usr/local/apache-ant-1.7.1
export PATH=$PATH:/usr/local/apache-ant-1.7.1/bin
存檔後離開,執行 source /etc/profile 讓它立即生效
#source /etc/profile
測試 ant 是否安裝成功
#ant
若出現下列字串,即表示 Apache ANT 環境設置成功
Buildfile: build.xml does not exist!
Build failed

Step 3:安裝 Red5

下載 Red5 v0.7.0 Final,由於這是一個原始碼包,為了方便管理,我把它下載到 /usr/src 這個目錄內
#cd /usr/src
#wget http://red5.nl/installer/red5-0.7.0.tar.gz
解壓縮
#tar zxvf /root/src/red5-0.7.0.tar.gz
解壓縮完成,在 /usr/src/red5 目錄下輸入ant自動編譯
#ant
疑,有 error 發生,編譯失敗==
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] ::         UNRESOLVED DEPENDENCIES      ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: jmx#jmxtools;: not found
[ivy:resolve] :: jmx#jmxremote;: not found
[ivy:resolve] :: jmx#rmissl;: not found
[ivy:resolve] :: javax#jpda;: not found
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
找了一整天,終於找到問題所在了,原來是 ivysetting.xml 內的問題
<ivysettings>
 <settings defaultResolver="local"/>
  <resolvers>
   <chain name="local">
    <filesystem name="default">
     <ivy pattern="${user.home}/.ivy2/cache/[organisation]/[module]/ivys/ivy-[revision].xml"/>
     <artifact pattern="${ivy.lib.dir}/[artifact](-[revision]).[ext]" />
    </filesystem>
   <url name="googlecode">
    <artifact pattern="http://red5.googlecode.com/svn/repository/[artifact](-[revision]).[ext]" />
    <artifact pattern="http://red5.googlecode.com/svn/repository/[organisation]/[artifact](-[revision]).[ext]" />
   </url>    
   </chain>
</resolvers>
</ivysettings>
行號10-11的 http 根本就是個無效的鏈結,把它改成 http://red5.googlecode.com/svn/java/server/branches/clustering/lib/ 就搞定了,另外,我下載回來的Red5-0.7.0壓縮包內根本沒有ivysettings.xml這個檔案,還得到這裡 http://red5.googlecode.com/svn/java/server/tags/0_7_0/ 去下載回來修改才行。

重新編譯
#ant

dist:
[copy] Copying 63 files to /usr/src/red5/dist/lib
[copy] Copying 27 files to /usr/src/red5/dist/conf
[copy] Copying 1 file to /usr/src/red5/dist/webapps
[copy] Copying 7 files to /usr/src/red5/dist

BUILD SUCCESSFUL
Total time: 2 minutes 21 seconds
呼,總算成功了。
重新編譯過後的檔案都在 dist 下

再來修改 red5 設定檔 ( 如果是使用PPPoe方式架站的話,底下內容不需要更改 )
#vi /usr/src/red5/dist/conf/red5.properties
找到 #HTTP 這一行,修改底下的
http.host=0.0.0.0
改成機器的實際IP(在0.9.0版本中反而不需要更改,否則會有問題)

找到 #RTMP 這一行,修改底下的
rtmp.host=0.0.0.0(在0.9.0版本中反而不需要更改,否則會有問題)
改成機器的實際 IP

存檔,然後啟動 red5
#sh red5.sh

在 windows 上用瀏覽器瀏覽 http://ip:5080
OK~順利在瀏覽器上看到 Red5 的 Test Page 了,安裝成功了

step 4:將 Red5 變更為系統服務

很奇怪,Red5 並沒有提供安裝成系統服務的選項,網路上則有些先進提供了以下的參考做法:
在 /etc/init.d 目錄下建立一個名為 red5 的檔案,以下為檔案內容,也可以從這裡下載。
#!/bin/sh
#
# Startup script for Red5 flash streaming server
#
# chkconfig: 345 81 81
# description: RED5 by java
#
# processname: java (unfortunately)
# pidfile: /var/run/red5.pid
# config: /etc/red5.conf

# Source function library.

. /etc/rc.d/init.d/functions

PID_FILE=/var/run/red5.pid

#PID=`ps ax |grep java|grep red5|awk '{print $1;}'`
#如果上面的指令秀不出PID,請改用下一行
PID=`ps axw|grep java|grep red5|awk '{print $1;}'`

RETVAL=0

start() {
echo -n $"Starting $DESCR: "
# daemon java $OPTIONS > /dev/null 2>&1 &

export ANT_HOME=/usr/ant
export JAVA_HOME=/usr/java
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

exec $JAVA_HOME/bin/java -Djava.security.manager -Djava.security.policy=/opt/red5/conf/red5.policy -cp /opt/red5/red5.jar:conf:/opt/red5/conf org.red5.server.Standalone > /dev/null 2>&1 & RETVAL=$?

[ $RETVAL = 0 ] && touch /var/lock/subsys/red5 && echo $!>$PID_FILE && echo_success
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $DESCR: "
#killproc $PID_FILE
[[ $PID != "" ]] && success && kill $PID || failure
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/red5 $PID_FILE
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 3
start
;;
*)
echo $"Usage: $DESCR {start|stop|restart}"
exit 1
esac

exit $RETVAL
部份內容,必需視你的實際目錄更改,( 我覺得原作者設定的路徑看起來好像很專業,於是我也把 /usr/src/red5/dist 目錄移動成 /opt/red5 )存檔後執行下列動作:

變更檔案權限為可執行
#chmod 755 red5
將此執行檔加入系統服務中
#chkconfig --add red5
如此即可讓 red5 在系統開機後自動執行,也可以使用以下指令開啟或關閉服務
#sh /etc/init.d/red5 start
#sh /etc/init.d/red5 stop
#sh /etc/init.d/red5 restart
重新開機,測試一下,完工,大功告成~

沒有留言:

張貼留言