How to install and setup Asterisk 14 (PBX) on CentOS 7

We will be using CentOS 7 for Asterisk setup with minimal installed packages so need to ensure system is up to date and you have root privelges on the system for the installation of different required packages.

Execute the following command below to update your system

yum update

Installing the required Packages

yum install gcc gcc-c++ php-xml php php-mysql php-pear php-mbstring mariadb-devel mariadb-server mariadb sqlite-devel lynx bison gmime-devel psmisc tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel uuid-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) git subversion kernel-devel php-process crontabs cronie cronie-anacron wget vim

Once the required packages are installed you can see the updates including all its required dependencies.

We need to enable and start mariadb on boot

systemctl enable mariadb

systemctl start mariadb

You can check the status of mariadb

systemctl status mariadb
● mariadb.service – MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2016-11-21 06:05:29 EST; 2 days ago
Main PID: 1948 (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─1948 /bin/sh /usr/bin/mysqld_safe –basedir=/usr
└─2801 /usr/libexec/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib64…

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

Once mariadb is setup and running we can change the root password for it, remove test database and remove ananymous user and disallow remote user login.

Execute the command as given below:


Cleaning up…

All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.

Furthemore, we need to install libjansson.

Jansson is a C library for encoding, decoding and manipulate JSON data.

we can download unpack and compile it using the command given below:


Once done you can see the file as jansson-2.7.tar.gz   which we can extract by executing

tar -xzvf jansson-2.7.tar.gz

When it is extracted successfully we can see the file named jansson-2.7

Again we need to compile this file by executing command after changing directory to this jansoon-2.7 file as given below:

./configure –prefix=/usr

make clean

make && make install


Finally, its time to install Asterisk 14.2.0

We will go with the latest package from their official web link

We will be using wget command to download its package as shown below


Now if you list the file you can see the tar file as asterisk-14.2.0-rc1.tar.gz

again we will follow the same method as above to extract it as shown below

tar -xzvf asterisk-14.2.0-rc1.tar.gz

once it is done you can ls to see asterisk-14.2.0-rc1

cd asterisk-14.2.0-rc1

./configure –libdir=/usr/lib64


Once it is installed you will see something like above image as shown.

Furthermore, we need to setup asterisk modules which is given below stepwise:

Asterisk Main menu : Just execute the command shown below and choose the appropriate options

[[email protected] asterisk-14.2.0-rc1]# make menuselect


You can add something or remove, when you select a module there is a brief description of its purpose. In the Add-ons to enable mp3 support module select ‘format_mp3’ as shown above.

next move to core sound packages and select the formats of audio packets as shown in the image.


select all the packages from the “Music On Hold Packages” and then form the “Extra Sound Packages choose the 4 that includes a first module containing EN and the choose the “Save and Exit” button to proceed for the next step.

We need to load mp3 libraries which can be done executing the command below

[[email protected] asterisk-14.2.0-rc1]# contrib/scripts/

To install the module

[[email protected] asterisk-14.2.0-rc1]# make


[[email protected] asterisk-14.2.0-rc1]# make install


Here we will run the below commands to install sample configuration files as indicated above

[[email protected] asterisk-14.2.0-rc1]# make samples

[[email protected] asterisk-14.2.0-rc1]# make config

Setup user for Asterisk

useradd -m asterisk

chown asterisk.asterisk /var/run/asterisk

chown -R asterisk.asterisk /etc/asterisk

chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk.asterisk /usr/lib64/asterisk

systemctl restart asterisk
[[email protected] asterisk-14.2.0-rc1]# systemctl status asterisk
● asterisk.service – LSB: Asterisk PBX
Loaded: loaded (/etc/rc.d/init.d/asterisk)
Active: active (running) since Thu 2016-11-24 06:34:16 EST; 11s ago
Docs: man:systemd-sysv-generator(8)
Process: 22113 ExecStop=/etc/rc.d/init.d/asterisk stop (code=exited, status=0/SUCCESS)
Process: 3236 ExecStart=/etc/rc.d/init.d/asterisk start (code=exited, status=0/SUCCESS)
Main PID: 3261 (asterisk)
CGroup: /system.slice/asterisk.service
├─3259 /bin/sh /usr/sbin/safe_asterisk
└─3261 /usr/sbin/asterisk -f -vvvg -c

Nov 24 06:34:16 systemd[1]: Starting LSB: Asterisk PBX…
Nov 24 06:34:16 asterisk[3236]: Starting asterisk:
Nov 24 06:34:16 systemd[1]: PID file /var/run/asterisk/ not readable (yet?) after start.
Nov 24 06:34:16 systemd[1]: asterisk.service: Supervising process 3261 which is not our child. We’ll most likely not notice when it exits.
Nov 24 06:34:16 systemd[1]: Started LSB: Asterisk PBX.

Setup Asterisk Database

We will need to connect to the MYSQL mariadb and create new user and database and provide the privileges needed with the following commands.

[[email protected] asterisk-14.2.0-rc1]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 19334
Server version: 5.5.50-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]>create user ‘asterisk’@’localhost’ identified by ‘******’;

MariaDB [(none)]>create database asterisk;

MariaDB [(none)]>create database cdrdb;

MariaDB [(none)]>GRANT ALL PRIVILEGES ON asterisk.* TO [email protected] IDENTIFIED BY ‘******’;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cdrdb.* TO [email protected] IDENTIFIED BY ‘******’;
MariaDB [(none)]>flush privileges;
MariaDB [(none)]> exit

To launch Asterisk

[[email protected] asterisk-14.2.0-rc1]# asterisk -r


Rajkishor Maharjan has written 17 articles