spacepaste

  1.  
  2. #!/bin/bash
  3. ### BEGIN INIT INFO
  4. # Provides: httpd-avs
  5. # Required-Start: $local_fs $remote_fs $network $syslog
  6. # Required-Stop: $local_fs $remote_fs $network $syslog
  7. # Default-Start: 2 3 4 5
  8. # Default-Stop: 0 1 6
  9. # Short-Description: AVS
  10. # Description: Start/Stop Apache Virtual Servers
  11. ### END INIT INFO
  12. #
  13. # Platform: Ubuntu
  14. # update-rc.d: httpd-avs start 15 2 3 4 5 . stop 85 0 1 6 .
  15. # description: Apache is a World Wide Web server. It is used to serve \
  16. # HTML files and CGI.
  17. # processname: httpd-avs
  18. # Variables
  19. AVSDIR=/usr/local/avs
  20. HTTPD_AVS=httpd-avs
  21. HTTPD_PREFIX="httpd-"
  22. APACHECTL=bin/apache2ctl
  23. PS="/bin/ps -ef"
  24. GREP=/bin/grep
  25. KILL="/bin/kill -9"
  26. AWK=/usr/bin/awk
  27. LOGGER=/usr/bin/logger
  28. RM=/bin/rm
  29. # Functions
  30. # Start all servers
  31. START ()
  32. {
  33. # Disable regular apache
  34. /usr/sbin/service apache2 stop
  35. /usr/sbin/update-rc.d -f apache2 remove
  36. cd $AVSDIR
  37. for SITE in ${HTTPD_PREFIX}*;
  38. do
  39. echo "Starting $SITE..."
  40. $SITE/$APACHECTL start
  41. sleep 1
  42. # Check results
  43. $PS|$GREP -v $GREP|$GREP -q $SITE
  44. # Log failures to the syslog
  45. if [ ! "$?" = "0" ];
  46. then
  47. echo "Instance $SITE failed to start."
  48. $LOGGER -p local4.info "WARNING: httpd instance $SITE failed to start."
  49. else
  50. echo "Instance $SITE started."
  51. fi
  52. done
  53. }
  54. # Stop all servers
  55. STOP ()
  56. {
  57. cd $AVSDIR
  58. for SITE in ${HTTPD_PREFIX}*;
  59. do
  60. echo "Stopping $SITE..."
  61. $SITE/$APACHECTL stop
  62. if [ "$?" = "0" ];
  63. then
  64. echo "Instance $SITE stopped."
  65. else
  66. echo "Instance $SITE failed to stop."
  67. fi
  68. done
  69. # Check results
  70. echo "Checking for hung httpd processes..."
  71. sleep 5
  72. $PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP -q httpd
  73. # If there are hung httpd processes, kill them
  74. if [ "$?" = "0" ];
  75. then
  76. echo "Some httpd processes not stopping; killing them..."
  77. for PROCESS in "`$PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP httpd|$AWK '{print $2}'`";
  78. do
  79. $KILL $PROCESS
  80. done
  81. fi
  82. # Do a final check; log information to syslog either way
  83. $PS|$GREP -v $GREP|$GREP -v $HTTPD_AVS|$GREP -q httpd
  84. if [ "$?" = "0" ];
  85. then
  86. echo "Failed to kill all httpd instances."
  87. $LOGGER -p local4.info "NOTICE: Failed to kill all httpd instances."
  88. exit 1
  89. fi
  90. echo "All httpd instances stopped."
  91. $LOGGER -p local4.info "All httpd instances stopped."
  92. }
  93. # Script
  94. case "$1" in
  95. start)
  96. START
  97. ;;
  98. stop)
  99. STOP
  100. ;;
  101. restart)
  102. STOP
  103. START
  104. ;;
  105. *)
  106. echo "Usage: $0 [stop|start|restart]"
  107. ;;
  108. esac
  109.