[Groonga-commit] groonga/groonga [master] rpm centos: add groonga-httpd init script

Back to archive index

HAYASHI Kentaro null+****@clear*****
Tue Sep 4 13:16:39 JST 2012


HAYASHI Kentaro	2012-09-04 13:16:39 +0900 (Tue, 04 Sep 2012)

  New Revision: f766aa87abe030c75b762605921799c8f42d0d1e
  https://github.com/groonga/groonga/commit/f766aa87abe030c75b762605921799c8f42d0d1e

  Log:
    rpm centos: add groonga-httpd init script

  Added files:
    data/init.d/redhat/groonga-httpd
    data/init.d/redhat/sysconfig/groonga-httpd
  Modified files:
    data/init.d/redhat/Makefile.am
    data/init.d/redhat/sysconfig/Makefile.am

  Modified: data/init.d/redhat/Makefile.am (+1 -1)
===================================================================
--- data/init.d/redhat/Makefile.am    2012-09-04 13:11:51 +0900 (58bba48)
+++ data/init.d/redhat/Makefile.am    2012-09-04 13:16:39 +0900 (da8d336)
@@ -1,6 +1,6 @@
 SUBDIRS = sysconfig
 
-scripts = groonga
+scripts = groonga groonga-httpd
 
 if REDHAT_PLATFORM
 initdir = $(sysconfdir)/init.d

  Added: data/init.d/redhat/groonga-httpd (+170 -0) 100755
