#!/bin/bash # Startup script for the Apache Web Server # chkconfig: 345 85 15 # Description: Startup script for Apache webserver on Debian. Place in /etc/init.d and # run 'update-rc.d -f httpd defaults', or use the appropriate command on your # distro. For CentOS/Redhat run: 'chkconfig --add httpd' ### BEGIN INIT INFO # Provides: httpd # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts Apache Web Server # Description: starts Apache Web Server ### END INIT INFO # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # Apache control script designed to allow an easy command line interface # to controlling Apache. Written by Marc Slemko, 1997/08/23 # # The exit codes returned are: # XXX this doc is no longer correct now that the interesting # XXX functions are handled by httpd # 0 - operation completed successfully # 1 - # 2 - usage error # 3 - httpd could not be started # 4 - httpd could not be stopped # 5 - httpd could not be started during a restart # 6 - httpd could not be restarted during a restart # 7 - httpd could not be restarted during a graceful restart # 8 - configuration syntax error # # When multiple arguments are given, only the error from the _last_ # one is reported. Run "apachectl help" for usage info # ACMD="$1" ARGV="$@" # # |||||||||||||||||||| START CONFIGURATION SECTION |||||||||||||||||||| # -------------------- -------------------- # # the path to your httpd binary, including options if necessary apache_location=/usr/local/apache HTTPD=${apache_location}/bin/httpd # # pick up any necessary environment variables if test -f ${apache_location}/bin/envvars; then . ${apache_location}/bin/envvars fi # the default pid file path httpd_pid_file_path=${apache_location}/logs/httpd.pid # # a command that outputs a formatted text version of the HTML at the # url given on the command line. Designed for lynx, however other # programs may work. LYNX="lynx -dump" # # the URL to your server's mod_status status page. If you do not # have one, then status and fullstatus will not work. STATUSURL="http://localhost:80/server-status" # # Set this variable to a command that increases the maximum # number of file descriptors allowed per child process. This is # critical for configurations that use many file descriptors, # such as mass vhosting, or a multithreaded server. ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`" # -------------------- -------------------- # |||||||||||||||||||| END CONFIGURATION SECTION |||||||||||||||||||| # Set the maximum number of file descriptors allowed per child process. if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then $ULIMIT_MAX_FILES fi ERROR=0 if [ "x$ARGV" = "x" ] ; then ARGV="-h" fi case $ACMD in start|stop|restart|graceful|graceful-stop) $HTTPD -k $ARGV ERROR=$? ;; startssl|sslstart|start-SSL) echo The startssl option is no longer supported. echo Please edit httpd.conf to include the SSL configuration settings echo and then use "apachectl start". ERROR=2 ;; configtest) $HTTPD -t ERROR=$? ;; status) # First, check to see if pid file exists if test -s "$httpd_pid_file_path" ; then read httpd_pid < "$httpd_pid_file_path" if kill -0 $httpd_pid 2>/dev/null ; then echo "httpd (pid $httpd_pid) is running" ERROR=0 else echo "httpd is not running, but PID file ($httpd_pid_file_path) exists" ERROR=1 fi else # Try to find appropriate httpd process httpd_pid=$(pidof httpd) # test if multiple pids exist pid_count=$(echo $httpd_pid | wc -w) if test $pid_count -gt 1 ; then echo "httpd is running but PID file ($httpd_pid_file_path) could not be found" ERROR=4 elif test -z $httpd_pid ; then echo "httpd is not running" ERROR=3 fi fi ;; fullstatus) $LYNX $STATUSURL ;; *) echo $"Usage: $0 {start|stop|restart|graceful|graceful-stop|configtest|status|fullstatus}" ERROR=1 ;; esac exit $ERROR