Centos 5.2 üzerine Red5 Flash Server Kurulumu
Perşembe, Şubat 12, 2009 9:47| Red5, java ile yazılmış olan açık kodlu bir Flash Serverdır. Red5′ın kullanım alanları arasında, Audio/Video Streaming, Recording Client Streams, Live Stream Publishing gibi konular bulunuyor. Yani red5 ile Mp3 yada FLV formatındaki medya dosyalarının yayınını yapabiliyorsunuz ya da karşıdaki bir bilgisayarın kamerasından alınan görüntüyü sunucunuza FLV formatında kaydedebiliyorsunuz ve ya iki bilgisayar arasında Video Chat uygulaması gerçekleştirebiliyorsunuz. |
Bu yazıda, Red5′ın Centos 5.2 üzerine nasıl kurulabileceği ile ilgili notlar bulabilirsiniz.
Öncelikle, Red5 kurabilmek için sisteminizde öncesinden kurulu olması gereken bazı yazılımlar var:
subversion
java jdk
ant 1.7
Eğer, java jdk kurulu değilse, red5 kurulumu için yaptığım Java 1.6 JDK kurulumuna ait notları içeren şu dökümandan yararlanabilirsiniz: http://blog.cagriersen.net/2008/10/centos-uzerine-sun-java-kurulumu-jdk/ Subversion isimli paket red5′ın trunk versiyonunu çekmek için gereklidir. Bu yazıyı yazarken latest stable version’unda bulunan bir bugdan dolayı derleme işlemi gerçekleştirilemiyordu. Ama trunk version’da sorun yok.
Gerekli paketlerin kurulumu:
Subversion
Subversion’ın sisteminizde kurulu olup olmadığına yum kullanarak bakabilirsiniz.
# yum list |grep subversion |grep installed |
Eğer herhangi bir sonuç dönmezse aşağıdaki şekilde kurulum yapabilirsiniz. Eğer kurulu ise bu adımı geçebilirsiniz.
# yum install subversion |
Sun Java JDK
Subversion sisteme yüklendi ise bundan sonraki aşama Java JDK kurulumunu yapmaktır. CentOS ile birlikte gelen java sürümü JDK içermediği ve aynı durum SUN’dan indirebileceğiniz Java kurulum paketleri için de geçerli olduğundan dolayı custon bir Java kurulumu yapmanız gerekmektedir. Ben de red5 kurulumu yaparken JDK sorunu ile karşılaştım ve bu nedenle custom java kurulumu yaptım. Ayrıca, konu ile ilgili bir kurulum dökümanı da hazırladım. Dökümana http://blog.cagriersen.net/2008/10/centos-uzerine-sun-java-kurulumu-jdk/ sayfasından erişebilirsiniz. Yönergeleri takip edip Java kurulumunu yaptıktan sonra buraya geri dönüp red5 kurulumuna devam edebilirsiniz.
Ant 1.7
Aşağıdaki adımları izleyerek Ant 1.7.1 kurulumunu kolayca yapabilirsiniz.
/usr/local/src dizinine geçip paketi download edin.
# cd /usr/local/src # wget http://godel.cs.bilgi.edu.tr/apache/ant/binaries/apache-ant-1.7.1-bin.tar.gz |
Sıkıştırılmış dosyayı açın ve adı apache-ant-1.7.1 olarak gelen dizini yeniden isimlendirip /usr/local/ altına taşıyın. (ant’ın /usr/local dizininde bulunması şart değildir. İsterseniz farklı bir dizine de taşıyabilirsiniz.
# tar zxf apache-ant-1.7.1-bin.tar.gz # mv apache-ant-1.7.1 /usr/local/ant |
Sisteme, ant dizininin nerede durduğunu söyleyelim ve ant’ınhome dizininde bulunan ant binarysine /usr/bin/ altından erişilebilmesi için bir link oluşturalim.
# export ANT_HOME=/usr/local/ant # ln -s /usr/local/ant/bin/ant /usr/bin/ant |
Ant kurulumu bu kadar.
Red5 Kurulumu
Simdi gene /usr/local/src dizinine geçin ve red5′ı aşağıdaki komut ile sisteminize download edin.
# cd /usr/local/src # svn co http://red5.googlecode.com/svn/java/server/trunk red5 |
Not: Yukarıdaki komut red5′ın trunk versiyonunu download etmektedir. Normal şartlarda red5′ın sitesinde ki download sayfasından güncel sürümün tar ball’unu indirmeniz mümkün. Ancak ilgili sayfadaki son sürüm derleme aşamasında sorun çıkarıyor. Bu nedenle svn’den trunk versiyonu kurdum; sorun çıkarmadı.
Kodu download ettiyseniz derleme aşamasına geçebilirsiniz. Ama öncesinde sisteme Java’nın home dizinine ait yolu göstermeniz gerekiyor. (Ant’ın dizinini yukarıda göstermiştik). Java kurulumunu verdiğim adresten yaptıysanız Java Home dizini aşağıda belirtildiği gibi olacaktır. Ancak Java’yı kurarken başka bir path belirtmiş olabilirsiniz. bu durumda kendi path’i kendinizinki ile değiştirmeyi unutmayın.
# export JAVA_HOME=/usr/lib/jvm/java-1.6.0/ |
Java yolunu da export ettikten sonra aşağıdaki adımları takip ederek red5 kurulumunu yapabilirsiniz.
/usr/local/src dizininde bulunan red5 dizinini /usr/local dizini altına taşıyın.
# mv red5 /usr/local/ |
/usr/local/red5 dizinine geçip aşağıdaki komutları sırası ile vererek derleyin.
# cd /usr/local/red5 # /usr/local/ant/bin/ant prepare # /usr/local/ant/bin/ant dist |
Derleme işlemi sorunsuz olarak bittiyse, red5 server çalıştırılmaya hazır demekdir. dist dizinine geçip red5′ı çalıştırın.
# cd dist # sh red5.sh |
Herşey yolunda gittiyse, şu anda red5′ın çalışıyor olması gerekir. Kontrol etmek için aşağıdaki adımları uygulayabilirsiniz.
red5 http server 5080. ve rtmp servisi de 1935. portları dinler. ps ile ilgili portların dinlenip dinlenmediğini kontrol edebilirsiniz.
# netstat -an |grep 5080 tcp 0 0 :::5080 :::* LISTEN |
ve 1935
# netstat -an |grep 1935 tcp 0 0 :::1935 :::* LISTEN |
Eğer yukarıdaki komutların çıktılarında görüldüğü gibi bir çıktı alırsanız serverınız çalışıyor demektir.
İkinci olarak, red5 serverınızı yönetim panelini çağırarak test edebilirsiniz.
http://Server-IPsi:5080/
Eğer sayfa geliyorsa çalışıyor demektir. Ayrıca, gelen bu sayfada red5 demolarını yükleyebilir ya da görüntüleyebilirsiniz.
Son olarak, red5′i bir shell script dosyasını çağırmak sureti ile çalıştırdığımız için console’da ya da ssh ile yapılan bağlantılarda, command prompt geri gelmeyecektir. Bu nedenle red5”ı sisteme servis olarak eklemek gerekmektedir. Bu şekilde red5 sistemin açılışı sırasında da otomatik olarak çalışacaktır.
Red5′ın sisteme non root bir kullanıcı ile çalışrılacak şekilde servis olarak eklenmesi
Red5′in açılışta otomatik olarak çalıştırılması için http://weblogs.amtex.nl/index.php?blog=2&title=red5_start_stop_init_script_on_centos_re&more=1&c=1&tb=1&pb=1 yayınlanan bir init script’i var. Bu scripti kullanarak sistemi services red5 start / stop komutu ile yönetmek mümkün. Ancak, red5′ın root kullanıcısı ile çalıştırılması pek tavsiye edilmeyen bir şey ve bu scriptin orjinalinde yer alan “root ile çalıştırmama” kısımları işlev görmedi. Ben de scripti alıp üzerinde küçük değişiklikler yaptım. Ayrıca, scripti sistem servisi olarak eklemek için gerekli olan chkconfig satırları da yoktu; onları da ekledim. Böylece red5 açılışta da otomatik olarak non root bir kullanıcı ile çalıştırılmaya başladı. Script içeriğini ve yapılması gerekenler şöyle:
Aşağıdaki satırları copy paste usulü ile /etc/init.d dizini altında açacağınız red5 isimli bir dosyaya aktarın ve Red5 dizini, Java dizini ve Java version’u ile ilgili satırları kendinize göre düzenleyin. (Bu dökümandan yararlanarak kurulum yaptıysanız scriptteki dizin pathleri doğrudur.)
#!/bin/bash
#
# chkconfig: 2345 85 15
# description: Startup script for Red5 flash streaming server
#
# processname: red5
# pidfile: /var/run/red5.pid
# config: /etc/red5.conf
# Source function library.
. /etc/rc.d/init.d/functions
RED5_HOME=/usr/local/red5/
JAVA_HOME=/usr/lib/jvm/java-1.6.0/
JAVA_VERSION=1.6
JAVACMD=/usr/lib/jvm/java-1.6.0/bin/java
OPTIONS="-cp ${RED5_HOME}red5.jar:${RED5_HOME}conf:$CLASSPATH org.red5.server.Standalone"
DESCR="Red5 flash streaming server"
PID_FILE=/var/run/red5.pid
PID=`ps ax |grep java|grep red5|awk '{print $1;}'`
RETVAL=0
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
# Read config file if it is present.
if [ -r /etc/red5.conf ]
then
. /etc/red5.conf
fi
start() {
echo -n $"Starting $DESCR: "
RETVAL=$?
[ $RETVAL = 0 ] && touch /var/lock/subsys/red5 && echo $!>$PID_FILE && echo_success
echo -n "Starting Red5 Service"
echo -n " "
cd /usr/local/red5/dist
#./red5.sh &
su -p -s /bin/sh red5 -c ./red5.sh &
sleep 2
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
|
Script içerisinde non-root user olarak kullanılan red5 isimli bir kullanıcıya ihtiyacımız var. Aşağıdaki komutla açalım. (Herhangi birinin sisteme o user ile bağlanamaması için nologin parametresi ile açın.)
# useradd -s /sbin/nologin red5 |
red5 scriptine ilgili yetkileri verin ayrıca, red5 dizininin sahibini red5 kullanıcısı yapın.
# chmod 700 red5 # chown -fR red5 /usr/local/red5 |
Şimdi, red5′ı servis olarak ve level 2, 3, 4 ve 5′de otomatik start edilmesi için sisteme ekleyin.
# chkconfig --add red5 # chkconfig --level 2345 red5 on |
Herşey yolunda gittiyse, chkconfig –list |grep red5 dediğiniz zaman aşağıdaki gibi bir çıktı almanız gerekir.
# chkconfig --list |grep red5 red5 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
Artık, red5 her sistem açılışında otomatik olarak başlatılacak. Eğer “red5 service start” komutunu verirseniz de servis start edilir. Burada dikkat edilmesi gereken bir nokta, servisin başlatılması sırasında, debug bilgileri ekrana basıldığından dolayo promptun düşmemesidir. Tekrar komut satırına düşmek için ctrl + c yapabilirsiniz. Servis arka planda çalışmaya devam edecektir.
Son olarak Sisteminizi restart edin ve red5′ın çalışıp çalışmadığını kontrol edin. Nonroot olarak çalışan red5 prosesini reboot sonrası ps aux |grep red5 komutu ile görüntülerseniz aşağıdaki gibi bir sonuç almanız gerekir.
root 2783 0.0 0.4 5899 0119 pts S 00:52 0:00 su -p -s /bin/sh red5 -c ./red5.sh red5 2785 1.0 7.0 20929 43540 ? Esl 00:52 0:08 /usr/bin/java -Dpythonvs......... |
Yukardaki ps çıktısının ilk satırında, ./red5.sh shell scriptinin root tarafından red5 isimli non-root kullanıcısına düşüldükten sonra çalıştırıldığı; ikinci satırda ise red5 isimli kullanıcının asıl process’i çalıştırdığını görebilirsiniz.
Kaynak: http://osflash.org/red5
