Before using my suggestion below, please consider first that I am a "dummy programmer" and then, that I am using Ubuntu server 12.04 LTS 64 bits. If you are using another distro or version, you may need to adapt the upstart script. Also, I am not sure if this is the right way of doing it, but it worked for me... Finally, I did not convert some of the start-up scripts.
 
Now, the problem I see is that this addresses "my problem" (Kamailio+MySQL on Ubuntu running Upstart). However, it would be nice to have a more complete script. I.e.: If you are not running MySQL, then you have to change the upstart script to match your SQL engine. The old init script had a "Should-Start" statement so you could get anything to start before Kamailio (postgresql mysql radius, etc.) without being a "must" like in upstart. But I could not find the equivalent command for this in Upstart docs... So I let here the challenge for the community to improve what I could accomplish so far.
 
The first thing you need to do is to remove (or not install) the /etc/init.d/kamailio init script. Then you need to create a symlink to the kamailio upstart conf file that should be at /ect/init/. To do so:
 
# First save you original init script if you have one
mv /etc/init.d/kamailio ~
 
# Create symlink to upstart .conf file
ln -s /etc/init/kamailio.conf /etc/init.d/kamailio
 
Then create a /etc/init/kamailio.conf (notice it is /etc/init/ not /etc/init.d/) with the following content:
 
# Kamailio Service
 
description   "Kamailio server"
author         "Moacir Ferreira"
 
# Change anything here
# to match your environment
env NAME=kamailio
env DAEMON=/sbin/kamailio
env CFGFILE=/etc/kamailio/kamailio.cfg
env USER=kamailio
env GROUP=kamailio
 
start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]
 
# This is required to start Kamailio
# after MySQL
start on started mysql
 
# This is required when the daemon
# forks 2 times
expect daemon
 
# Include this to see the nice
# kamailo init messages at the console
console output
 
pre-start script
 
# Do not start kamailio if fork=no is set in the config file
if grep -q "^[[:space:]]*fork[[:space:]]*=[[:space:]]*no.*" $CFGFILE; then
   echo "$NAME ERROR: Kamilio not set to fork. Review your config or start it in debug mode.";
   exit 1;
fi
 
# Check if kamailio configuration is valid before starting the server.
out=$($DAEMON -c 2>&1 > /dev/null)
retcode=$?
set -e
if [ "$retcode" != '0' ]; then
   echo "$NAME ERROR: Config file invalid."
   exit 1;
fi
 
end script
 
exec $DAEMON -f $CFGFILE -u $USER -g $GROUP
 
# This is the end of the script
 
Good luck and Cheers!
 
Moacir
 

Date: Wed, 14 Nov 2012 06:36:40 -0500
From: miconda@gmail.com
To: sr-users@lists.sip-router.org
CC: moacirferreira@hotmail.com
Subject: Re: [SR-Users] Returning problem

Hello,

On 11/13/12 6:15 PM, Moacir Ferreira wrote:
I wish it were that simple... I have done some "reading" and found that Ubuntu has changed to upstart http://upstart.ubuntu.com/cookbook/. However, I could not find how I can start a non "upstart" style init script like Kamailio has before the upstart styled ones... I guess that I have to either to get the Kamailio community to create an upstart script or find some help from the Ubuntu community how to overcome the problem. Anyway, I think the Kamailio team should address it as it will become a problem for everyone using Kamailio on Ubuntu.
 
Any help?
the link to the upstart documentation you gave has quite big content, couldn't you find a migration guide from classic init.d to upstart somewhere out there on the web? Might be easier to do it then.

Cheers,
Daniel
 
Moacir
 
From: 4lists@gmail.com
To: sr-users@lists.sip-router.org
Date: Mon, 12 Nov 2012 14:42:31 -0200
Subject: Re: [SR-Users] Returning problem


This is more a system initialization problem, so, take a look in your 
/etc/rc<run-level>.d directory (or the correspondent one), specially in 
the S* files and find out the start sequence. There You'll find the answer.
 
Edson.
 
Em 09/11/2012 17:03, Moacir Ferreira escreveu:
> My kamailio start script has the following BEGIN INIT INFO:
>
> #
> ### BEGIN INIT INFO
> # Provides:          kamailio
> # Required-Start:    $syslog $network $local_fs $time mysql
> # Required-Stop:     $syslog $network $local_fs mysql
> # Default-Start:     2 3 4 5
> # Default-Stop:      0 1 6
> # Should-Start:      postgresql mysql radius
> # Should-Stop:       postgresql mysql radius
> # Short-Description: Start the Kamailio SIP proxy server
> # Description:       Start the Kamailio SIP proxy server
> ### END INIT INFO
>
> However, when I boot my server Kamailio will start before mysql. So,
> after boot I can start Kamalio but at boot time it will fail.
>
> Any hints how to fix it? I am running Ubuntu server 12.04 LTS - 64 bits.
> All the code has been compiled at the server.
>
> Cheers!
>
> Moacir
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users@lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
 
 


_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda