Asterisk作為目前世界上使用最普遍的企業(yè)級融合通信,VoIP的語(yǔ)音基礎平臺,已經(jīng)廣泛部署在全球不同的云平臺,其用戶(hù)體量也非常巨大。在企業(yè)語(yǔ)音通信功能方面支持了非常豐富的業(yè)務(wù)功能,包括SIP呼叫,WebRTC,PSTN接入,實(shí)現了開(kāi)源IPPBX,FreePBX,免費辦公電話(huà)系統,辦公電話(huà)系統的全開(kāi)源時(shí)代。因此,Asterisk也需要進(jìn)一步進(jìn)行適配來(lái)完成Asterisk在華為鯤鵬服務(wù)器環(huán)境的支持。華為云不僅僅支持X86架構的下的各種linux開(kāi)源操作系統,同時(shí)也支持華為鯤鵬CPU的環(huán)境下的操作系統。因為Asterisk本身已經(jīng)實(shí)現了很多基于云平臺X86 CPU的安裝部署,筆者不再重復。今天,我們主要計劃測試一下華為鯤鵬CPU的云平臺ECS,基于操作系統Kylin Linux Advanced Server for Kunpeng V10的安裝編譯。
說(shuō)明,前幾天Asterisk官方剛剛發(fā)布了Asterisk-19版本,因此我們以Asterisk-19為測試版本進(jìn)行編譯安裝。
1、購買(mǎi)華為ECS,選擇鯤鵬CPU和Kylin linux服務(wù)器版本
首先,購買(mǎi)華為云服務(wù),選擇鯤鵬CPU和1vCPUs | 1 GiB | kc1.small.1,操作系統是:Kylin Linux Advanced Server for Kunpeng V10。

用戶(hù)可以根據自己的情況,選擇性能更好的CPU進(jìn)行測試。如果初期測試,建議用戶(hù)選擇按需購買(mǎi),系統不工作時(shí)不計費,這樣減少一些部署成本。用戶(hù)完成了一步步購買(mǎi)啟動(dòng)程序以后,用戶(hù)可以通過(guò)公網(wǎng)IP進(jìn)行系統訪(fǎng)問(wèn)。


安裝好以后,通過(guò)公網(wǎng)IP地址使用SSH登錄到華為鯤鵬云后臺進(jìn)行下一步的安裝流程。這些流程是基本的ECS購買(mǎi)啟動(dòng)的基本流程,華為網(wǎng)站有非常詳細說(shuō)明,筆者這里不再做過(guò)多介紹。用戶(hù)可以根據自己所處的地區,購買(mǎi)距離自己最近的ECS服務(wù)器。當然,為了實(shí)現快速安裝,實(shí)現無(wú)障礙訪(fǎng)問(wèn)github支持庫,用戶(hù)也可以選擇國外的節點(diǎn)來(lái)部署鯤鵬云ECS示例。
2、編譯Asterisk-19前的準備
用戶(hù)登錄了華為ECS以后,可以通過(guò)命令進(jìn)行安裝部署。在安裝編譯之前,我們首先需要做一點(diǎn)準備工作。根據筆者使用情況來(lái)看,Kylin Linux的命令基本上是繼承了Centos系統的命令。因此,在安裝過(guò)程中,如果用戶(hù)熟悉Centos或者其他紅帽子變種發(fā)行版的用戶(hù),可以按照Centos命令安裝支持包,編譯文件。如果發(fā)現有其他命令需要驗證的話(huà),建議訪(fǎng)問(wèn)Kylin Linux文檔說(shuō)明。為了保險起見(jiàn),用戶(hù)需要提前更新一下系統支持包,然后執行針對Asterisk的支持包的安裝,以下安裝包是Asterisk官方安裝建議支持的支持包,筆者在安裝時(shí)缺省了 “epel-release”。
yum install -y 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 wget
完整安裝以上所有支持包以后,下載Asterisk-19 tar壓縮文件。

在以上安裝流程中,我們國內訪(fǎng)問(wèn)Asterisk官方比較慢,也可能是因為筆者系統帶寬不足導致。因此,如果讀者希望快速安裝的話(huà),可以通過(guò)本地直接下載,然后上傳到ECS服務(wù)器。
另外比較重要的一個(gè)支持包是jansson 支持包。這個(gè)支持包直接yum安裝比較頭疼,建議用戶(hù)直接通過(guò)源代碼安裝方式安裝:
cd /usr/src/
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf // 如果執行錯誤,請先安裝此命令,yum install
./configure
make
make install
如果出現“uuid support not found”安裝錯誤時(shí),系統缺少了uuid開(kāi)發(fā)包支持,用戶(hù)需要安裝uuid 開(kāi)發(fā)包:
yum install libuuid-devel
如果出現了libedit 開(kāi)發(fā)包錯誤的話(huà),用戶(hù)執行:
yum install libedit-devel
如果出現了 libxml2 錯誤,用戶(hù)需要安裝
yum install libxml2
3、安裝PJSIP和Asterisk
PJSIP是Asterisk目前和未來(lái)新版本使用的SIP協(xié)議棧,所以,用戶(hù)可以先編譯PJSIP,用戶(hù)也可以通過(guò)Asterisk編譯自動(dòng)綁定PJSIP的版本。如果用戶(hù)需要手動(dòng)編譯PJSIP,用戶(hù)可以下載PJSIP,執行源代碼編譯安裝:
cd /usr/src
wget https://github.com/pjsip/pjproject/archive/2.10.tar.gz
tar xvf 2.10.tar.gz
cd pjproject-2.10
./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
make dep
make
make install
ldconfig
如果PJSIP出現了編譯錯誤的話(huà),包括WebTC的支持包等,用戶(hù)通過(guò)CFLAGS
參數關(guān)閉選項。
安裝好PJSIP以后,用戶(hù)可以開(kāi)始安裝Asterisk-19,執行配置命令來(lái)先完成配置設置。切換到Asterisk-19 源代碼目錄,執行環(huán)境檢查,確保所有支持包成功安裝:
cd contrib/scripts/install_prereq install
完成安裝檢測以后,執行配置命令。如果發(fā)現有類(lèi)似錯誤出現的話(huà)(configure: error: patch is required to configure bundled pjproject),需要安裝patch命令,否則,Asterisk官方補丁不會(huì )執行。
yum install patch
在源代碼目錄下執行./configure, 如果環(huán)境配置成功的話(huà),就會(huì )出現Asterisk的圖例。

