网站搜索

如何在 CentOS/RHEL 8/7 上安装 Asterisk


Asterisk 是一个用于构建通信应用程序的开源框架。您可以使用它将本地计算机或服务器转变为通信服务器。它用于为 IP PBX 系统、VoIP 网关、会议服务器和其他解决方案供电。它被全世界各种组织使用,最后但并非最后它是免费和开源的。

在本教程中,我们将向您展示如何在 CentOS 8/7 上安装 Asterisk(说明也适用于 RHEL 8/7) ,但在开始之前,我们需要做一些准备工作,以便Asterisk安装后能够顺利运行。

步骤 1:在 CentOS 上禁用 SELinux

为此,请通过 SSH 连接到您的系统并使用您最喜欢的命令行文本编辑器,打开 /etc/selinux/config 并禁用 SELINUX

vim /etc/selinux/config

SELinux 行应该如下所示:

SELINUX=disabled

现在重新启动您的系统。一旦它再次通过 SSH 连接到该系统。

第2步:安装所需的软件包

Asterisk 有很多需要安装的要求。您可以使用以下 yum 命令来安装所需的软件包,如图所示。

yum install -y epel-release dmidecode gcc-c++ ncurses-devel libxml2-devel make wget openssl-devel newt-devel kernel-devel sqlite-devel libuuid-devel gtk2-devel jansson-devel binutils-devel libedit libedit-devel

在继续之前,创建一个具有 sudo 权限的新用户“asterisk”,我们将使用该用户在系统上设置asterisk

adduser asterisk -c "Asterisk User"
passwd asterisk 
usermod -aG wheel asterisk
su asterisk

接下来,安装PJSIP,它是一个免费的开源多媒体通信库,它实现了基于标准的协议,例如SIP、SDP、RTP、STUN、TURN和ICE。 Asterisk SIP 通道驱动程序应该可以提高呼叫的清晰度。

要获取最新版本,首先让我们创建一个临时目录,我们将在其中从源代码构建包。

mkdir ~/build && cd ~/build

现在进入 PJSIP 下载页面并获取包或使用以下 wget 命令直接在终端中下载包。

请注意,在撰写本文时,最新版本是2.8,将来可能会发生变化,因此请确保使用最新版本:

wget https://www.pjsip.org/release/2.9/pjproject-2.9.tar.bz2

下载完成后,解压文件并更改到该目录。

tar xvjf pjproject-2.9.tar.bz2
cd pjproject-2.9

下一步是准备要编译的包。您可以使用以下命令:

./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr

您不应该看到任何错误或警告。确保满足所有依赖关系:

make dep

现在我们可以使用以下命令完成安装和链接库:

make && sudo make install && sudo ldconfig

最后,确保所有库均已安装并存在:

ldconfig -p | grep pj

您应该得到以下输出:

libpjsua2.so.2 (libc6,x86-64) => /lib64/libpjsua2.so.2
	libpjsua2.so (libc6,x86-64) => /lib64/libpjsua2.so
	libpjsua.so.2 (libc6,x86-64) => /lib64/libpjsua.so.2
	libpjsua.so (libc6,x86-64) => /lib64/libpjsua.so
	libpjsip.so.2 (libc6,x86-64) => /lib64/libpjsip.so.2
	libpjsip.so (libc6,x86-64) => /lib64/libpjsip.so
	libpjsip-ua.so.2 (libc6,x86-64) => /lib64/libpjsip-ua.so.2
	libpjsip-ua.so (libc6,x86-64) => /lib64/libpjsip-ua.so
	libpjsip-simple.so.2 (libc6,x86-64) => /lib64/libpjsip-simple.so.2
	libpjsip-simple.so (libc6,x86-64) => /lib64/libpjsip-simple.so
	libpjnath.so.2 (libc6,x86-64) => /lib64/libpjnath.so.2
	libpjnath.so (libc6,x86-64) => /lib64/libpjnath.so
	libpjmedia.so.2 (libc6,x86-64) => /lib64/libpjmedia.so.2
	libpjmedia.so (libc6,x86-64) => /lib64/libpjmedia.so
	libpjmedia-videodev.so.2 (libc6,x86-64) => /lib64/libpjmedia-videodev.so.2
	libpjmedia-videodev.so (libc6,x86-64) => /lib64/libpjmedia-videodev.so
	libpjmedia-codec.so.2 (libc6,x86-64) => /lib64/libpjmedia-codec.so.2
	libpjmedia-codec.so (libc6,x86-64) => /lib64/libpjmedia-codec.so
	libpjmedia-audiodev.so.2 (libc6,x86-64) => /lib64/libpjmedia-audiodev.so.2
	libpjmedia-audiodev.so (libc6,x86-64) => /lib64/libpjmedia-audiodev.so
	libpjlib-util.so.2 (libc6,x86-64) => /lib64/libpjlib-util.so.2
	libpjlib-util.so (libc6,x86-64) => /lib64/libpjlib-util.so
	libpj.so.2 (libc6,x86-64) => /lib64/libpj.so.2
	libpj.so (libc6,x86-64) => /lib64/libpj.so

