Asterisk Installation Script On CentOS7 With Systemd
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.