I installed asterisk 16.5.1 in CentOS 8 with mariadb 10.3.11
after installing complete, execute command “systemctl start asterisk”
[root@localhost system]# cat /usr/lib/systemd/system/asterisk.service
[Unit]
Description=Asterisk PBX and telephony daemon.
After=network.target
[Service]
Type=notify
Environment=HOME=/var/lib/asterisk
WorkingDirectory=/var/lib/asterisk
User=ippbx
Group=ippbx
ExecStart=/usr/sbin/asterisk -mqf -C /etc/asterisk/asterisk.conf
ExecReload=/usr/sbin/asterisk -rx ‘core reload’
in log file, /var/log/message
Oct 2 16:38:23 localhost systemd[1]: Starting Asterisk PBX and telephony daemon…
Oct 2 16:39:54 localhost systemd[1]: asterisk.service: Start operation timed out. Terminating.
Oct 2 16:39:54 localhost systemd[1]: asterisk.service: Failed with result ‘timeout’.
Oct 2 16:39:54 localhost systemd[1]: Failed to start Asterisk PBX and telephony daemon…
Oct 2 16:39:58 localhost systemd[1]: asterisk.service: Service RestartSec=4s expired, scheduling restart.
Oct 2 16:39:58 localhost systemd[1]: asterisk.service: Scheduled restart job, restart counter is at 1.
but, If i ran command - “/usr/sbin/asterisk -C /etc/asterisk/asterisk.conf”, It works well
where do i find cause ?
In the logs created by the failing Asterisk.
If you compiled and installed from source, check <sourcedir>/include/asterisk/autoconfig.h around line 1055 and make sure that systemd support is enabled…
/* Define if your system has the SYSTEMD libraries. */
#define HAVE_SYSTEMD 1
If not, you may need to install the systemd-devel package then re-run ./configure and make.
Thanks for your reply!
I installed systemd-devel package and recompile asterisk 16.5.1 on CentOS 8.0
after compiling, i configured something like this…
sed -i ‘s/;runuser = asterisk/runuser = ippbx/g’ /etc/asterisk/asterisk.conf;
sed -i ‘s/;rungroup = asterisk/rungroup = ippbx/g’ /etc/asterisk/asterisk.conf
chown -Rc ippbx:ippbx /etc/asterisk;
chown -Rc ippbx:ippbx /var/log/asterisk;
chown -Rc ippbx:ippbx /var/run/asterisk;
chown -Rc ippbx:ippbx /var/lib/asterisk
and then configure auto start like this
cd /home/ippbx/PKG/5.Asterisk/asterisk-16.5.1
cp -f ./contrib/systemd/asterisk* /usr/lib/systemd/system/
and change asterisk user ( asterisk to ippbx )
sed -i ‘s/User=asterisk/User=ippbx/g’ /usr/lib/systemd/system/asterisk.service;
sed -i ‘s/Group=asterisk/Group=ippbx/g’ /usr/lib/systemd/system/asterisk.service
systemctl enable asterisk
finally I reboot system and check asterisk process…
[ippbx@localhost run] ps -ef | grep asterisk
ippbx 894 1 0 11:36 ? 00:00:02 /usr/sbin/asterisk -mqf -C /etc/asterisk/asterisk.conf
ippbx 1958 1841 0 11:48 pts/1 00:00:00 grep --color=auto asterisk
[ippbx@localhost run]
[ippbx@localhost run]
[ippbx@localhost run] systemctl status asterisk
● asterisk.service - Asterisk PBX and telephony daemon.
Loaded: loaded (/usr/lib/systemd/system/asterisk.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-10-07 11:36:35 KST; 12min ago
Main PID: 894 (asterisk)
Tasks: 68 (limit: 11183)
Memory: 154.5M
CGroup: /system.slice/asterisk.service
└─894 /usr/sbin/asterisk -mqf -C /etc/asterisk/asterisk.conf
BUT, I found issue
I CAN NOT found directory, /var/run/asterisk <-- ( as /etc/asterisk/asterisk.conf’s astrundir )
I recreate /var/run/asterisk like this
[root@localhost run]# pwd
/var/run
[root@localhost run]# ll
합계 28
drwxr-xr-x 3 root root 60 10월 7 11:36 NetworkManager
-rw------- 1 root root 0 10월 7 11:36 agetty.reload
drwxr-xr-x 2 ippbx ippbx 40 10월 7 11:53 asterisk
and then, I reboot system.
But Asterisk run directory(/var/run/asterisk) was deleted. I can’t found
where did I check ?
Asterisk will try and create /var/run/asterisk if it doesn’t already exist but it can’t do that if it’s started as a non-root user, in your case “ippbx”. There are several ways to solve this…
-
Remove the User and Group lines from the service file so Asterisk starts as root. This will allow it to create the /var/run/asterisk directory before it switches over to the user and group specified in asterisk.conf.
-
Use ExecStartPre commands in the service file to create the directory and set its ownership to ippbx/ippbx.
-
Create a file named /etc/tmpfiles.d/asterisk.conf with the following line in it then run
sudo systemd-tmpfiles --create. The directory will then get created every time the system starts.
d /var/run/asterisk 0755 ippbx ippbx