Suche Apache-Startskript für Debian

belinea

Registered User
Wo bekomme ich denn ein Startskript her dass ich in die /etc/init.d kopieren muss damit der Apache gleich beim booten startet?
 
Für Apache2:
Code:
#!/bin/sh -e
#
# apache2		This init.d script is used to start apache2.
#			It basically just calls apache2ctl.

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"

#[ `ls -1 /etc/apache2/sites-enabled/ | wc -l | sed -e 's/ *//;'` -eq 0 ] && \
#echo "You haven't enabled any sites yet, so I'm not starting apache2." && \
#echo "To add and enable a host, use addhost and enhost." && exit 0

#edit /etc/default/apache2 to change this.
NO_START=0

set -e
if [ -x /usr/sbin/apache2 ] ; then
	HAVE_APACHE2=1
else
	exit 0
fi

test -f /etc/default/rcS && . /etc/default/rcS
test -f /etc/default/apache2 && . /etc/default/apache2
if [ "$NO_START" != "0" -a "$1" != "stop" ]; then 
        [ "$VERBOSE" != no ] && echo "Not starting apache2 - edit /etc/default/apache2 and change NO_START to be 0.";
        exit 0;
fi

APACHE2="$ENV /usr/sbin/apache2"
APACHE2CTL="$ENV /usr/sbin/apache2ctl"

apache_stop() {
	PID=""
	PIDFILE=""
	# let's try to find the pid file
	# apache2 allows more than PidFile entry in the config but only
	# the last found in the config is used
	for PFILE in `grep ^PidFile /etc/apache2/* -r | awk '{print $2}'`; do
		PIDFILE="$PFILE"
		if [ -e "$PIDFILE" ]; then
			PID=`cat $PIDFILE`
		fi
	done

	if `apache2 -t > /dev/null 2>&1`; then
		# if the config is ok than we just stop normaly

		if [ -e "$PIDFILE" ]
		then
			PID=`cat $PIDFILE`

			$APACHE2 -k stop

			CNT=0
			while [ 1 ]
			do
				CNT=$(expr $CNT + 1)
		
				[ ! -d /proc/$PID ] && break

				if [ $CNT -gt 60 ]
				then
					echo " ... failed!"
					echo "Apache2 failed to honor the stop command, please investigate the situation by hand."
					exit 1
				fi

				sleep 1
			done
		else
			echo -n " ... no pidfile found! not running?"
		fi

	else
		# if we are here something is broken and we need to try
		# to exit as nice and clean as possible

		# if pidof is null for some reasons the script exits automagically
		# classified as good/unknown feature
		PIDS=`pidof apache2` || true

		REALPID=0
		# if there is a pid we need to verify that belongs to apache2
		# for real
		for i in $PIDS; do
			if [ "$i" = "$PID" ]; then
				# in this case the pid stored in the
				# pidfile matches one of the pidof apache
				# so a simple kill will make it
				REALPID=1
			fi
		done

		if [ $REALPID = 1 ]; then
			# in this case it is everything nice and dandy
			# and we kill apache2
			kill $PID
		else
			# this is the worst situation... just kill all of them
			#for i in $PIDS; do
			#	kill $i
			#done
			# Except, we can't do that, because it's very, very bad
			echo " ... failed!"
			echo "You may still have some apache2 processes running.  There are"
 			echo "processes named 'apache2' which do not match your pid file,"
			echo "and in the name of safety, we've left them alone.  Please review"
			echo "the situation by hand."
		fi
	fi
}

# Stupid hack to keep lintian happy. (Warrk! Stupidhack!).
case $1 in
	start)
		[ -f /etc/apache2/httpd.conf ] || touch /etc/apache2/httpd.conf
		#ssl_scache shouldn't be here if we're just starting up.
		[ -f /var/run/apache2/ssl_scache ] && rm -f /var/run/apache2/*ssl_scache*
		echo -n "Starting web server: Apache2"
		$APACHE2CTL startssl
		echo "."
	;;
	stop)
		echo -n "Stopping web server: Apache2"
		apache_stop
		echo "."
	;;
	reload)
		echo -n "Reloading web server config..."
		$APACHE2CTL graceful $2 
		echo "done."
	;;
	restart | force-reload)
		echo -n "Forcing reload of web server: Apache2"
		apache_stop
		$APACHE2CTL startssl
		echo "."
	;;
	*)
		echo "Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload"
	;;
esac
 
belinea said:
damit der Apache gleich beim booten startet?
Dafür mußt Du auch folgendes ausführen:
Code:
update-rc.d apache2 defaults
Das erstellt die 'Autostart'-Funktion. (was für ein krankes Wort)

huschi.
 
Habe von bei dem Skript die Pfade angepasst und dann "update-rc.d apache2 defaults" ausgeführt.

Apache2 startet nicht nach reboot des Servers. Mann, mann mann ist das kompliziert. :confused:
 
Habs geschafft, ;)

Habe einfach in /etc/init.d/apache2 foglende Zeile gepackt:

/usr/local/apache2/bin/apachectl start

@djrick: Warum so ein kompliziertes Skript wenn´s einfach auch geht? Hat meine Variante irgednwelche Nachteile?
 
belinea said:
@djrick: Warum so ein kompliziertes Skript wenn´s einfach auch geht? Hat meine Variante irgednwelche Nachteile?
Und was ist wenn du ihn mal stoppen oder reloaden willst? :) Dann hättest du das komplizierte Script gebraucht :)
 
Schau doch einmal in die Runlevel "/etc/rc*.d/" da müsste ein Verweis auf deine Apache-Startdatei aus "/etc/init.d/" stehen (muss nicht zwangsweise ein Link sein).
Nicht? Dann kannst Du im Runlevel 2 "/etc/rc2.d/" ja einen symbolischen Link auf deine Apache-Startdatei aus "/etc/init.d/" legen. Wichtig hierbei ist, dass dieser Link mit einem großen "S" beginnt, also zum Beispiel
Code:
ln -s S78apache /etc/init.d/apache
Ein Verweis nach "/etc/init.d/apache start" müsste auch gehen, allerdings dürfte das erste Beispiel schon funktionieren.
Hast das Startskript einfach so übernommen oder hast Du es vorher kontrolliert? Manchmal stimmen die Pfade nicht.
 
Back
Top