How to install Asterisk PBX 13.x on CentOS 7 step by step guide
source link: https://computingforgeeks.com/how-to-install-asterisk-pbx-13-x-on-centos-7-step-by-step-guide/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Hello guys, we’re going to do Asterisk 13.0.6 installation in this guide. This will be a complete easy to follow tutorial. For recent release of Asterisk, check out How to Install Asterisk 15 PBX on CentOS 7. So let’s start by defining what a PBX and Asterisk is?
What Is a PBX?
Asterisk, first and foremost, is a Private Branch Exchange. A PBX is a piece of equipment that handles telephone switching owned by a private business, rather than a telephone company. A PBX can be thought of as a private phone switchboard, connecting to one or more telephones on one side and usually connecting to one or more telephone lines on the other.
What is Asterisk?
Asterisk is a complete PBX. It implements all the major features of most commercially available PBXes. It also implements, for free, features that often cost a lot in a commercial installation: Conference calling, Direct Inward System Access, Call Parking, and Call Queues, just to name a few.
The basic features provided by Asterisk are:
- Caller ID
- Blacklisting (Block callers by Caller ID)
- Call Waiting
- Call Transfer
- Call Conferencing
- Conference Center/Bridging
- Do‐Not‐Disturb
- Call Forwarding
- Call Parking
- Call Detail Reporting
- Dial by Name Directory
- Interactive Voice Response (Auto Attendant)
- Time Condition Call Routing
- Call Queuing
- Call Back
- Hold Music/Recordings (MP3)
- Application Integration
- Extended Call Reporting
- DISA (Direct Inward System Access)
- Dictation
- Follow Me
- Paging/Intercom
- Ring Groups
- Graphical Call Manager
- Day/Night Controls
We have Updated Guide for FreePBX 15:
How to Install Asterisk 15 PBX on CentOS 7
Among others. So let’s get started.
You can set hostname and timezone before doing any installation. Use below commands.
sudo timedatectl list-timezones sudo timedatectl set-timezone Africa/Nairobi
To set hostname type:
sudo hostnamectl set-hostname pbx-01.example.com
In case your CentOS server has wrong keymaps. You can fix them.
$ localectl System Locale: LANG=en_US.UTF-8 VC Keymap: us X11 Layout: us $ localectl list-keymaps
sudo localectl set-keymap us
sudo localectl set-locale LANG=en_US.UTF-8
1. First, do a system update
sudo yum -y update
2. Install missing dependencies
sudo yum -y install lynx mariadb-server mariadb php php-mysql \ php-mbstring tftp-server httpd ncurses-devel sendmail sendmail-cf \ sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel \ subversion kernel-devel git php-process crontabs cronie cronie-anacron \ wget vim php-xml uuid-devel sqlite-devel net-tools gnutls-devel php-pear
3. Install other missing dependencies, not in step 2
sudo yum -y 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
4. Setup and configure mariadb database, setting the password as well.
systemctl start mariadb systemctl enable mariadb
Now set the password by running the command below.
mysql_secure_installation
Just press enter if you don’t already have a password set for mysql. Agree to remove the test database and disallow remote login.
5. Installing Jansson which is a C library for encoding, decoding and manipulating JSON data. Let’s download, unpack and compile it using the below command.
cd /usr/src mkdir asterisk-13 cd asterisk-13 git clone https://github.com/akheron/jansson.git cd jansson autoreconf -i ./configure --prefix=/usr/ make && make install
6. Install Legacy Pear requirements
pear install Console_Getopt
7. Download Asterisk source files.
cd /usr/src/asterisk-13 wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz wget -O jansson.tar.gz https://github.com/akheron/jansson/archive/v2.7.tar.gz wget http://www.pjsip.org/release/2.4/pjproject-2.4.tar.bz2
8. Compile and install DAHDI if you are connecting to PSTN. This is OPTIONAL, install if you’ll connect to PSTN.
cd /usr/src/asterisk-13 tar xvfz dahdi-linux-complete-current.tar.gz tar xvfz libpri-1.4-current.tar.gz rm -f dahdi-linux-complete-current.tar.gz libpri-1.4-current.tar.gz cd dahdi-linux-complete-* make all make install make config cd libpri-1.4.* make make install
9.Compile and install pjproject
cd /usr/src/asterisk-13 tar -xjvf pjproject-2.4.tar.bz2 rm -f pjproject-2.4.tar.bz2 cd pjproject-2.4 CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --libdir=/usr/lib64 make dep make make install
10. Compile and Install jansson
cd /usr/src/asterisk-13 tar vxfz jansson.tar.gz rm -f jansson.tar.gz cd jansson-* autoreconf -i ./configure --libdir=/usr/lib64 make && make install
11. Compile and install Asterisk
cd /usr/src/asterisk-13 tar xvfz asterisk-13-current.tar.gz cd asterisk-* ./configure --libdir=/usr/lib64
12. Setup menu options by running the following command
make menuselect
On Add-ons select chan_ooh323 and format_mp3 as shown below
On Core Sound Packages, select the formats of Audio packets like below
On Music On Hold, option select the following modules as shown in the picture below
On Extra Sound Packages select as shown below:
13. Now run the following command to download the mp3 decoder library into the source tree.
cd /usr/src/asterisk-13/asterisk-* contrib/scripts/get_mp3_source.sh
14. Do installation of selected modules
cd /usr/src/asterisk-13/asterisk-*/ make make install make samples make config
15. Create separate user and group to run asterisk services
useradd -m asterisk chown asterisk.asterisk /var/run/asterisk chown -R asterisk.asterisk /etc/asterisk chown -R asterisk.asterisk /var/{lib,log,spool}/asteris chown -R asterisk.asterisk /usr/lib64/asterisk
16. Make systemctl start asterisk by copying init script to init.d dir.
cd /usr/src/asterisk-13/asterisk-* cp contrib/init.d/rc.redhat.asterisk /etc/init.d/asterisk chmod 755 /etc/init.d/asterisk
Locate asterisk by
$ which asterisk
Then open the file /etc/init.d/asterisk by
sudo vim /etc/init.d/asterisk
Replace AST_SBIN=, with your location of asterisk binary, for my case it’s /sbin/. See below image.
17. Disable SELinux
sed -i 's/(^SELINUX=).*/SELINUX=disabled/' /etc/selinux/config sestatus
18. Setup Asterisk Database
[root@asterisk-cloud ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 4 Server version: 5.5.44-MariaDB MariaDB Server Copyright (c) 2000, 2015, 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 'password'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> create database cdrdb; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> create database asterisk; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON cdrdb.* TO asterisk@localhost IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> exit Bye
19. Make all asterisk PBX ports accessible by adding the following rules
firewall-cmd --zone=public --add-port=5060/udp --permanent firewall-cmd --zone=public --add-port=5060/tcp --permanent firewall-cmd --zone=public --add-port=5061/udp --permanent firewall-cmd --zone=public --add-port=5061/tcp --permanent firewall-cmd --zone=public --add-port=4569/udp --permanent firewall-cmd --zone=public --add-port=5038/tcp --permanent firewall-cmd --zone=public --add-port=10000-20000/udp --permanent
20. Commit changes
[root@asterisk-cloud ~]# firewall-cmd --reload success
21. Confirm that the rules are added.
[root@asterisk-cloud ~]# firewall-cmd --zone=public --list-all public (default, active) interfaces: eth0 sources: services: dhcpv6-client ssh ports: 5061/tcp 4569/udp 5060/tcp 10000-20000/udp 5061/udp 5060/udp 5038/tcp masquerade: no forward-ports: icmp-blocks: rich rules:
Restart asterisk server
systemctl restart asterisk
17. Check if running
sudo systemctl status asterisk
Further reading: How to secure Asterisk and FreePBX from VoIP Fraud and Brute force attacks
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK