2021年1月29日 星期五

安裝asterisk主程式

asterisk是一套設計在Linux上運行的open source PBX系統,asterisk本身是由asterisk主程式與許多模組所聚集起來的可擴充性軟體,除非對asterisk玩得很透測,不然五花八門的模組應該是asterisk新手最困難的部份。

安裝asterisk主程式

asterisk主程式,基本上所有的ip pbx該有的功能都已經包含在裡面了,像是註冊sip電話撥,打電話,會議室功能,待接,轉接,群響,電話停泊(parking)等等功能。安裝方式主要有兩個方法

透過Linux套件管理軟體直接安裝

直接安裝的方式,需要搜尋使用者使用的Linux有沒有提供套件。以ubuntu為範例

    $ apt update; apt search asterisk                              # 搜尋asterisk套件

會看到apt-cache跑出很多與asterisk相關的套件,這邊我們只安裝asterisk主程式

    $ apt install -y asterisk asterisk-config                     # 安裝asterisk主程式與其設定檔

這邊請注意,因為是由套件安裝,所以能安裝的版本會受限於提供的版本,不一定能安裝最新版;以ubuntu 20提供的是asterisk 16,但目前最新版本號為asterisk 18。如果不會用到asterisk的新功能,用套件安裝是最快也最方便的。使用的版本也不會太執著於要用到最新的,asterisk 16仍是在維護階段,有新發現的安全性議題也是會修正,詳細的asterisk版本開發時程,可以參考asterisk wiki

從source code編譯

首先先到asterisk官方網站下載目前最新的asterisk並解壓縮

    $ wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz

    $ tar zxf asterisk-18-current.tar.gz

編譯asterisk會涉及到很大量asterisk本身所使用到的library,還好asterisk有提供一個script可以無痛解決這個library dependency的問題

    $ cd $(ls -d asterisk*/)

    $ contrib/scripts/install_prereq install

接下來就像大部分linux 編譯source的過程,用提供的configure script產生Makefile

    $ ./configure

不過在開始編譯asterisk主程式前,看一下asterisk的眾多module是不是你所要的 (當然也可以用預設的)

    $ make menuselect

基本上,初學者在碰到其他module之前,用預設的就可以了,其他可能會選擇的像是codec的h729,可能是可以考慮的。選擇完後就可以開始編譯asterisk

    $ make -j4                      # 我習慣使用4 thread同時compile

    $ su make install            # 安裝asterisk到系統當中

    $ su make sample           # 將sample configuration files覆蓋到/etc/asterisk

    $ su make config            # 將asterisk系統啟動script安裝至系統中

    $ su make install-logrotate    # 設定asterisk log受到系統log rotate監管

source code編譯到docker container內

如果有興趣使用將asterisk包到docker container的使用者,事實上有嘗試出自己想要的compile source的流程後,打包到container內應該都不會有太大的問題。最大的問題會在於,把compile好的binary file抓出來到空的pure OS container並最小話安裝其dependency library。下面就只列出asterisk安裝完後的改變與其需要的library

ubuntu:focal需要安裝的library

libxml2 libxslt1.1 libsqlite3-0 libssl1.1 libjansson4 liburiparser1 libcap2 libedit2  libgsm1 libiksemel3 libneon27 libical3 libgmime-3.0-0 libspandsp2 libcodec2-0.9 libodbc1 libcurl4  libsrtp2-1 libspeex1 libspeexdsp1 libogg0 libsnmp35 libunbound8 libvorbis0a libvorbisenc2 libvorbisfile3  libsybdb5 libpq5 libradcli4 liblua5.2-0 libosptk4 libjack-jackd2-0 libresample1

asterisk安裝檔案位置

    /var/lib/asterisk/

    /usr/sbin/asterisk

    /usr/lib/asterisk/

    /usr/lib/libasterisk*

    /var/spool/asterisk/

    /etc/asterisk/

    /etc/logrotate.d/asterisk


沒有留言:

張貼留言