# Asterisk(R) 开源 PBX ``` 由 Mark Spencer 和 Asterisk.org 开发社区编写。 版权所有 (C) 2001-2025 Sangoma Technologies Corporation 及其他版权持有人。 ``` ## 安全 在尝试配置和运行 Asterisk 服务器之前,请务必阅读并充分理解安全信息文档的内容。 更多信息请参阅 [重要安全注意事项](https://docs.asterisk.org/Deployment/Important-Security-Considerations)。 ## 什么是 ASTERISK? Asterisk 是一个开源 PBX 和电话工具包。从某种意义上说,它是底层互联网和电话通道与顶层互联网和电话应用之间的中间件。然而,Asterisk 支持的电话接口不仅仅是互联网电话。Asterisk 还对传统 PSTN 电话提供了广泛的支持。 有关项目本身的更多信息,请访问 [Asterisk 主页](https://www.asterisk.org) 和官方 [Asterisk 文档](https://docs.asterisk.org)。 ## 支持的操作系统 ### Linux Asterisk 开源 PBX 主要在 GNU/Linux 操作系统上开发和测试,并支持所有主流的 GNU/Linux 发行版。 ### 其他 据报道,Asterisk 也已被“移植”并在其他操作系统上正常运行,如苹果的 Mac OS X 和 BSD 变体。 ## 入门指南 如今大多数用户都排他性地使用 VoIP/SIP,但如果你需要连接到 TDM 或模拟服务或设备,请确保你有支持的硬件。 支持的电话硬件包括: * 来自 Sangoma 的所有模拟和数字接口卡 * PortAudio 支持的任何全双工声卡 * Xorcom Astribank 通道银行 ### 从早期版本升级 如果你是从旧版本的 Asterisk 更新,请务必阅读变更日志。 [变更日志](https://downloads.asterisk.org/pub/telephony/asterisk) ### 全新安装 确保你的系统包含兼容的编译器和开发库。Asterisk 要求 GNU 编译器集合 (GCC) 4.1 或更高版本,或者支持 C99 规范和某些 gcc 语言扩展的编译器。此外,你的系统需要有 C 库头文件以及 ncurses 的头文件和库。 许多模块有额外的依赖项。要查看正在查找哪些库,请参阅 `./configure --help`,或运行 `make menuselect` 来查看特定模块的依赖项。 在许多发行版中,这些依赖项由名称类似于 'glibc-devel'、'ncurses-devel'、'openssl-devel' 和 'zlib-devel' 或类似的软件包安装。`contrib/scripts/install_prereq` 脚本可用于为大多数基于 Debian 和 Redhat 的 Linux 发行版安装依赖项。该脚本还处理 SUSE、Arch、Gentoo、FreeBSD、NetBSD 和 OpenBSD,但这些发行版可能没有完全支持,或者可能已过时。 那么,让我们开始吧: 1. 阅读文档。
[Asterisk 文档](https://docs.asterisk.org) 网站提供了构建、安装、配置和运行 Asterisk 的完整信息。 2. 运行 `./configure`
执行 configure 脚本以猜测编译过程中使用的系统相关变量的值。如果脚本指示缺少某些必需组件,你可以运行 `./contrib/scripts/install_prereq install` 来安装必要的组件。请注意,这将安装 Asterisk 所有功能的所有依赖项。运行脚本后,你需要重新运行 `./configure`。 3. 运行 `make menuselect`
如果你想选择要编译的模块并检查各种可选模块的依赖项,则需要此步骤。 4. 运行 `make`
假设构建成功完成: 5. 运行 `make install`
如果是第一次使用 Asterisk,你可能希望安装示例 PBX,其中包含演示扩展等。如果是这样,请运行: 6. 运行 `make samples`
这样做将覆盖你已安装的任何现有配置文件。 7. 最后,你可以使用以下命令在前台模式(非守护进程)下启动 Asterisk:
`asterisk -vvvc`
在 Asterisk 初始化时,你会看到屏幕上飞过一堆详细消息(这就是“非常非常详细”模式)。准备就绪后,如果你指定了 "c",你将获得一个命令行控制台,如下所示:
`*CLI>`
你可以随时输入 `core show help` 以获取系统帮助。如需特定命令的帮助,请输入 `core show help `。 在 Unix/Linux 命令行提示符下输入 `man asterisk` 将为你提供有关如何启动和停止 Asterisk 的详细信息,以及启动 Asterisk 的所有命令行选项。 ### 关于配置文件 所有 Asterisk 配置文件共享一种通用格式。注释由 `;` 分隔(因为 `#` 作为 DTMF 数字,可能出现在许多地方)。配置文件分为若干部分,其名称出现在 `[]` 中。每个部分通常包含 `variable = value` 形式的语句,尽管你可能会在较旧的示例中看到 `variable => value`。 ### 关于时间的特别说明 使用 SIP 电话的用户应注意,Asterisk 对时间的剧烈跳变非常敏感。手动使用 date(1)(或其他类似命令)更改系统时间可能会导致 SIP 注册和其他内部流程失败。因此,你应该始终使用时间同步软件包来保持系统时间的准确性。所有操作系统/发行版都提供以下一个或多个软件包: * ntpd/ntpsec * chronyd * systemd-timesyncd 请务必安装并配置其中一个(且仅一个)。 ### 文件描述符 根据系统的规模和配置,Asterisk 可能会消耗大量文件描述符。在 UNIX 中,文件描述符不仅用于磁盘上的文件。文件描述符还用于处理网络通信(例如 SIP、IAX2 或 H.323 调用)和硬件访问(例如模拟和数字中继硬件)。Asterisk 访问许多磁盘文件,从配置信息到语音邮件存储。 大多数系统限制 Asterisk 一次可以打开的文件描述符数量。这可能会限制系统可以处理的并发呼叫数。例如,如果限制设置为 1024(常见的默认值),Asterisk 大约可以同时处理 150 个 SIP 呼叫。要更改文件描述符的数量,请按照下面针对你的系统的说明进行操作: #### 基于 PAM 的 LINUX 系统 如果你的系统使用 PAM (可插拔认证模块),请编辑 `/etc/security/limits.conf`。在文件底部添加以下行: ```text root soft nofile 4096 root hard nofile 8196 asterisk soft nofile 4096 asterisk hard nofile 8196 ``` (根据需要调整数字)。你可能需要重启系统才能使这些更改生效。 #### 通用 UNIX 系统 如果上面没有专门适用于你的系统的说明,你可以尝试将命令 `ulimit -n 8192` 添加到启动 Asterisk 的脚本中。 ## 更多信息 访问 [Asterisk 文档](https://docs.asterisk.org) 网站以获取有关各种功能的更多文档,并请阅读包含配置选项文档的所有配置示例。 最后,你可能希望加入 [Asterisk 社区论坛](https://community.asterisk.org)。 欢迎加入不断壮大的全球 Asterisk 用户社区! ``` Mark Spencer 以及 Asterisk.org 开发社区 ``` --- Asterisk 是 Sangoma Technologies Corporation 的商标 \[[Sangoma](https://www.sangoma.com/)\] \[[主页](https://www.asterisk.org)\] \[[支持](https://www.asterisk.org/support)\] \[[文档](https://docs.asterisk.org)\] \[[社区论坛](https://community.asterisk.org)\] \[[发布说明](https://github.com/asterisk/asterisk/releases)\] \[[安全](https://docs.asterisk.org/Deployment/Important-Security-Considerations/)\] \[[邮件列表存档](https://lists.digium.com)\]