<div dir="ltr"><div><div><div>Good Morning I'm a newbie to upstart trying to convert my /etc/init.d/apache script over to upstart i just want to make sure that im on the right track here is what ive done do far.<br></div>
<br><br></div>This is the Original Script <br><br><br><br>#!/bin/bash<br>### BEGIN INIT INFO<br># Provides: httpd-avs<br># Required-Start: $local_fs $remote_fs $network $syslog<br># Required-Stop: $local_fs $remote_fs $network $syslog<br>
# Default-Start: 2 3 4 5<br># Default-Stop: 0 1 6<br># Short-Description: AVS<br># Description: Start/Stop Apache Virtual Servers<br>### END INIT INFO<br>#<br># Platform: Ubuntu<br># update-rc.d: httpd-avs start 15 2 3 4 5 . stop 85 0 1 6 .<br>
# description: Apache is a World Wide Web server. It is used to serve \<br># HTML files and CGI.<br># processname: httpd-avs<br><br># Variables<br>AVSDIR=/usr/local/avs<br>HTTPD_AVS=httpd-avs<br>HTTPD_PREFIX="httpd-"<br>
APACHECTL=bin/apache2ctl<br>PS="/bin/ps -ef"<br>GREP=/bin/grep<br>KILL="/bin/kill -9"<br>AWK=/usr/bin/awk<br>LOGGER=/usr/bin/logger<br>RM=/bin/rm<br><br># Functions<br><br># Start all servers<br>START ()<br>
{<br> # Disable regular apache<br> /usr/sbin/service apache2 stop<br> /usr/sbin/update-rc.d -f apache2 remove<br><br> cd $AVSDIR<br> for SITE in ${HTTPD_PREFIX}*;<br> do<br> echo "Starting $SITE..."<br>
$SITE/$APACHECTL start<br> sleep 1<br><br> # Check results<br> $PS|$GREP -v $GREP|$GREP -q $SITE<br><br> # Log failures to the syslog<br> if [ ! "$?" = "0" ];<br>
then<br> echo "Instance $SITE failed to start."<br> $LOGGER -p <a href="http://local4.info">local4.info</a> "WARNING: httpd instance $SITE failed to start."<br>
else<br> echo "Instance $SITE started."<br> fi<br> done<br>}<br><br># Stop all servers<br>STOP ()<br>{<br> cd $AVSDIR<br> for SITE in ${HTTPD_PREFIX}*;<br>
do<br> echo "Stopping $SITE..."<br> $SITE/$APACHECTL stop<br> if [ "$?" = "0" ];<br> then<br> echo "Instance $SITE stopped."<br>
else<br> echo "Instance $SITE failed to stop."<br> fi<br> done<br><br> # Check results<br> echo "Checking for hung httpd processes..."<br>
sleep 5<br> $PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP -q httpd<br><br> # If there are hung httpd processes, kill them<br> if [ "$?" = "0" ];<br> then<br> echo "Some httpd processes not stopping; killing them..."<br>
for PROCESS in "`$PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP httpd|$AWK '{print $2}'`";<br> do<br> $KILL $PROCESS<br> done<br> fi<br>
<br> # Do a final check; log information to syslog either way<br> $PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP -q httpd<br> if [ "$?" = "0" ];<br> then<br> echo "Failed to kill all httpd instances."<br>
$LOGGER -p <a href="http://local4.info">local4.info</a> "NOTICE: Failed to kill all httpd instances."<br> exit 1<br> fi<br> echo "All httpd instances stopped."<br>
$LOGGER -p <a href="http://local4.info">local4.info</a> "All httpd instances stopped."<br>}<br><br># Script<br>case "$1" in<br> start)<br> START<br> ;;<br> stop)<br>
STOP<br> ;;<br> restart)<br> STOP<br> START<br> ;;<br> *)<br> echo "Usage: $0 [stop|start|restart]"<br> ;;<br>
esac<br><br><br><br><br><br><br></div>This is the Upstart Script <br><br><br># httpd-avs - Apache Virtual Server<br>#<br><br>description "AvS Apache Virtual Server"<br><br><br>start on filesystem or runlevel [2345]<br>
stop on runlevel [06]<br>respawn<br>respawn limit 10 5<br><br>pre-start script<br><br>AVSDIR=/usr/local/avs<br>HTTPD_AVS=httpd-avs<br>HTTPD_PREFIX="httpd-"<br>APACHECTL=bin/apache2ctl<br>PS="/bin/ps -ef"<br>
GREP=/bin/grep<br>KILL="/bin/kill -9"<br>AWK=/usr/bin/awk<br>LOGGER=/usr/bin/logger<br>RM=/bin/rm<br><br><br># Disable regular apache<br> /usr/sbin/service apache2 stop<br> /usr/sbin/update-rc.d -f apache2 remove<br>
<br> cd $AVSDIR<br> for SITE in ${HTTPD_PREFIX}*;<br> do<br> echo "Starting $SITE..."<br> $SITE/$APACHECTL start<br> sleep 1<br><br> # Check results<br>
$PS|$GREP -v $GREP|$GREP -q $SITE<br><br> # Log failures to the syslog<br> if [ ! "$?" = "0" ];<br> then<br> echo "Instance $SITE failed to start."<br>
$LOGGER -p <a href="http://local4.info">local4.info</a> "WARNING: httpd instance $SITE failed to start."<br> else<br> echo "Instance $SITE started."<br>
fi<br> done<br><br><br><br>end script<br><br><br>post-stop script <br><br>cd $AVSDIR<br> for SITE in ${HTTPD_PREFIX}*;<br> do<br> echo "Stopping $SITE..."<br> $SITE/$APACHECTL stop<br>
if [ "$?" = "0" ];<br> then<br> echo "Instance $SITE stopped."<br> else<br> echo "Instance $SITE failed to stop."<br>
fi<br> done<br><br> # Check results<br> echo "Checking for hung httpd processes..."<br> sleep 5<br> $PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP -q httpd<br><br>
# If there are hung httpd processes, kill them<br> if [ "$?" = "0" ];<br> then<br> echo "Some httpd processes not stopping; killing them..."<br> for PROCESS in "`$PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP httpd|$AWK '{print $2}'`";<br>
do<br> $KILL $PROCESS<br> done<br> fi<br><br> # Do a final check; log information to syslog either way<br> $PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP -q httpd<br>
if [ "$?" = "0" ];<br> then<br> echo "Failed to kill all httpd instances."<br> $LOGGER -p <a href="http://local4.info">local4.info</a> "NOTICE: Failed to kill all httpd instances."<br>
exit 1<br> fi<br> echo "All httpd instances stopped."<br> $LOGGER -p <a href="http://local4.info">local4.info</a> "All httpd instances stopped."<br><br><br>end script <br>
<br></div>