如何在CentOS 7上逐步安装Asterisk PBX 13.x

时间:2020-02-23 14:30:36  来源:igfitidea点击:

大家好,本指南将要安装Asterisk 13.0.6. 这将是一个完整的易于遵循的教程。对于最新发行的Asterisk,请查看如何在CentOS 7上安装Asterisk 15 PBX。那么让我们首先定义PBX和Asterisk是什么?

什么是PBX?
首先,Asterisk是专用小交换机。 PBX是处理私人企业而非电话拥有的电话交换的一种设备。 PBX可以看作是专用电话总机,在一侧连接到一个或者多个电话,而在另一侧通常连接到一个或者多个电话线。
什么是Asterisk?
Asterisk是完整的PBX。它实现了大多数市售PBX的所有主要功能。它还免费实现了在商业安装中通常会花费很多的功能:电话会议,直接进入系统访问,呼叫寄存和呼叫队列,仅举几例。

我们可以在执行任何安装之前设置主机名和时区。使用以下命令。

sudo timedatectl  list-timezones
sudo timedatectl  set-timezone Africa/Nairobi

要设置主机名,请输入:

sudo hostnamectl set-hostname pbx-01.example.com

如果CentOS服务器有错误的键盘映射。我们可以修复它们。

$  localectl 
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
$localectl list-keymaps

为我们设置键盘映射:

sudo localectl set-keymap us

我们可以通过在终端上以root身份执行以下命令来将系统语言设置为英语。

sudo localectl set-locale LANG=en_US.UTF-8

1.首先,进行系统更新

sudo yum -y update

2.安装缺少的依赖项

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.安装其他缺少的依赖项,而不是在中

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.设置并配置mariadb数据库,并设置密码。

systemctl start mariadb
systemctl enable mariadb

现在,通过运行以下命令来设置密码。

mysql_secure_installation

如果我们尚未为mysql设置密码,请按Enter。同意删除测试数据库并禁止远程登录。

5.安装Jansson,它是一个C库,用于编码,解码和处理JSON数据。让我们使用以下命令下载,解压缩和编译它。

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.安装Legacy Pear要求

pear install Console_Getopt

7.下载Asterisk源文件。

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.如果要连接到PSTN,请编译并安装DAHDI。这是可选的,如果要连接到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,编译安装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.编译并安装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.编译并安装asterisk

cd /usr/src/c-13
tar xvfz asterisk-13-current.tar.gz
cd asterisk-*
./configure --libdir=/usr/lib64

12.通过运行以下命令来设置菜单选项

make menuselect

在添加组件上,选择chan_ooh323和format_mp3,如下所示

在"核心声音包"上,选择音频数据包的格式,如下所示

在"保留音乐"上,选项选择以下模块,如下图所示

在"额外声音包"上,选择如下所示:

13.现在运行以下命令,将mp3解码器库下载到源代码树中。

cd /usr/src/asterisk-13/asterisk-*
contrib/scripts/get_mp3_source.sh

14.安装所选模块

cd /usr/src/asterisk-13/asterisk-*/
make
make install
make samples
make config

15.创建单独的用户和组以运行星号服务

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.通过将init脚本复制到init.d目录中,使systemctl以星号开头。

cd /usr/src/asterisk-13/asterisk-*
cp contrib/init.d/rc.redhat.asterisk  /etc/init.d/asterisk
chmod 755 /etc/init.d/asterisk

通过找到asterisk

$which asterisk

然后通过以下方式打开文件/etc/init.d/asterisk

sudo vim /etc/init.d/asterisk

在我的情况下,将AST_SBIN =替换为星号二进制文件的位置,将其替换为/sbin /。见下图。

17.禁用SELinux

 sed -i 's/(^SELINUX=).*/SELINUX=disabled/' /etc/selinux/config
 sestatus

18.设置asterisk数据库

[theitroad@localhost ~]# 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, 2014, 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 theitroad@localhost IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cdrdb.* TO theitroad@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.通过添加以下规则,使所有asterisk PBX端口均可访问

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.提交更改

[theitroad@localhost ~]# firewall-cmd --reload
success

21.确认已添加规则。

[theitroad@localhost ~]# 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:

重新启动asterisk服务器

systemctl restart asterisk

17.检查是否正在运行

sudo systemctl status asterisk