如何在CentOS 7上安装 Asterisk

时间:2020-03-05 15:32:57  来源:igfitidea点击:

Asterisk是最受欢迎和广泛采用的开源PBX平台,可为IP PBX系统,会议服务器和VoIP网关提供支持。
世界各地的个人,小型企业,大型企业和政府都在使用它。

Asterisk功能包括语音邮件,保留的音乐,电话会议,调用排队,调用记录,交互式语音响应等等。

本教程将指导我们完成在CentOS 7上安装Asterisk 15所需的步骤。

准备工作

  • 在继续本教程之前,请确保我们以具有sudo特权的用户身份登录。
  • 更新CentOS系统并安装编译Asterisk源代码所需的开发工具:
sudo yum updatesudo yum groupinstall core base "Development Tools"

禁用Selinux

如果SELinux设置为“强制”模式,则Asterisk将无法正常运行。

要禁用SELinux安全功能,请打开“/etc/selinux/config”文件并设置“ SELINUX = disabled”

/etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted

保存文件并使用以下方法重新启动CentOS系统:

sudo shutdown -r now

机器启动后,请确保“ getenforce”命令返回“ Disabled”:

getenforce
Disabled

下载 Asterisk

我们将在“/usr/src”目录中下载Asterisk源代码,该目录是放置源文件的常用位置。

通过键入以下内容转到“/usr/src”目录:

cd /usr/src/

使用以下wget命令下载最新版本的Asterisk 15:

sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-15-current.tar.gz

下载完成后,使用以下命令解压缩下载的文件:

sudo tar zxf asterisk-15-current.tar.gz

在继续下一步之前,请确保通过键入以下内容切换到Asterisk源目录:

cd asterisk-15.*/

安装 Asterisk依赖项

下载构建MP3模块并在Asterisk上使用MP3文件所需的MP3源:

sudo contrib/scripts/get_mp3_source.sh

接下来,使用“ install_prereq”脚本安装所有缺少的依赖项:

sudo contrib/scripts/install_prereq install

该脚本将安装所有必需的软件包,并且在成功完成后,将打印以下消息:

sh## install completed successfully

安装 Asterisk

“配置”脚本将执行许多检查,以确保存在构建和安装过程所需的所有依赖项,请通过键入以下内容启动脚本:

sudo ./configure --libdir=/usr/lib64

成功完成后,我们将看到以下输出:

下一步是选择要编译和安装的模块。

大多数模块已启用。
通过键入以下内容来访问Menuselect系统:

sudo make menuselect

我们已经下载了MP3源文件,现在我们需要告诉Asterisk通过选择'format_mp3'来构建MP3模块:

完成后,按“ F12”保存并退出,或者切换到“保存并退出”按钮,然后按“ Enter”。

使用“ make”命令开始编译过程:

sudo make -j2

该构建可能需要一些时间才能完成,具体取决于系统。
我们可以根据处理器的内核数量修改“ -j”标志。

构建过程完成后,将显示以下消息:

下一步是通过键入以下命令来安装Asterisk及其模块:

sudo make install

安装完成后,脚本将显示以下消息:

现在已经安装了 Asterisk,我们需要安装示例配置文件。

通过键入以下命令,安装带有参考文档的通用配置文件:

sudo make samples

或者安装基本的PBX配置文件:

sudo make basic-pbx

最后一步是通过键入以下命令来安装Asterisk初始化脚本:

sudo make config

最后运行“ ldconfig”以更新共享库缓存:

sudo ldconfig

创建 Asterisk用户

默认情况下,Asterisk以root用户身份运行。
出于安全原因,我们将创建一个新的系统用户,并将Asterisk配置为以新创建的用户身份运行。

要创建名为“ asterisk”的新系统用户,请运行以下命令:

sudo adduser --system --user-group --home-dir /var/lib/asterisk --no-create-home asterisk

要将Asterisk配置为以“ asterisk”用户身份运行,请打开“/etc/sysconfig/asterisk”文件,并取消注释以下两行:

/etc/sysconfig / Asterisk

AST_USER="asterisk"
AST_GROUP="asterisk"

将“ Asterisk”用户添加到“拨号”和“音频”组:

sudo usermod -a -G dialout,audio asterisk

我们还需要更改所有 Asterisk文件和目录的所有权和权限,以便用户 Asterisk可以访问这些文件:

sudo chown -R asterisk: /var/{lib,log,run,spool}/asterisk /usr/lib64/asterisk /etc/asterisksudo chmod -R 750 /var/{lib,log,run,spool}/asterisk /usr/lib64/asterisk /etc/asterisk

启动 Asterisk

现在我们已经完成了所有的设置,我们可以使用以下命令启动Asterisk服务:

sudo systemctl start asterisk

要验证Asterisk是否正在运行,请键入以下内容以连接到Asterisk命令行界面(CLI):

sudo asterisk -vvvr

我们会看到默认的Asterisk CLI提示符:

最后一步是启用Asterisk服务以启动时使用以下命令启动:

sudo systemctl enable asterisk

调整防火墙规则

现在已经安装并正在运行Asterisk,我们需要配置防火墙以允许Asterisk特定端口上的流量。

如果系统未启用防火墙,则可以跳过此部分。

打开我们选择的文本编辑器,并创建以下防火墙服务:

/etc/firewalld/services/asterisk.xml

<?xml version="1.0" encoding="utf-8"?>
<service version="1.0">
  <short>asterisk</short>
  <description>Asterisk is a software implementation of a telephone private branch exchange (PBX).</description>
  <port protocol="udp" port="10000-10100"
  <port protocol="udp" port="4569"
  <port protocol="udp" port="2727"
  <port protocol="udp" port="5060-5061"
</service>

保存文件并通过键入以下内容应用新的防火墙规则:

sudo firewall-cmd --add-service=asterisk --permanentsudo firewall-cmd --reload

最后,使用以下命令检查新的防火墙规则是否成功应用:

sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client asterisk
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

可以根据需要随意调整防火墙。