步骤3:在CentOS 8/7上安装Asterisk

我们现在准备开始安装 Asterisk。导航回我们的 ~/build 目录:

cd ~/build

转到 Asterisk 下载页面并获取最新版本,或者您可以使用以下 wget 命令在终端中下载文件。

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

在撰写本教程时,最新的 Asterisk 版本是16。当您执行以下步骤时,请确保您下载的是最新版本的 Asterisk。

现在提取存档并导航到新创建的目录:

tar -zxvf asterisk-16-current.tar.gz
cd asterisk-16.5.1

现在需要提一下,如果您希望在客户端处于等待状态时启用 mp3 支持来播放音乐,则需要安装更多依赖项。这些步骤是可选的:

sudo yum install svn
sudo ./contrib/scripts/get_mp3_source.sh

第二步之后,您应该得到类似于以下的输出:

A    addons/mp3
A    addons/mp3/Makefile
A    addons/mp3/README
A    addons/mp3/decode_i386.c
A    addons/mp3/dct64_i386.c
A    addons/mp3/MPGLIB_TODO
A    addons/mp3/mpg123.h
A    addons/mp3/layer3.c
A    addons/mp3/mpglib.h
A    addons/mp3/decode_ntom.c
A    addons/mp3/interface.c
A    addons/mp3/MPGLIB_README
A    addons/mp3/common.c
A    addons/mp3/huffman.h
A    addons/mp3/tabinit.c
Exported revision 202.

首先运行配置脚本来准备要编译的包:

sudo contrib/scripts/install_prereq install
./configure --libdir=/usr/lib64 --with-jansson-bundled

如果您缺少任何依赖项,请安装它们。就我而言,我收到以下错误:

configure: error: patch is required to configure bundled pjproject

要解决这个问题,只需运行:

yum install patch 

并重新运行配置脚本。如果一切顺利,没有错误,您将看到以下屏幕截图。

现在,让我们开始构建过程:

make menuselect

几秒钟后,您应该会获得要启用的功能列表:

如果您尝试使用音乐保留功能,则需要从“附加组件”部分启用“format_mp3”功能。保存您的列表并运行以下命令:

make && sudo make install

要安装示例配置文件,请使用以下命令:

sudo make samples

要在引导时启动 Asterisk,请使用:

sudo make config

更新以下目录和文件的所有权:

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

最后,让我们测试一下我们的安装:

sudo service asterisk start
sudo asterisk -rvv

您应该看到与此类似的输出:

Asterisk 16.5.1, Copyright (C) 1999 - 2018, Digium, Inc. and others.
Created by Mark Spencer <[email >
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 16.5.1 currently running on centos8-tecmint (pid = 9020)
centos8-tecmint*CLI>

如果您想查看可用命令的列表,请键入:

asterisk*CLI> core show help

要退出星号提示符,只需键入:

asterisk*CLI> exit

Asterisk 仍将在后台运行。

结论

现在,您拥有正在运行的 Asterisk 服务器,您可以开始连接电话和分机并根据需要调整配置。有关如何实现此目的的更多详细信息,建议使用 Asterisk Wiki 页面。如果您有任何问题或意见,请在下面的评论部分告诉我们。