Join our Discussion Boards - Here

Set up Mongrel as a service and start it automatically on Centos 5.2

 

From – http://bitsandchaos.wordpress.com/2007/11/18/integrate-mongrel-with-rhel-and-derivatives/

This is tailored for the redmine installation that is descibed on this site.

create a directory

mkdir /etc/mongrel

create a file in that directory

vi /etc/mongrel/mongrel.conf

Put this into the file

# we want three instances, listening on ports 8000, 8001 and 8002

PORTS=”8000 8001 8002″

# the Rails environment (see config/database.yml of your application)

ENVIRONMENT=”production”

# the base name for the log file. Each instance will have a unique log file, as LOGFILE.PORT

LOGFILE=”/opt/redmine-0.8.0_RC1/log/rubyapp.logfile”

# the basename for the pid file. Each instance will have a unique pid file, as PIDFILE.PORT

PIDFILE=”/opt/redmine-0.8.0_RC1/tmp/pids/pidfile”

# the directory containing your RoR application.

ROOTDOCUMENT=”/opt/redmine-0.8.0_RC1/”

# every other extra parameter goes there.

EXTRAPARAMS=”--user apache --group apache”

Create another file

vi /etc/sysconfig/mongrel

Put this into it.

#Path of mongrel_rails

MONGREL=/usr/bin/mongrel_rails

Create another file

vi /etc/init.d/mongrel

Set the permissions

chown root:root /etc/init.d/mongrel

 chmod 755 /etc/init.d/mongrel

add it to chkconfig:

chkconfig -add mongrel

and then set it for automatic starting at appropriate runlevels:

chkconfig –level 345 mongrel on

Put the following in /etc/init.d/mongrel

#!/bin/bash

#

# Mongrel      Startup script for the Mongrel Server

#

# chkconfig: – 84 10

# description: Mongrel is a Ruby on Rails application server

#

# processname: mongrel_rails

# config: /etc/sysconfig/mongrel

# instance config: /etc/mongrel/*.conf

 

# Source function library.

. /etc/rc.d/init.d/functions

 

if [ -f /etc/sysconfig/mongrel ]; then

        . /etc/sysconfig/mongrel

fi

 

# Path to the mongrel_rails server.

mongrel=${MONGREL-/usr/bin/mongrel_rails}

RETVAL=0

 

# For each /etc/mongrel/*.conf file that describes a Ruby on Rails application

# we instantiate the corresponding server instances (one for each port).

# We also cleare the sessions, pids, cache and sockets subdirs.

# Note that you’ll hopefully get a [ OK ] line for each (instance,port) pair.

start() {

      RET=0

      for instancefile in `ls /etc/mongrel/*conf`; do

            echo -n $instancefile;

 

            unset PORTS ENVIRONMENT LOGFILE PIDFILE ROOTDOCUMENT EXTRAPARAMS

            . $instancefile

 

            for INSTANCEPORT in $PORTS; do

                  INSTANCELOG=$LOGFILE.$INSTANCEPORT

                  INSTANCEPID=$PIDFILE.$INSTANCEPORT

                  CMDLINE=”-e $ENVIRONMENT –port $INSTANCEPORT –log $INSTANCELOG –pid $INSTANCEPID $EXTRAPARAMS”

                  if [ -n “$ROOTDOCUMENT” ]; then

                        for SUBDIR in “sessions” “pids” “cache” “sockets”; do

                              rm -f $ROOTDOCUMENT/tmp/$SUBDIR/* 2> /dev/null

                        done

                        (cd $ROOTDOCUMENT; daemon mongrel_rails start -d $CMDLINE)

                        RETVAL=$?

                        if [ “$RETVAL” -ne “0” ]; then

                                RET=1

                        fi

                        echo

                  fi

            done

      done

      return $RET

}

 

# When stopping mongrel_rails we wait a delay of 10 seconds

stop() {

echo -n $”Stopping Mongrel”

killproc -d 10 $mongrel

RETVAL=$?

        # We force remove of PID files (a stopped Mongrel won’t do that for us)

        for instancefile in `ls /etc/mongrel/*conf`; do

                unset PORTS ENVIRONMENT LOGFILE PIDFILE ROOTDOCUMENT EXTRAPARAMS

                . $instancefile

                for INSTANCEPORT in $PORTS; do

                        INSTANCEPID=$PIDFILE.$INSTANCEPORT

                        rm -f $INSTANCEPID 2> /dev/null

                done

        done

        echo

}

 

# See how we were called.

case “$1″ in

  start)

start

;;

  stop)

stop

;;

  status)

        status $mongrel

RETVAL=$?

;;

  restart)

stop

start

;;

  *)

echo $”Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}”

exit 1

esac

 

exit $RETVAL

Use

service mongrel start

service mongrel stop

service mongrel restart

service mongrel status

1 comment to Set up Mongrel as a service and start it automatically on Centos 5.2

You must be logged in to post a comment.