===================================================================
--- /dev/null
+++ data/init.d/redhat/groonga-httpd    2012-09-04 13:16:39 +0900 (be5e883)
@@ -0,0 +1,170 @@
+#!/bin/bash
+#
+# /etc/rc.d/init.d/groonga-httpd
+#
+# chkconfig: - 80 20
+# description: A full-text search engine and column store.
+# processname: groonga-httpd
+# config: /etc/sysconfig/groonga-httpd
+# pidfile: /var/run/groonga/groonga-httpd.pid
+#
+### BEGIN INIT INFO
+# Provides:          groonga-httpd
+# Default-Stop:      0 1 6
+# Required-Start:    $remote_fs
+# Required-Stop:     $remote_fs
+# Short-Description: groonga-httpd's init script
+# Description:       groonga-httpd is a HTTP server for groonga.
+### END INIT INFO
+
+# Source function library.
+. /etc/init.d/functions
+
+name="groonga-httpd"
+prog="groonga-httpd"
+GROONGA_HTTPD=/usr/sbin/$prog
+CURL=/usr/bin/curl
+USER=groonga
+GROUP=groonga
+DATABASE=/var/lib/groonga/db/db
+ADDRESS=127.0.0.1
+PORT=10041
+PIDFILE=/var/run/groonga/$prog.pid
+OLD_PIDFILE=/var/run/groonga/$name.pid.oldbin
+PROTOCOL=http
+ERROR_LOG_PATH=/var/log/groonga/httpd/error.log
+QUERY_LOG_PATH=/var/log/groonga/httpd/access.log
+OPTION_ARGS=""
+TIMEOUT=3
+
+if [ -f /etc/sysconfig/$name ]; then
+	. /etc/sysconfig/$name
+fi
+
+DAEMON_ARGS=""
+GROONGA_ARGS=""
+
+if [ -n "${USER}" ]; then
+	if ! getent passwd | grep -q "^${USER}:"; then
+		echo "$0: user for running $prog doesn't exist: ${USER}" >&2
+		exit 1
+	fi
+	if [ -n "${PIDFILE}" ]; then
+		mkdir -p `dirname ${PIDFILE}`
+		chown -R ${USER} `dirname ${PIDFILE}`
+	fi
+fi
+
+if [ -n "${PIDFILE}" ]; then
+	mkdir -p $(dirname ${PIDFILE})
+	if [ -n "${USER}" ]; then
+		chown -R ${USER} $(dirname ${PIDFILE})
+	fi
+fi
+
+if [ -z "${DATABASE}" ]; then
+	echo "$0: DATABASE should not be empty" >&2
+	exit 1
+fi
+
+if [ ! -f "${DATABASE}" ]; then
+	mkdir -p $(dirname ${DATABASE})
+	if [ -n "${USER}" ]; then
+		chown -R ${USER} $(dirname ${DATABASE})
+	fi
+	if [ -n "${GROUP}" ]; then
+		chgrp -R ${GROUP} $(dirname ${DATABASE})
+	fi
+fi
+
+RETVAL=0
+
+send_command() {
+	command=$1
+	if [ "$command" = "status" ]; then
+		$CURL --max-time $TIMEOUT "http://${ADDRESS}:${PORT}/d/${command}"
+	else
+		$CURL "http://${ADDRESS}:${PORT}/d/${command}"
+	fi
+}
+
+start() {
+	echo -n "Starting $name: "
+	daemon $DAEMON_ARGS ${GROONGA_HTTPD} "$GROONGA_ARGS"
+	RETVAL=$?
+	echo
+	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
+	return $RETVAL
+}
+
+stop() {
+	echo -n "Shutting down $name: "
+	send_command shutdown
+	${GROONGA_HTTPD} -s stop
+	RETVAL=$?
+	echo
+	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
+	return $RETVAL
+}
+
+restart() {
+	killproc -p $PIDFILE ${GROONGA_HTTPD} -USR2
+	
+	[ ! -f "$OLD_PIDFILE" ] && sleep $TIMEOUT
+	if [ ! -f "$OLD_PIDFILE" ]; then
+		echo "Failed to start new groonga-httpd master."
+		return 1
+	fi
+
+	OLDPID=`cat $OLD_PIDFILE`
+
+	# Switch worker process.
+	kill -WINCH `cat $OLD_PIDFILE`
+
+	[ ! -f "$PIDFILE" ] && sleep $TIMEOUT
+	PID=`cat $PIDFILE`
+
+	OLD_WORKER_PROCESS=`pgrep -P $OLDPID | grep -v $PID` 
+	[ -n "$OLD_WORKER_PROCESS" ] && sleep $TIMEOUT
+	OLD_WORKER_PROCESS=`pgrep -P $OLDPID | grep -v $PID` 
+	if [ -n "$OLD_WORKER_PROCESS" ]; then
+	    echo "Failed to stop old groonga-httpd worker process."
+	    killproc -p $PIDFILE ${GROONGA_HTTPD} -QUIT
+	    echo "Rollback to old groonga-httpd master."
+	    return 2
+	fi
+
+	# Stop old master process.
+	killproc -p $OLD_PIDFILE ${GROONGA_HTTPD} -QUIT
+	return $?
+}
+
+status() {
+	send_command status
+}
+
+case "$1" in
+	start)
+		start
+		;;
+	stop)
+		stop
+		;;
+	restart)
+		restart
+		;;
+	reload)
+		killproc $groonga -HUP
+		;;
+	condrestart)
+		[ -f /var/lock/subsys/$prog ] && restart || :
+		;;
+	status)
+		status
+		;;
+	*)
+		echo "Usage: $prog {start|stop|reload|restart|condrestart|status}"
+		exit 1
+		;;
+esac
+exit $?

  Modified: data/init.d/redhat/sysconfig/Makefile.am (+1 -1)
===================================================================
--- data/init.d/redhat/sysconfig/Makefile.am    2012-09-04 13:11:51 +0900 (46982b5)
+++ data/init.d/redhat/sysconfig/Makefile.am    2012-09-04 13:16:39 +0900 (8bbe4c0)
@@ -1,4 +1,4 @@
-data = groonga
+data = groonga groonga-httpd
 
 if REDHAT_PLATFORM
 sysconfigdir = $(sysconfdir)/sysconfig

  Added: data/init.d/redhat/sysconfig/groonga-httpd (+8 -0) 100644
===================================================================
--- /dev/null
+++ data/init.d/redhat/sysconfig/groonga-httpd    2012-09-04 13:16:39 +0900 (6d658a2)
@@ -0,0 +1,8 @@
+# Default
+#USER=groonga
+#GROUP=groonga
+#ADDRESS=127.0.0.1
+#PORT=10041
+#DATABASE=/var/lib/groonga/db/db
+#LOG_PATH=/var/log/groonga/httpd/access.log
+#QUERY_LOG_PATH=/var/log/groonga/httpd/access.log
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index