myfreax

如何在CentOS 7安装Asterisk

Asterisk是最流行和广泛采用的开源PBX平台,为IP PBX系统,会议服务器和VoIP网关提供动力。全球各地的个人,小型企业,大型企业和政府都使用它

6 min read
By myfreax
如何在CentOS 7安装Asterisk
如何在CentOS 7安装Asterisk

Asterisk是最流行和广泛采用的开源PBX平台,为IP PBX系统,会议服务器和VoIP网关提供动力。全球各地的个人,小型企业,大型企业和政府都使用它。

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

本教程将指导您完成在CentOS 7安装Asterisk 15所需的步骤。在继续本教程之前,请确保您以具有sudo权限的用户登录。

首先更新您的CentOS系统并安装编译Asterisk源码所需依赖软件。如果SELinux设置为enforcing模式,asterisk将无法正常运行。

要禁用SELinux安全功能,使用你喜欢的文本编辑器打开/etc/selinux/config文件并设置SELINUX=disabled。在本教程中我们使用Vim打开文件

sudo yum update
sudo yum groupinstall core base "Development Tools"

sudo vim /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
/etc/selinux/config 

保存文件并退出vim,然后运行命令sudo shutdown -r now重新启动CentOS系统。当计算机重新启动后,运行getenforce命令,命令将会打印Disabled

sudo shutdown -r now
getenforce
Disabled

下载asterisk

我们将在/usr/src目录中下载Asterisk源码,这是放置源文件的常用目录。运行cd命令更改当前目录为/usr/src目录。

运行wget命令下载最新版本的Asterisk 15,下载完成后,使用tar命令提取解压缩文件asterisk-15-current.tar.gz。

在继续下一步之前,运行cd命令切换到asterisk-15源目录,运行命令cd asterisk-15.*/

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

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

cd asterisk-15.*/

安装asterisk

现在我们已经将Asterisk源码下载到/usr/src目录中。并运行cd命令切换到Asterisk源码目录。

运行get_mp3_source.sh脚本下载构建MP3模块所需的MP3源码。再运行install_prereq脚本以安装必要的依赖软件。

运行sudo ./configure --libdir=/usr/lib64脚本执行多个检查以确保系统上的所有依赖项都存在。

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

下一步是选择要编译和安装的模块。默认情况下大多数模块已启用。你可以运行命令sudo make menuselect,选择要安装的模块。

sudo make menuselect

选择format_mp3选项,指示Asterisk构建MP3模块。完成后,切换到save&exit按钮,然后按Enter。启动编译过程,运行命令sudo make -j2

编译可能需要一些时间,具体取决于您的系统。 您可以根据处理器的核心数修改-j后面的数字。完成后,运行命令sudo make install安装Asterisk及其模块。

sudo make menuselect
sudo make -j2
sudo make install
asterisk mp3

您可以运行命令sudo make samples安装通用的配置文件。或者安装基本PBX配置文件运行命令sudo make basic-pbx

最后一步是运行命令sudo make config运行Asterisk init脚本,运行ldconfig更新共享库缓存。

sudo make samples
#sudo make basic-pbx

sudo make config
sudo ldconfig

创建Asterisk用户

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

运行adduser命令创建名为asterisk的新系统用户。然后配置Asterisk程序作为asterisk用户运行。

使用你喜欢的文本编辑器打开/etc/default/asterisk文件并取消注释以下两行。在本教程中我们使用Vim打开文件

sudo adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk PBX" asterisk

sudo vim /etc/default/asterisk
AST_USER="asterisk"
AST_GROUP="asterisk"
/etc/default/asterisk

然后将asterisk用户添加到dialoutaudio组。运行命令sudo usermod -a -G dialout,audio asterisk

除此之外,我们还需要更改Asterisk文件和目录的所有权和权限,使用户Asterisk可以访问这些文件。

sudo usermod -a -G dialout,audio asterisk

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

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

启动Asterisk

当Asterisk安装完成后,Asterisk将会作为systemd的服务单元在后台运行。运行命令sudo systemctl start asterisk启动Asterisk服务。

验证Asterisk是否正在运行,请运行命令sudo systemctl status asterisk。你也可以运行命令sudo asterisk -vvvr连接到Asterisk命令行接口。

你会看到默认的Asterisk CLI提示符,最后一步是启用自动启动Asterisk服务,运行命令sudo systemctl enable asterisk

sudo systemctl start asterisk
sudo systemctl status asterisk
sudo asterisk -vvvr
sudo systemctl enable asterisk
Connected to Asterisk GIT-18-263f906af4 currently running on ubuntu2004 (pid = 91303)
ubuntu2004*CLI>

配置防火墙

防火墙为您的服务器提供安全保证。如果您的服务器上没有配置防火墙,则可以查看我们的教程如何在CentOS 7配置防火墙firewalld

默认情况下,SIP使用UDP端口5060,因此我们需要打开此端口。如果启用了RTP实时协议,则还需要打开10000-20000的端口范围。至此,Asterisk已安装完成。

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

使用你喜欢的文本编辑器打开/etc/firewalld/services/asterisk.xml文件并输入以下内容。在本教程中我们使用Vim打开文件

<?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>
/etc/firewalld/services/asterisk.xml

保存文件并退出vim,然后运行命令sudo firewall-cmd应用新的防火墙规则。最后检查新防火墙规则是否成功应用。运行命令sudo firewall-cmd --list-all

sudo firewall-cmd --add-service=asterisk --permanent
sudo 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:

结论

在本教程中,我们向您展示如何在CentOS 7系统从源码安装最新的Asterisk版本。您现在应该查看Asterisk文档,并详细了解如何配置和使用Asterisk。

如果您遇到问题或有反馈,请在下面发表评论。