Monday, August 24, 2009

Dumps: apache-continuum, postgres and ec2 using RightScripts (RightScale)

If you'll ever need to setup apache-continuum to connect to a postgres db on ubuntu running on amazon ec2 using RightScale, check out this approach.



Packages required: openjdk-6-jre libpg-java maven2


#! /bin/sh
### BEGIN INIT INFO
# Provides: continuum
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Startup script for Apache Continuum
# Description: Startup script for Apache Continuum (based on ubuntu's startup skeleton)
### END INIT INFO
# Author: Catalin Balan
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Startup script for Apache Continuum"
NAME=continuum
DAEMON=@@CONTINUUM_LIB_PREFIX@@/bin/$NAME
DAEMON_ARGS="start"
PIDFILE=@@CONTINUUM_DATA@@/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
export CONTINUUM_BASE=@@CONTINUUM_DATA@@
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
start-stop-daemon --start --quiet -b -c @@CONTINUUM_USER@@ --exec $DAEMON -- $DAEMON_ARGS || return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
#!/bin/bash
# apache-continuum setup script. This script assumes that
# continuum bin files were already deployed by another script under $CONTINUUM_SRC folder.
# I'm using "WEB app s3 code checkout" script which will grab and extract an archive
# from a specific bucket from S3.
#
# $CONTINUUM_SRC - Continuum source folder
# $CONTINUUM_LIB_PREFIX - Continuum lib prefix
# $CONTINUUM_USER - Continuum system user
# Test for a reboot, if this is a reboot just skip this script.
if test "$RS_REBOOT" = "true" ; then
echo "Skip code install on reboot."
logger -t RightScale "Skip code install on reboot."
exit 0
fi
# Create continuum user (@TODO maybe test if exists )
adduser --system --group --disabled-password --disabled-login $CONTINUUM_USER
# Install continuum bin
cp -a $CONTINUUM_SRC $CONTINUUM_LIB_PREFIX
chown -R $CONTINUUM_USER:$CONTINUUM_USER $CONTINUUM_LIB_PREFIX
# Setup CONTINUUM_DATA dir
mkdir -p /mnt/continuum /mnt/continuum/logs
cp -a $CONTINUUM_LIB_PREFIX/conf /mnt/continuum/
chown -R $CONTINUUM_USER:$CONTINUUM_USER /mnt/continuum/
ln -s /mnt/continuum $CONTINUUM_DATA
# Setup and install startup script
continuum_script="/etc/init.d/continuum"
cp $ATTACH_DIR/continuum $continuum_script
# Apply arguments
sed -i "s#@@CONTINUUM_DATA@@#$CONTINUUM_DATA#g" $continuum_script
sed -i "s#@@CONTINUUM_LIB_PREFIX@@#$CONTINUUM_LIB_PREFIX#g" $continuum_script
sed -i "s#@@CONTINUUM_USER@@#$CONTINUUM_USER#g" $continuum_script
chmod +x $continuum_script
# Add postgres.jar to wraper's classpath
classpath_index=$(grep wrapper.java.classpath $CONTINUUM_DATA/conf/wrapper.conf|wc -l)
let classpath_index=classpath_index+1
echo "wrapper.java.classpath.$classpath_index=/usr/share/java/postgresql.jar">>$CONTINUUM_DATA/conf/wrapper.conf
# DB connection details
config_db="\"org.postgresql.ds.PGSimpleDataSource\"> \
\"serverName\">$CONTINUUM_DATABASE_HOST \
\"databaseName\">$CONTINUUM_DATABASE \
\"user\">$CONTINUUM_DATABASE_USER \
\"password\">$CONTINUUM_DATABASE_PASSWORD \
\"portNumber\">$CONTINUUM_DATABASE_PORT"
block_start='New class="org.apache.derby.jdbc.EmbeddedDataSource"'
block_stop='<\/New'
sed_script=":t;/$block_start/,/$block_stop/ {
/$block_stop/!{N;bt;};/.*/c\
$config_db
}"
sed -i -e "$sed_script" $CONTINUUM_DATA/conf/jetty.xml
# Add continuum script to boot
update-rc.d continuum defaults
# Start continuum
service continuum start

No comments:

Post a Comment