#!/bin/sh # # Startup script for the Apache Web Server # # chkconfig: 345 85 15 # description: Apache is a World Wide Web server. It is used to serve \ # HTML files and CGI. # processname: httpd # pidfile: /var/run/httpd.pid # config: /etc/httpd/conf/httpd.conf # Source function library. . /etc/rc.d/init.d/functions unset LS_COLORS KDE_DISPLAY BROWSER HELP_BROWSER GTK_RC_FILES XMODIFIERS unset COLORTERM DISPLAY LOGNAME SESSION_MANAGER KDE_INITIAL_DESKTOP unset TERM HOME USERNAME PWD ENV USER ### Hack for Status LYNX="lynx -dump" STATUSURL="http://localhost/server-status" STATUSURLPERL="http://localhost:8200/server-status" # Change the major functions into functions. moduleargs() { moduledir=/usr/lib/apache moduleargs= for module in ${moduledir}/*.so ; do if [ -x ${module} ] ; then module=`echo ${module} | awk '{ gsub(".*/",""); gsub("^mod_",""); gsub("^lib",""); gsub(".so$",""); print toupper($0)}'` moduleargs="${moduleargs} -DHAVE_$module" fi done echo ${moduleargs} } # Get the extra modules so only the main server gets them extramoduleargs() { extramoduledir=/usr/lib/apache-extramodules extramoduleargs= for extramodule in ${extramoduledir}/*.so ; do if [ -x ${extramodule} ] ; then extramodule=`echo ${extramodule} | awk '{ gsub(".*/",""); gsub("^mod_",""); gsub("^lib",""); gsub(".so$",""); print toupper($0)}'` extramoduleargs="${extramoduleargs} -DHAVE_$extramodule" fi done echo ${extramoduleargs} } ### Hacks for the apache + proxified apache-mod_perl # Assign all extra modules to both servers first APACHEXMODS=`extramoduleargs` PERLXMODS=`extramoduleargs` COMMONMODS=`moduleargs` #If both servers are installed, perl runs as a proxy #and has no extra modules if [ -x /usr/sbin/httpd -a -x /usr/sbin/httpd-perl ]; then DEFINE="-DPERLPROXIED" PERLXMODS="" fi PERLFILE="-f /etc/httpd/conf/httpd-perl.conf" ### ## Hack for ApacheJServ that takes forever to shut down and restart snooze() { for count in 1 2 3 4 5 6 7 8 9 ; do echo -n "."; sleep 1; done echo } conftest() { badconf=0 if [ -x /usr/sbin/httpd ]; then action "Checking configuration sanity for httpd: " \ /usr/sbin/httpd -t \ $DEFINE $APACHEXMODS $COMMONMODS badconf=$? fi if [ -x /usr/sbin/httpd-perl ]; then action "Checking configuration sanity for httpd-perl: " \ /usr/sbin/httpd-perl -t \ $PERLFILE $DEFINE $PERLXMODS $COMMONMODS [ $badconf = 0 ] && badconf=$? fi return $badconf } start() { for tries in 1 2 3; do if [ -x /usr/sbin/httpd-perl -a ! -e /var/run/httpd-perl.pid ]; then if [ $tries -eq 1 ]; then echo -n "Starting httpd-perl: ";fi daemon httpd-perl $PERLFILE $DEFINE $PERLXMODS $COMMONMODS echo for wait in 1 2 3 4 5;do if [ ! -e /var/run/httpd-perl.pid ]; then sleep 1;fi done fi if [ -x /usr/sbin/httpd -a ! -e /var/run/httpd.pid ]; then if [ $tries -eq 1 ]; then echo -n "Starting httpd: ";fi daemon httpd $DEFINE $APACHEXMODS $COMMONMODS echo for wait in 1 2 3 4 5;do if [ ! -e /var/run/httpd.pid ]; then sleep 1;fi done fi done touch /var/lock/subsys/httpd } stop() { if [ -x /usr/sbin/httpd-perl -a -e /var/run/httpd-perl.pid ]; then echo -n "Shutting down httpd-perl: " killproc httpd-perl echo rm -f /var/run/httpd-perl.pid fi if [ -x /usr/sbin/httpd -a -e /var/run/httpd.pid ]; then echo -n "Shutting down httpd: " killproc httpd echo if [ -e /usr/lib/apache-extramodules/mod_jserv.so ]; then snooze while [ -e /var/run/httpd.pid ]; do echo Trying harder snooze killproc httpd done fi rm -f /var/run/httpd.pid fi rm -f /var/lock/subsys/httpd } # See how we were called. case "$1" in start) start ;; stop) stop ;; extendedstatus) $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } ' echo echo -n "#######################################" echo "#######################################" if [ -x /usr/sbin/httpd -a -x /usr/sbin/httpd-perl ]; then $LYNX $STATUSURLPERL | awk ' /process$/ { print; exit } { print } ' echo echo -n "#######################################" echo "#######################################" fi ;; status) echo if [ -e /var/run/httpd.pid ]; then echo "Apache is running." echo "httpd: `pidof httpd`" echo fi if [ -e /var/run/httpd-perl.pid ]; then echo "Apache-mod_perl is running." echo "httpd-perl: `pidof httpd-perl`" echo fi if [ ! -e /var/run/httpd.pid -a ! -e /var/run/httpd-perl.pid ]; then echo "Apache is *not* running." echo fi echo "Use $0 extendedstatus for more information." echo ;; restart) stop start ;; update|condrestart) if [ -e /var/run/httpd.pid -o -e /var/run/httpd-perl.pid ]; then stop conftest || exit $? start fi ;; reload|graceful) if [ -e /usr/lib/apache-extramodules/mod_jserv.so ]; then stop start else if [ -x /usr/sbin/httpd -a -e /var/run/httpd-perl.pid ]; then echo -n "Reloading httpd-perl: " killproc httpd -USR1 echo fi if [ -x /usr/sbin/httpd -a -e /var/run/httpd.pid ]; then echo -n "Reloading httpd: " killproc httpd -USR1 echo fi fi ;; configtest) conftest exit $? ;; *) echo "Usage: $0 {start|stop|restart|reload/graceful|update|status|configtest}" exit 1 esac exit 0