然后執行編譯安裝命令:
make && make install

然后執行 “make sample”命令, 安裝Asterisk默認配置文件:


到這一步,Asterisk的編譯安裝基本完成。我們訪(fǎng)問(wèn)CLI后臺參考具體環(huán)境數據。
4、啟動(dòng)Asterisk-19,檢測測試環(huán)境和鯤鵬CPU版本。
安裝好Asterisk以后,用戶(hù)可以使用命令來(lái)進(jìn)入到Asterisk CLI后臺,查看加載的模塊,版本等信息,確保啟動(dòng)沒(méi)有出現任何錯誤。
Asterisk -vvvvvvvgc


到此為止,基于華為云鯤鵬ECS服務(wù)器安裝的Asterisk-19 成功安裝編譯。具體的配置環(huán)境和CPU消息如下,執行lshw:

lscpu 顯示的鯤鵬CPU處理器信息:

5、測試Asterisk-19環(huán)境呼叫
安裝啟動(dòng)了Asterisk-19僅表示我們在華為云成功編譯了asterisk。但是,我們這里的Asterisk仍然處于非常不安全的設置環(huán)境中,還有環(huán)境安全端口SIP,RTP等端口設置仍然沒(méi)有開(kāi)啟。特別是Asterisk部署在公網(wǎng)環(huán)境中,SBC是必不可少的SIP安全機制,為了真正實(shí)現華為云鯤鵬服務(wù)器ECS的安全穩定的工作,我們需要前端部署一個(gè)SBC來(lái)實(shí)現防火墻和拓撲隱藏功能。外部SIP 網(wǎng)絡(luò )資源必須通過(guò)SBC來(lái)實(shí)現Asterisk(IPPBX)的業(yè)務(wù)處理。

通過(guò)SBC支持,此解決方案可以滿(mǎn)基于A(yíng)sterisk或者FreeSWITCH等開(kāi)源軟交換開(kāi)發(fā)的企業(yè)通信平臺,金融客服,呼叫中心,云對講平臺,門(mén)禁對講系統,外網(wǎng)SIP終端注冊實(shí)現天地物之間的安全穩定集成環(huán)境。
6、總結
通過(guò)在華為云ECS實(shí)現安裝編譯Asterisk-19環(huán)境,滿(mǎn)足了對平臺編譯的要求,另外筆者也驗證了Kylin Linux的安裝支持包的完整性,基本上消除了筆者對其他開(kāi)源軟件部署的支持能力懷疑,至少在A(yíng)sterisk安裝所需要的支持包相對還是比較完整的。另外,安裝流程相對比較流暢,基本上沒(méi)有出現太多安裝包缺失的問(wèn)題,版本更新也相對比較完整。在后續的進(jìn)一步測試過(guò)程中,筆者將根據采用SBC和Asterisk/FreeSWITCH對接集成方式,通過(guò)鼎信SBC實(shí)現SIP終端,IMS網(wǎng)絡(luò )和網(wǎng)關(guān)的實(shí)時(shí)環(huán)境測試,進(jìn)一步驗證其SIP呼叫的業(yè)務(wù)功能的可行性,并且結合華為的VPN能力,存儲能力等實(shí)現未來(lái)的拓展能力,保證邊緣本地設備和軟件能夠和華為云服務(wù)器端的無(wú)縫集成,最終可以支持私有云部署,混合云部署方式的多種業(yè)務(wù)場(chǎng)景的支持,使得華為鯤鵬云生態(tài)鏈更加完善,打通接入端,接入服務(wù)器,業(yè)務(wù)服務(wù)器的各種環(huán)節,協(xié)助企業(yè)通信解決方案廠(chǎng)家,金融領(lǐng)域,安防監控,應急指揮調度系統等重點(diǎn)行業(yè)客戶(hù)實(shí)現長(cháng)遠國產(chǎn)化部署的戰略布局。
參考資料:
- www.dinstar.cn
- www.asterisk.org
- www.asterisk.org.cn
- https://www.huaweicloud.com/