Hatena::Grouptwitterircgateway

TIG始め

2011-03-19TIG起動スクリプト

TIG入れたのはだいぶ前だったんだけど、忘れないうちにメモとして。

稼働環境とか条件とか

tig.rbは使ってません。本家TweetIrcGatewayをMono Framework上で動かしてます。

以前はtiarra経由で繋いでましたが、度々落ちたりして面倒だったのでTIG用ポート16668を直接開いてListenさせてます。

起動スクリプトApacheの起動スクリプトから見よう見まねで書いたのでゴミだらけ無駄だらけでも気にしない気にしない。

全てが適当ですがこれでも割とどうにかきれい(?)に動いてるのでどうにかなります。

見ればわかると思いますが、単純にnohupで起動してるだけです。

daemontools使う手もあると思いますが入れるの面倒だったので使ってないです。

起動オプション変更したいときは $OPTIONSをうまく設定してあげてください。


今回のものはDTIのServersMan@VPSで実際に稼働させて使ってます。

環境

OSCentOS 5.5
メモリ(一応)512MB

起動スクリプト


(2011/03/22追記)githubにも公開してみました。

https://github.com/anonymizer/services/blob/master/tig


#!/bin/sh
#
# 	Startup script for TwitterIrcGateway
#
# chkconfig: - 85 15
# description: TIG server startup and controll script.
# processname: TwitterIrcGatewayCLI
# pidfile: /var/run/tig.pid

# Source function library.
. /etc/rc.d/init.d/functions


# Start tig in the C locale by default.
TIG_LANG="C"

# Path to the TIG script, server binary, and short-form for messages.
TIG_HOME=/opt/TwitterIrcGateway
tig="./TwitterIrcGatewayCLI"
tigproc=TwitterIrcGatewayCLI
prog=TwitterIrcGatewayCLI
pidfile=/var/run/tig.pid
lockfile=/var/lock/subsys/tig
RETVAL=0
OPTIONS="--encoding=utf-8 --bind-address=0.0.0.0"

start() {
	echo -n $"Starting TwitterIrcGateway: "
	cd $TIG_HOME
	nohup $tig $OPTIONS 2>&1 > /dev/null &
	RETVAL=$?
	[ $RETVAL -eq 0 ] && success || failure
	sleep 1 ; [ -f $TIG_HOME/nohup.out ] && rm $TIG_HOME/nohup.out
	echo
	
	return $RETVAL
}

# When stopping tig a delay of >10 second is required before SIGKILLing the
# tig parent; this gives enough time for the tig parent to SIGKILL any
# errant children.
stop() {
	echo -n $"Stopping $prog: "
	killall -9 $prog #; killall -9 tiarra
	RETVAL=$?
	
	[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
	[ $RETVAL -eq 0 ] && success || failure
	echo 
}

reload() {
	echo -n $"Reloading $prog: "
	if ! LANG=$TIG_LANG $tig $OPTIONS -t >&/dev/null; then
		RETVAL=$?
		echo $"not reloading due to configuration syntax error"
		failure $"not reloading $tig due to configuration syntax error"
	else
		killproc -p ${pidfile} $tig -HUP
		RETVAL=$?
	fi
	echo
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
	status -p ${pidfile} $tig
	RETVAL=$?
	;;
  restart)
	stop
	start
	;;
  condrestart)
	if [ -f ${pidfile} ] ; then
		stop
		start
	fi
	;;
  reload)
	reload
	;;
  *)
	echo $"Usage: $prog {start|stop|restart|status}"
	exit 1
esac

exit $RETVAL