Results 1 to 3 of 3

Thread: Start, stop, restart Wowza with PHP

  1. #1

    Default Start, stop, restart Wowza with PHP

    Hello,

    I am attempting to use PHP to start, stop and restart Wowza.

    For doing this from the command line in Linux, I have the following script:

    #!/bin/bash
    #
    # Startup script for Wowza Media Server
    #
    # chkconfig: - 80 20
    # description: Wowza Media Server is a media server
    #
    #### BEGIN INIT INFO
    # Provides:          WowzaMediaServer
    # Required-Start:    $syslog $time $local_fs $remote_fs
    # Required-Stop:     $syslog $time $local_fs $remote_fs
    # Default-Start:     3 4 5
    # Default-Stop:      S 0 1 2 6
    # Short-Description: Wowza Media Server 3 Init Script
    # Description:       Wowza Media Server 3 Init Script
    ### END INIT INFO
    
    WMCOMMAND=${1}
    
    FUNCTIONS_EXIST=false
    if [ -f /etc/rc.d/init.d/functions ] ; then
         . /etc/rc.d/init.d/functions
         FUNCTIONS_EXIST=true
    fi
    if [ -f /etc/init.d/functions ] ; then
         . /etc/init.d/functions
         FUNCTIONS_EXIST=true
    fi
    
    if ! $FUNCTIONS_EXIST ; then
    failure() {
      return 0
    }
    success() {
      return 0
    }
    fi
    
    # define vars
    RETVAL=0
    WMSBASE_NAME=WowzaMediaServer
    #WMSCONFIG_SCRIPT="/etc/WowzaMediaServer/$WMSBASE_NAME.conf"
    WMSCONFIG_SCRIPT="/usr/local/WowzaMediaServer/bin/setenv.sh"
    WMSLICENSE_FILE="/usr/local/WowzaMediaServer/conf/Server.license"
    AMAZONEC2_INSTALL_SCRIPT="/usr/local/WowzaMediaServer/bin/AmazonEC2Install.sh"
    WMSDAEMON_CMD=/usr/bin/WowzaMediaServerd
    WMSPID_FILE="/var/run/$WMSBASE_NAME.pid"
    WMSLOCK_FILE="/var/run/$WMSBASE_NAME"
    if test -w "/var/lock/subsys" ; then
    	WMSLOCK_FILE="/var/lock/subsys/$WMSBASE_NAME"
    fi
    SHUTDOWN_WAIT=20
    
    [ -r "$WMSCONFIG_SCRIPT" ] && . "$WMSCONFIG_SCRIPT"
    
    if ! test -f "${WMSLICENSE_FILE}" ; then
            echo ""
            echo "ERROR: Missing license file: (${WMSLICENSE_FILE})"
            echo "You must first run Wowza Media Server 3 in "
            echo "standalone mode to enter serial number. Execute the "
            echo "following commands to run in standalone mode:"
            echo ""
            echo "cd /usr/local/WowzaMediaServer"
            echo "./startup.sh"
            echo ""
            exit 0
    fi
    
    testjava=`which ${_EXECJAVA} 2>/dev/null`
    if ! test -f "$testjava" ; then
    	echo ""
    	echo "ERROR: The Java command (${_EXECJAVA}) could not be found."
    	echo "Search path: $PATH"
    	echo "In most cases this problem can be fixed by adding a symbolic "
    	echo "link to the Java command in the /usr/bin directory. "
    	echo "To do this first execute the command \"which java\" to identify "
    	echo "the full path to the Java executable. Next, create a symbolic "
    	echo "link to this file with the command"
    	echo "\"ln -sf [path-to-java] /usr/bin/java\" where [path-to-java] is "
    	echo "the path returned by the \"which\" command."
    	echo ""
    	exit 0
    fi
    
    #
    start() {
    
    if [ -f $WMSPID_FILE ]; then
    	read kpid < $WMSPID_FILE
    	kill -9 $kpid
    	echo $"$WMSBASE_NAME is already running ($kpid): stopping"
    	rm -f $WMSPID_FILE
    fi
    
    echo -n $"$WMSBASE_NAME: starting"
    #$AMAZONEC2_INSTALL_SCRIPT
    $WMSDAEMON_CMD $WMSCONFIG_SCRIPT $WMSPID_FILE start >/dev/null 2>&1 &
    success "$WMSBASE_NAME startup"
    echo
    touch $WMSLOCK_FILE
    
    return 0
    }
    
    stop() {
    
    if [ -f $WMSPID_FILE ]; then
    
    	echo -n $"$WMSBASE_NAME: stopping"
    	read kpid < $WMSPID_FILE
    
    
    	$WMSDAEMON_CMD $WMSCONFIG_SCRIPT $WMSPID_FILE stop >/dev/null 2>&1 &
    
    	let kwait=$SHUTDOWN_WAIT
    	count=0;
    	until [ `ps -p $kpid | grep -c $kpid` = '0' ] || [ $count -gt $kwait ]
    	do
    		echo -n -e "\nwaiting for processes to exit";
    		sleep 1
    		let count=$count+1;
    	done
    
    	if [ $count -gt $kwait ]; then
    		echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
    		kill -9 $kpid
    	fi
    
    	rm -f $WMSPID_FILE
    	success "$WMSBASE_NAME shutdown"
    else
    	echo -n $"$WMSBASE_NAME: not running"
    fi
    echo
    rm -f $WMSLOCK_FILE
    return 0
    }
    
    localstatus() {
    if [ -f $WMSLOCK_FILE ]; then
    	echo "$WMSBASE_NAME started"
    else
    	echo "$WMSBASE_NAME stopped"
    fi
    RETVAL=0
    }
    
    # See how we were called.
    case "$WMCOMMAND" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    status)
    localstatus
    ;;
    restart)
    stop
    start
    ;;
    *)
    echo $"Usage: $WMSBASE_NAME {start|stop|restart|status}"
    exit 1
    esac
    
    exit $RETVAL
    --------------

    This script accepts a call ' /etc/init.d/WowzaMediaServer stop' to stop the server.

    When I am logged into Linux this works with no problem.

    However, when I use the PHP exec() function to STOP the server with the same script, I get the following response:

    [1] => ERROR: Missing license file: (/usr/local/WowzaMediaServer/conf/Server.license)
    [2] => You must first run Wowza Media Server 3 in
    [3] => standalone mode to enter serial number. Execute the
    [4] => following commands to run in standalone mode:
    [5] =>
    [6] => cd /usr/local/WowzaMediaServer
    [7] => ./startup.sh

    I'm not sure why I am getting this response when I attempt to STOP the server. I've only ever seen it when I attempted to start the server without the license file.

    Any ideas why executing the same call to stop the server would work when I'm logged into Linux but not from my PHP script?

    Is this the best way to start/stop/restart Wowza or is there a better way?

    take care,
    lee

  2. #2

    Default

    Hi,

    When running PHP not all environment variables are set or available. As PHP within a Web server, its not clear if this is your situation, will run with no privs then this might also be an issue.

    A more secure way to do this would be to have a crontab under root watching for a file placed by PHP which then executes based on the contents of the file. That way you do not have to give PHP root privs (which is dangerous).

    Andrew.

  3. Question

    Quote Originally Posted by andrew_k View Post
    Hi,

    When running PHP not all environment variables are set or available. As PHP within a Web server, its not clear if this is your situation, will run with no privs then this might also be an issue.

    A more secure way to do this would be to have a crontab under root watching for a file placed by PHP which then executes based on the contents of the file. That way you do not have to give PHP root privs (which is dangerous).

    Andrew.
    Hi
    what do you recommend for a similar task in Windows? I mean starting "Wowza Media Server" from a remote Window machine using perl or php.

Similar Threads

  1. Modifying Cloudfront Template to Add Module, Stop, Then Restart Wowza Server
    By nath2099 in forum Wowza Media Server 3 for Amazon EC2 Discussion
    Replies: 3
    Last Post: 10-05-2013, 04:15 PM
  2. HTTP streammanager start stop streamaction php woza API
    By miguelpalacios in forum General Forum
    Replies: 1
    Last Post: 05-26-2013, 04:55 PM
  3. Start/Stop Livestream recording PHP
    By oomworld in forum General Forum
    Replies: 7
    Last Post: 04-12-2013, 01:36 PM
  4. Replies: 1
    Last Post: 11-15-2012, 04:20 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •