--- /etc/init.d/apache2.orig	2011-09-26 07:18:36.000000000 +0900
+++ /etc/init.d/apache2	2011-10-15 09:02:34.000000000 +0900
@@ -114,6 +114,10 @@
 	return 1
 }
 
+apache_start() {
+	$APACHE2CTL start
+}
+
 apache_stop() {
 	if $APACHE2CTL configtest > /dev/null 2>&1; then
 		# if the config is ok than we just stop normaly
@@ -141,6 +145,33 @@
 	fi
 }
 
+apache_wait_start() {
+	apache_start
+
+	# wait until really started
+	i=0
+	while : ; do
+		PIDTMP=$(pidof_apache) || true
+		if kill -0 "${PIDTMP:-}" 2> /dev/null; then
+			PID=$PIDTMP
+		fi
+		if [ -n "${PID:-}" ]; then
+			break;
+		fi
+		if [ $i = '60' ]; then
+			break;
+		else
+			if [ $i = '0' ]; then
+				echo -n " ... waiting "
+			else
+				echo -n "."
+			fi
+			i=$(($i+1))
+			sleep 1
+		fi
+	done
+}
+
 apache_wait_stop() {
 	# running ?
 	PIDTMP=$(pidof_apache) || true
@@ -172,7 +203,7 @@
 case $1 in
 	start)
 		log_daemon_msg "Starting web server" "apache2"
-		if $APACHE2CTL start; then
+		if apache_wait_start; then
 			if check_htcacheclean ; then
 				log_progress_msg htcacheclean
 				start_htcacheclean || log_end_msg 1
@@ -242,7 +273,8 @@
 		if ! apache_wait_stop; then
                         log_end_msg 1 || true
                 fi
-		if $APACHE2CTL start; then
+		PID=$(pidof_apache) || true
+		if apache_wait_start; then
 			if check_htcacheclean ; then
 				start_htcacheclean || log_end_msg 1
 			fi
