CentOS7 + Asterisk16をビルドしてインストール

Asteriskをソースからビルドしたときの覚書。

環境: CentOS 7.7.1908, Asterisk 16.7.0


Asteriskのバージョンごとのサポート期間


1.全部入りFreePBX Distroをインストールする場合

FreePBX DistroはPBXに必要なAsteriskと管理ツールをパッケージしたもの(OSもセット)。
ダウンロードはこちらから。
ダウンロードしたのは「STABLE SNG7-PBX-64bit-1910」
CentOS 7.6がベース。詳細はRelease Notes参照。

インストール方法はこちら。



2.Asteriskをソースからビルドする

今後の事を考えてソールからビルドしてみた。
参考サイト。両サイトを見比べながらインストールした。

直接電話回線と接続する場合は、DAHDIをビルドしてインストールする必要があるらしい。
今回想定しているのはLAN経由なのでスキップ。

バージョン15から通信プロトコルSIPのライブラリに大きな変更があったらしい。
まだよく分かってないがメモ。

必要なパッケージをYUM経由でインストール
# yum groupinstall "Development Libraries" "Additional Development"
# yum install gcc gcc-c++
# yum install libxml2 libxml2-devel openssl-devel ncurses-devel sqlite-devel newt-devel libuuid-devel uuid-devel libedit-devel
# yum install json-c json-c-devel

下記ツールも必要になるらしい。
# yum install wget bzip2 patch
# yum install subversion

Asteriskのソースをダウンロード
# cd /opt/software/
# curl -O http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
# tar -xzvf asterisk-16-current.tar.gz

ビルド
# cd asterisk-16.7.0/
# ./configure --with-jansson-bundled

日本語音声ファイルをインストール
# make menuselect
Core Sound Packages → CORE-SOUND-JA*を全て選択

ここに書いてあったので、下記も選択
Add-ons → 「chan_ooh323」「format_mp3」
Core Sound Packages → CORE-SOUND-EN-*の8つ
Music On Hold File Packages → MOH-OPSOUND-GSMまでの上4つ
Extras Sound Packages → EXTRA-SOUNDS-GSMまでの上4つ

mp3関連ソースコードを取得
# ./contrib/scripts/get_mp3_source.sh

このスクリプトを実行すると./addons/mp3/にソースコードをダウンロードする。
./addons/mp3/interface.cにそれらしい記述があるか確認。
なければ./addons/mp3/をまるごと削除してスクリプトを再実行する。
(最初なぜかinterface.cが空になってmakeが通らずハマった)

コンパイル&インストール
# make

エラー
Assembler messages:
Fatal error: can't create dns_recurring.o: No space left on device
make[1]: *** [dns_recurring.o] Error 2
make: *** [main] Error 2
ディスク容量がない?確認
# df -m
「/」が100%になってる。
仮想マシン上でディスク容量を増やす。
参考:【CentOS】LVMでディスク容量を拡張(VMwareのHDD容量を増やす

コンパイル続行
# make
# make install

/etc/asterisk/にサンプル設定ファイルを作る
# make samples

コンパイルをやり直す場合は
# make clean

confirueからやり直す場合は
# make distclean

makeコマンドのオプションは公式サイトを参考に。

make configはchkconfigをやるみたいだから、systemctlを使ってサービスを管理。
サービスの作成
# vi /etc/systemd/system/asterisk.service

ここにある通りに記述。
サービスの実行。自動起動はまだしない。
# systemctl daemon-reload
# systemctl start asterisk

確認
# systemctl status asterisk

自動起動するように設定
# systemctl enable asterisk

設定ファイルに何が書いてあるか確認
# less /etc/asterisk/asterisk.conf

サンプル設定ファイルに置き換えてみる。
参考:Asterisk 13 サンプル設定ファイル - VoIP-Info.jp
# cd /etc/asterisk/
# mkdir bak
#cp *.conf *.adsi bak/
# curl -O https://voip-info.jp/downloads/asterisk/conf/conf-sample-13_0627.tar.gz
# tar -xzvf conf-sample-13_0627.tar.gz

サービス再起動と確認
# systemctl restart asterisk
# systemctl status asterisk

エラーが気になるけど後回し。


3.Asteriskの管理コンソール実行

asteriskコマンドの確認
参考: Connecting to the Asterisk CLI - Asterisk Project - Asterisk Project Wiki
# asterisk -h

このマシンの管理コンソールへ接続
# asterisk -cr

ヘルプ表示
CLI> core show help

sipで接続している端末表示
CLI> sip show peers

それらしい一覧が出てきた。
終了
CLI> quit


4.ファイアウォールの設定

いくつか使用するので下記ページを参考に。


テストするだけならiptablesを停止した方が簡単。
sipのポート5060(sip.confに書いてある)を開けただけだと、電話は掛かるけど音声が聞こえない状態になる。

iptablesを停止
# systemctl stop iptables


次回はスマホで繋げてみる。


【関連記事】