Asterisk Installation Script On CentOS7 With Systemd

Home » Asterisk Users » Asterisk Installation Script On CentOS7 With Systemd
Asterisk Users 2 Comments

For a new project, I’m adapting existing installation script to CentOS 7. I must admit I don’t understand how to adapt things to systemd.

Here are my questions:

1. I don’t see any systemd sub-directory in asterisk-13.13.1/contrib. Do you think such directory and matching Makefile target could be useful ?

2. Should /run/asterisk directory creation be left to systemd or done by installation script before running “systemctl start asterisk” ?

3. I edited the following /etc/systemd/system:asterisk.service file:

[Unit]
Description=Asterisk PBX and telephony daemon. After=network.target

[Service]
Type=forking PIDFile=/var/run/asterisk/asterisk.pid Environment=HOME=/var/lib/asterisk WorkingDirectory=/var/lib/asterisk ExecStart=/usr/sbin/asterisk -vvvgF -U asterisk -G asterisk -C
/etc/asterisk/asterisk.conf
#ExecStart=/usr/sbin/asterisk -vvvgF -C /etc/asterisk/asterisk.conf ExecStop=/usr/sbin/asterisk -rx ‘core stop now’
ExecReload=/usr/sbin/asterisk -rx ‘core reload’

[Install]
WantedBy=multi-user.target

Running systemctl start asterisk fails with :
Dec 19 15:43:08 foobar systemd: PID file /var/run/asterisk/asterisk.pid not readable (yet?) after start. Dec 19 15:43:09 foobar systemd: asterisk.service: main process exited, code=exited, status=1/FAILURE
Dec 19 15:43:09 foobar asterisk: Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
Dec 19 15:43:09 foobar systemd: asterisk.service: control process exited, code=exited status=1
Dec 19 15:43:09 foobar systemd: Unit asterisk.service entered failed state. Dec 19 15:43:09 foobar systemd: asterisk.service failed.

But /usr/sbin/asterisk -vvvgF -U asterisk -G asterisk -C
/etc/asterisk/asterisk.conf succeeds:
# rasterisk Asterisk 13.13.1, Copyright (C) 1999 – 2014, Digium, Inc. and others.

========================================================================

Running as user ‘asterisk’
Running under group ‘asterisk’
Connected to Asterisk 13.13.1 currently running on …

Any hint or help on how to debug this ?
(I tried with and without any /run/asterisk directory owned by asterisk.asterisk)

UPDATE:

Thanks to Tzafrir Cohen for the tip.

Changing to permissive mode made it !

Using methods suggested in [1], do you think its possible and worth the effort to configure SELinux to work with Asterisk/Systemd in Enforcing mode?

A quick look in various tuto all disable SELinux.

[1] https://wiki.CentOS.org/HowTos/SELinux

2 thoughts on - Asterisk Installation Script On CentOS7 With Systemd

  • Remove those two (or get latest version with sd_notify support, make sure it works, and use ‘Type=notify’)

    Drop -F as well

    I’m trying to think if this is needed. Anything wrong with just letting systemd kill asterisk and all of its child precesses?

    Also, IIRC:

    User=asterisk

  • I think it should be possible. IIRC I once gave it a shot and was mildly successful, but eventually gave up due to issues related to interaction with Apache. If you do run into a problem, I wonder what it is.