123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #!/bin/bash
- # user can config the following configs, then package.
- INSTALL=/usr/local/srs
- ##################################################################################
- ##################################################################################
- ##################################################################################
- # discover the current work dir, the log and access.
- echo "argv[0]=$0"
- if [[ ! -f $0 ]]; then
- echo "directly execute the scripts on shell.";
- work_dir=`pwd`
- else
- echo "execute scripts in file: $0";
- work_dir=`dirname $0`; work_dir=`(cd ${work_dir} && pwd)`
- fi
- product_dir=$work_dir
- log="${work_dir}/logs/package.`date +%s`.log" && . ${product_dir}/scripts/_log.sh && check_log
- ret=$?; if [[ $ret -ne 0 ]]; then exit $ret; fi
- # check lsb_release
- ok_msg "check tools"
- lsb_release -v >/dev/null 2>&1; ret=$?
- if [[ $ret -ne 0 ]]; then failed_msg "no lsb_release, install: yum install -y redhat-lsb"; exit $ret; fi
- # user must stop service first.
- ok_msg "check previous install"
- if [[ -f /etc/init.d/srs ]]; then
- /etc/init.d/srs status >/dev/null 2>&1
- ret=$?; if [[ 0 -eq ${ret} ]]; then
- failed_msg "you must stop the service first: sudo /etc/init.d/srs stop";
- exit 1;
- fi
- fi
- ok_msg "previous install checked"
- # backup old srs
- ok_msg "backup old srs"
- install_root=$INSTALL
- install_bin=$install_root/objs/srs
- if [[ -d $install_root ]]; then
- version="unknown"
- if [[ -f $install_bin ]]; then
- version=`$install_bin -v 2>/dev/stdout 1>/dev/null`
- fi
-
- backup_dir=${install_root}.`date "+%Y-%m-%d_%H-%M-%S"`.v-$version
- ok_msg "backup installed dir, version=$version"
- ok_msg " to=$backup_dir"
- mv $install_root $backup_dir >>$log 2>&1
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "backup installed dir failed"; exit $ret; fi
- ok_msg "backup installed dir success"
- fi
- ok_msg "old srs backuped"
- # prepare files.
- ok_msg "prepare files"
- (
- sed -i "s|^ROOT=.*|ROOT=\"${INSTALL}\"|g" $work_dir/${INSTALL}/etc/init.d/srs
- ) >> $log 2>&1
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "prepare files failed"; exit $ret; fi
- ok_msg "prepare files success"
- # copy core files
- ok_msg "copy core components"
- (
- mkdir -p $install_root
- cp -r $work_dir/${INSTALL}/conf $install_root &&
- cp -r $work_dir/${INSTALL}/etc $install_root &&
- cp -r $work_dir/${INSTALL}/usr $install_root &&
- cp -r $work_dir/${INSTALL}/objs $install_root
- ) >>$log 2>&1
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "copy core components failed"; exit $ret; fi
- ok_msg "copy core components success"
- # install init.d scripts
- ok_msg "install init.d scripts"
- (
- rm -rf /etc/init.d/srs &&
- ln -sf $install_root/etc/init.d/srs /etc/init.d/srs
- ) >>$log 2>&1
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "install init.d scripts failed"; exit $ret; fi
- ok_msg "install init.d scripts success"
- # For systemctl
- if [[ -d /usr/lib/systemd/system ]]; then
- ok_msg "install srs.service for systemctl"
- (
- cp -f $install_root/usr/lib/systemd/system/srs.service /usr/lib/systemd/system/srs.service &&
- systemctl daemon-reload
- ) >>$log 2>&1
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "install srs.service for systemctl failed"; exit $ret; fi
- ok_msg "install srs.service for systemctl success"
- fi
- # install system service
- lsb_release --id|grep "CentOS" >/dev/null 2>&1; os_id_centos=$?
- lsb_release --id|grep "Ubuntu" >/dev/null 2>&1; os_id_ubuntu=$?
- lsb_release --id|grep "Debian" >/dev/null 2>&1; os_id_debian=$?
- lsb_release --id|grep "Raspbian" >/dev/null 2>&1; os_id_rasabian=$?
- if [[ 0 -eq $os_id_centos ]]; then
- ok_msg "install system service for CentOS"
- if [[ -d /usr/lib/systemd/system ]]; then
- systemctl enable srs
- else
- /sbin/chkconfig --add srs && /sbin/chkconfig srs on
- fi
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "install system service failed"; exit $ret; fi
- ok_msg "install system service success"
- elif [[ 0 -eq $os_id_ubuntu ]]; then
- ok_msg "install system service for Ubuntu"
- update-rc.d srs defaults
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "install system service failed"; exit $ret; fi
- ok_msg "install system service success"
- elif [[ 0 -eq $os_id_debian ]]; then
- ok_msg "install system service for Debian"
- update-rc.d srs defaults
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "install system service failed"; exit $ret; fi
- ok_msg "install system service success"
- elif [[ 0 -eq $os_id_rasabian ]]; then
- ok_msg "install system service for RaspberryPi"
- update-rc.d srs defaults
- ret=$?; if [[ 0 -ne ${ret} ]]; then failed_msg "install system service failed"; exit $ret; fi
- ok_msg "install system service success"
- else
- warn_msg "ignore and donot install system service for `lsb_release --id|awk '{print $3}'`."
- fi
- echo ""
- echo "see: https://github.com/ossrs/srs/wiki/v4_CN_LinuxService"
- echo "install success, you can start SRS on CentOS6:"
- echo -e "${GREEN} sudo /etc/init.d/srs start${BLACK}"
- echo "or CentOS7:"
- echo -e "${GREEN} sudo systemctl start srs${BLACK}"
- echo "srs root is ${INSTALL}"
- exit 0
|