Hello,
 
Reading the Upstart "very long cookbook" (http://upstart.ubuntu.com/cookbook/) a lot of things changes when using it. Trying to adapt the current init script I found that it is really "well conceived" meaning you can easily change several things if you use the "defaults" file. And this makes it quite dificult to replicate using Upstart.
 
Now, I am not sure about what "features" should I really care when converting the existing init script to a new one. So can anyone help me here? What I need to know is what is, nowadays, what is relevant for a "good" Kamailio start script. So my questions are:
 
- Should we keep the user, group, shared memory, package memory, etc. an adjustment to the start script to be configured by the "defaults" file?
- The PID file is quite well controlled by Upstart to allow shutting down the service properly. Any reasonable reason to still define the PID file at Kamailio start?
 
Very key: is this the right forum to put these questions or there is a more appropriated forum to do so?
 
Cheers,
 
Moacir

Date: Mon, 19 Nov 2012 10:07:18 +0100
From: miconda@gmail.com
To: moacirferreira@hotmail.com
CC: sr-users@lists.sip-router.org
Subject: Re: [SR-Users] Returning problem

Hello,

thanks for the sample upstart script. Perhaps it would be good to be added in the tracker not to get lost.

As said, I am not familiar with upstart, maybe someone else can contribute other improvements for the moment.

Btw, is upstart the default init system for ubuntu 12.04, or is just an alternative? Kamailio is packaged on official Debian distro, I wonder if the follow the same init system already.

Cheers,
Daniel

On 11/15/12 9:12 PM, Moacir Ferreira wrote:
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

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