Install Asterisk 1.4/1.6/1.8 on Linux

    版本為 16:46, 20 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    系統環境

    • Debian, Ubuntu, CentOS 5.x
    • Asterisk 1.6.2.14 (也適用 1.4.x, 1.8.x)
    • dahdi-linux-2.4.0
    • FreePBX 2.8 (也適用 2.9)

    安裝開始

    修改套件庫的主機為台灣
    cd /etc/apt
    cp -a sources.list sources.list.orig
    vi sources.list
    

    將 archive.ubuntu.com 換成 tw.archive.ubuntu.com

    deb http://tw.archive.ubuntu.com/ubuntu natty main restricted universe
    deb http://tw.archive.ubuntu.com/ubuntu natty-updates main restricted universe
    deb http://tw.archive.ubuntu.com/ubuntu natty-security main restricted universe
    deb http://archive.canonical.com/ubuntu natty partner
    

    套件庫資訊更新

    apt-get update
    
    安裝需要的相依套件

    For Ubuntu/Debian)
    適用: Ubuntu 10/11/12, Debian Lenny

    apt-get install build-essential linux-headers-`uname -r`
    apt-get install bison festival festival-dev libssl-dev zlib1g-dev libnewt-dev
    apt-get install libvorbis-dev automake mysql-server mysql-client mysql-admin libmysqlclient15-dev
    apt-get install php5 php5-cli php5-common php5-dev php5-mysql
    apt-get install curl libgnutls26 libgnutls-dev libtiff4-dev libtiff-tools
    apt-get install libasound2-dev portaudio19-dev libportaudio2 jackd
    apt-get install unixodbc unixodbc-bin unixodbc-dev
    apt-get install libbluetooth-dev libxml2-dev
    apt-get install sox subversion
    

    For CentOS/RedHat)
    適用: CentOS 5.X

    yum install gcc-c++ make libxml2-devel zlib-devel openssl-devel ncurses-devel gtk2-devel libogg-devel libvorbis-devel curl-devel unixODBC-devel libtool-ltdl-devel net-snmp-devel bzip2-devel newt-devel lm_sensors-devel openldap-devel postgresql-devel gtk+-devel mysql-server mysql-devel subversion
    

    如果要安裝 Dahdi 套件,必須要安裝 kernel source

    yum install kernel-devel
    

    NOTE:

    * 安裝過程中會提示:需設定 MySQL 的 root 密碼。

    * Ubuntu 11 )
    請將 libmysqlclient15-dev 改成 libmysqlclient-dev。

    * Ubuntu 12 )
    請將 libmysqlclient15-dev 改成 libmysqlclient-dev
    mysql-admin 移除

    * 如果需要 func_curl 模組,必須安裝
    libcurl4-gnutls-dev (for Ubuntu 11)

    * 安裝 kernel source 必須與現有的 kernel 版本完全相同,如果使用 yum 安裝時,總是安裝最新版本的 kernel-devel,可以編輯 CentOS-Base.repo,將 updates 這項加上 enabled=0

    * 如果需要 res_http_post 模組,必須安裝
    gmime-devel (for CentOS)

    設定 Apache & MySQL 自動啟動

    檢查是否有 apache2, mysql
    > ls /etc/rc3.d
    
    增加啟動檔
    update-rc.d mysql defaults 
    
    安裝 Speex codec(optional)
    cd /usr/src
    wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz
    tar xzf speex-1.2rc1.tar.gz
    cd speex-1.2rc1
    ./configure --prefix=/usr
    make
    make install
    ldconfig -v 
    
    安裝 SpanDSP module 用於傳真(optional)

    注意:可使用套件 libspandsp-dev 取代

    cd /usr/src
    wget http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.6pre17.tgz
    tar xzf spandsp-0.0.6pre17.tgz
    cd spandsp-0.0.6
    ./configure --prefix=/usr
    make
    make install
    ldconfig -v
    

    Tips:

    若有用到 IAXmodem 時,這是必要的安裝。

    *Asterisk 1.8 注意*

    - 要選用 res_fax, res_fax_spandsp 兩模組,必須安裝套件 libspandsp-dev, libspandsp# (# 表示1,2,etc..)。
    - 預設安裝是 res_fax, res_fax_spandsp,模組 app_fax 是未選用,如果強制安裝它,Asterisk 在安裝系統後會提醒另兩個模組將無法使用。

    安裝 googletalk module(optional)

    *僅適用 Asterisk 1.8 *
    必要的模組編譯

    • Channel Drivers > chan_gtalk
    • Resource Modules > res_jabber

    相依性套件

    • libiksemel-dev
    • Open SSL 開發套件
    安裝 dahdi 驅動程式(若需要 MeetMe 功能,這是必要的)
    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz
    tar xzf dahdi-linux-current.tar.gz
    cd dahdi-linux-*
    make
    make install
    
    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz
    tar xzf dahdi-tools-current.tar.gz
    cd dahdi-tools-*
    ./configure
    make
    make install
    make config 
    

    注意:可以用 dahdi-linux-complete-current 取代以上兩個套件。

    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
    tar xzf dahdi-linux-complete-current.tar.gz
    cd dahdi-linux-complete-*
    make all
    make install
    make config
    

    啟動 dahdi 服務試試

    /etc/init.d/dahdi start
    Loading DAHDI hardware modules:
       wct4xxp: done   wcte12xp: done   wct1xxp: done   wcte11xp: done   wctdm24xxp: done   wcfxo: done   wctdm: done   wcb4xxp: done   wctc4xxp: done   xpp_usb: done
    No hardware timing source found in /proc/dahdi, loading dahdi_dummy
    Running dahdi_cfg: done. 
    

    若沒有出現任何錯誤訊息,表示安裝順利完成。

    TIPs:

    如果安裝 dahdi 只是為了 Meetme 功能,而不會使用任何的電話介面卡,可以將硬體驅動模組關閉,編輯 /etc/dahdi/modules,將所有模組註解。

    安裝過程會需要網路連線,下載一些需要的檔案,如果要離線安裝,可以參考: https://wiki.asterisk.org/wiki/displ...stalling+DAHDI

    安裝 Asterisk 主程式

    下載位址: http://downloads.asterisk.org/pub/telephony/asterisk/

    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.2-current.tar.gz
    tar xzf asterisk-1.6.2-current.tar.gz
    cd asterisk-1.6.2*
    

    [選用]若需要使用 iLBC codec 時,請執行以下的步驟,否則跳過此步驟
    注意:指令必須在 /usr/src/asterisk-*  的主目錄內執行。

    contrib/scripts/get_ilbc_source.sh
    -> 按 Enter 繼續 (NOTE: 此 shell 必須在主程式根目錄下執行)
     
    ***
    The iLBC source code download is complete.
    ***
    

    Notes:

    -> 必須先安裝 subversion 套件。
    -> 要驗證是否有正確下載 iLBC  原始碼,可以檢查目錄 codecs/ilbc/ 是否有大量檔案。
    -> 編譯前請在 menuconfig 選擇 codec_ilbc 項目。

    [選用]若需要支援 mp3 檔案格式,請執行以下步驟,否則跳過 *僅適用 Asterisk 1.8.x*
    注意:指令必須在 /usr/src/asterisk-*  的主目錄內執行。

    contrib/scripts/get_mp3_source.sh
    

    Notes:

    -> 要驗證是否正確下載 MP3 原始碼,可以檢查目錄 addons/mp3/。
    -> 編譯前請在 menuconfig -> addons -> 選擇 format_mp3。
    -> 此模組載入後,可使 Playback 及 MusicOnHold 支援 MP3 語音檔。

     繼續安裝步驟

    ./configure
    make menuselect 或 make menuconfig
    
    • Applications -> app_fax (optional) *僅適用 1.6.x, 如果是 1.8.x 請見上述的說明
    • Codec Translators -> codec_ilbc (optional)
    • Core Sound Package -> CORE-SOUNDS-EN-WAV
    • Extras Sound Packages -> EXTRA-SOUNDS-EN-WAV (optional) ; 如果要用 FreePBX 這必選
    • Save & Exit
       

    Asterisk 1.8.x 注意

    在 Asterisk 1.8.x 版本已經將 asterisk-addon 整合在一起,在 make menuselect 時必須同時設定要安裝哪些 addon 的模組,一般選擇如下:

    Add-ons:
    -> app_mysql
    -> cdr_mysql
    -> format_mp3 (* 必須完成下載 MP3 原始碼*)
    -> res_config_mysql

    傳真模組:
    Resources Modules (* 必須安裝 libspandsp-dev*)
    -> res_fax
    -> res_fax_spandsp

     

    繼續對 Asterisk 作編譯安裝

    make
    make install
    make samples
    make config 
    

    安裝 asterisk-addons *Asterisk-1.8.x 跳過此步驟

    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.6.2-current.tar.gz
    tar xzf asterisk-addons-1.6.2-current.tar.gz
    cd asterisk-1.6.2*
    ./configure
    make menuselect
    

    Applications

    -> app_addon_sql_mysql ;連接 MySQL
    -> app_saycountpl

    Call Detail Recording

    -> cdr_addon_mysql ;CDR 使用 MySQL

    Channel Drivers

    -> chan_mobile ;藍牙手機連接(optional)
    -> chan_ooh323 ;H.323 protocol 支援(optional)

    Format Interpreters

    -> format_mp3 ;MP3 檔案格式支援(optional)

    Resource Modules

    -> res_config_mysql ; Asterisk Realtime Mode (需要 mysql-devel 套件安裝)

    Save & Exit

    make
    make install
    make samples 
    

    Asterisk 安裝完成。

    設定 Asterisk 的權限

    for Ubuntu/Debian)

    addgroup --system asterisk
    adduser --system --ingroup asterisk --home /var/lib/asterisk --no-create-home --shell /bin/bash asterisk
    

    for CentOS/RedHat)

    groupadd -r asterisk
    useradd -r -g asterisk -c "Asterisk User" -d /var/lib/asterisk -M asterisk 
    

    編輯 /etc/init.d/asterisk

    for Ubuntu/Debian)

    # 刪除註解
    AST_USER="asterisk"
    AST_GROUP="asterisk"
    

    Asterisk 1.8.x 注意

    編輯 /etc/default/asterisk 。

    for CentOS/RedHat)

    編輯 /etc/sysconfig/asterisk

    設定相關目錄

    chown -R asterisk:asterisk /etc/asterisk
    chown -R asterisk:asterisk  /var/{run,log,spool,lib}/asterisk
    chown -R asterisk:asterisk /dev/dahdi
    adduser asterisk audio (增加 asterisk 到 group audio)
    

    啟動 Asterisk 服務試試

    /etc/init.d/asterisk start
    

    關閉 Asterisk 服務

    /etc/init.d/asterisk stop
    

    TIPs:

    [bug: asterisk 1.8.11.0] 即使修改了 /etc/sysconfig/asterisk,但啟動帳戶仍是 root,再修改同個檔案的 COLOR=yes,將這行註解。

    設定 CDR 資料庫

    若需要安裝 FreePBX 套件,請跳過此步驟。

    mysqladmin -uroot -p create asteriskcdrdb
    mysql -uroot -p asteriskcdrdb 
    
    mysql> CREATE TABLE cdr (
        calldate datetime NOT NULL default '0000-00-00 00:00:00',
        clid varchar(80) NOT NULL default '',
        src varchar(80) NOT NULL default '',
        dst varchar(80) NOT NULL default '',
        dcontext varchar(80) NOT NULL default '',
        channel varchar(80) NOT NULL default '',
        dstchannel varchar(80) NOT NULL default '',
        lastapp varchar(80) NOT NULL default '',
        lastdata varchar(80) NOT NULL default '',
        duration int(11) NOT NULL default '0',
        billsec int(11) NOT NULL default '0',
        disposition varchar(45) NOT NULL default '',
        amaflags int(11) NOT NULL default '0',
        accountcode varchar(20) NOT NULL default '',
        uniqueid varchar(32) NOT NULL default '',
        userfield varchar(255) NOT NULL default ''
        );
    
    mysql> CREATE USER 'astuser'@'localhost' IDENTIFIED BY 'mypass';
    mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'astuser'@'localhost';
    mysql> flush privileges;
    mysql> quit
    

    編輯 /etc/asterisk/cdr_mysql.conf

    [global]
    hostname=localhost
    dbname=asteriskcdrdb
    table=cdr
    password=mypass
    user=astuser
    port=3306
    sock=/var/run/mysqld/mysqld.sock
    ;;sock=/var/lib/mysql/mysql.sock ; this is for CentOS
    

    重啟 Asterisk 服務

    service asterisk stop
    service asterisk start 
    

    檢查 CDR MySQL

    # asterisk -rx "cdr mysql status"
    Connected to asteriskcdrdb@localhost, port 3306 using table cdr for 2 minutes, 32 seconds.
      Wrote 0 records since last restart.
    

    安裝 FreePBX 管理介面

    關閉 SELinux 及 iptables 規則

    編輯 /etc/selinux/config

    SELINUX=disabled
    

    檢查 iptables 規則

    # iptables -L -nv
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
    

    關閉 iptables

    # chkconfig iptables off
    # service iptables stop 
    

    檢查 SELinux 狀態

    # sestatus
    SELinux status:                 disabled
    
    設定 Asterisk Manager

    編輯 /etc/asterisk/manager.conf

    ; 將 no 改成 yes
    [general]
    enabled = yes
    

    在最底下加上這幾行

    ; for FreePBX
    [admin]
    secret = amp123
    deny = 0.0.0.0/0.0.0.0
    permit = 127.0.0.1/255.255.255.0
    read = system,call,log,verbose,command,agent,user
    write = system,call,log,verbose,command,agent,user
    

    套用設定

    asterisk -rx "reload"
    asterisk -rx "manager show users" 
    
    安裝必要的相依性套件

    for Ubuntu/Debian)
    適用: Ubuntu 11/12

    apt-get install apache2 libapache2-mod-php5 mysql-common mysql-server mysql-client php5-mysql php-pear php-db php5-gd
    

    for CentOS/Redhat 5)

    yum groupinstall "DNS Name Server"
    yum groupinstall "Web Server"
    yum groupinstall "Mail Server"
    yum groupinstall "MySQL Database"
    yum groupinstall "Development Tools"
    
    yum install e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libselinux-devel libsepol-devel libxml2-devel libtiff-devel
    yum install gmp php-pear php-pear-DB php-gd php-mysql php-pdo ncurses-devel audiofile-devel libogg-devel
    yum install openssl-devel mysql-devel zlib-devel perl-DateManip sendmail-cf sox
    

    CentOS 6)

    yum groupinstall core
    yum groupinstall base
    yum install gcc gcc-c++ lynx bison mysql-devel mysql-server php php-mysql php-pear php-mbstring tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git subversion kernel-devel php-process crontabs cronie cronie-anacron
    

    啟動 MySQL & Aapache

    chkconfig mysqld on
    chkconfig httpd on
    service httpd start
    service httpd start 
    
    設定 PHP

    編輯 /etc/php5/apache2/php.ini

    ; 將 On 改成 Off
    magic_quotes_gpc = Off
    upload_max_filesize = 120M 
    
    設定 Apache

    for Ubuntu/Debian)
    編輯 /etc/apache2/envvars

    export APACHE_RUN_USER=asterisk
    export APACHE_RUN_GROUP=asterisk

    重啟 apache 服務

    /etc/init.d/apache2 restart
    

    for CentOS/RedHat)
    編輯 /etc/httpd/conf/httpd.conf

    User asterisk
    Group asterisk
    

    重啟 apache 服務

    service httpd restart
    
    安裝 FreePBX

    http://www.freepbx.org/download-freepbx

    cd /usr/src
    wget http://mirror.freepbx.org/freepbx-2.8.0.tar.gz
    tar xzf freepbx-2.8.0.tar.gz 
    

    建立資料庫 asterisk

    mysqladmin -uroot -p create asterisk
    mysqladmin -uroot -p create asteriskcdrdb
    mysql -uroot -p
    
    mysql> CREATE USER 'astuser'@'localhost' IDENTIFIED BY 'mypass';
    mysql> GRANT ALL PRIVILEGES ON asterisk.* TO 'astuser'@'localhost';
    mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'astuser'@'localhost';
    mysql> flush privileges;
    mysql> quit
    
    mysql -uroot -p <<-END_SQL
      CREATE USER 'astuser'@'localhost' IDENTIFIED BY 'mypass';
      GRANT ALL PRIVILEGES ON asterisk.* TO 'astuser'@'localhost';
      GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'astuser'@'localhost';
      flush privileges;
    END_SQL
    

    匯入資料庫

    cd /usr/src/freepbx-2.8.0
    mysql -uastuser -pmypass asterisk < SQL/newinstall.sql
    mysql -uastuser -pmypass asteriskcdrdb < SQL/cdr_mysql_table.sql

    再繼續下面的步驟前,先準備這些資訊:

    • 務必關閉 SELinux
    • 資料庫 asterisk 的登入名稱 = astuser, 密碼=mypass
    • 資料庫主機名稱=localhost
    • Asterisk Manager Interface 登入名稱=admin, 密碼=amp123
    • AMP web root 路徑=/var/www
    • AMP IP address=內部 IP
    • FOP 轉接電話密碼=1234
    • 使用分機或裝置模式=extensions
    • AMP 執行目錄=/var/lib/asterisk/bin
    • Super-user 執行目錄=/usr/local/sbin

     

    cd /usr/src/freepbx-2.8.0
    service asterisk stop
    ./start_asterisk start
    ./install_amp 
    

    Enter your USERNAME to connect to the 'asterisk' database:
     [asteriskuser] astuser

    Enter your PASSWORD to connect to the 'asterisk' database:
     [amp109] mypass

    Enter the hostname of the 'asterisk' database:
     [localhost]

    Enter a USERNAME to connect to the Asterisk Manager interface:
     [admin]

    Enter a PASSWORD to connect to the Asterisk Manager interface:
     [amp111] amp123

     Enter the path to use for your AMP web root:
     [/var/www/html]
    /var/www

    Enter the IP ADDRESS or hostname used to access the AMP web-admin:
     [xx.xx.xx.xx] 192.168.7.65

    Enter a PASSWORD to perform call transfers with the Flash Operator Panel:
     [passw0rd] 1234

    Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]?
     [extensions]

    Enter directory in which to store AMP executable scripts:
     [/var/lib/asterisk/bin]

    Enter directory in which to store super-user scripts:
     [/usr/local/sbin]

    ...
    ...

    Please update your modules and reload Asterisk by visiting http://192.168.7.65/admin

    *************************************************************************
    * Note: It's possible that if you click the red 'Update Now' bar BEFORE *
    * updating your modules, your machine will start dropping calls. Ensure *
    * that all modules are up to date BEFORE YOU CLICK THE RED BAR. As long *
    * as this is observed, your machine will be fully functional whilst the *
    * upgrade is in progress.                                               *
    *************************************************************************

    FreePBX-2.9 修正:

    cd /etc/asterisk
    mv mv extensions_custom.conf.sample extensions_custom.conf 
    mv sip_notify.conf sip_notify.conf.orig
    

    FreePBX-2.10, FreePBX Distro-1.810.x 修正:

    su - asterisk
    cd /var/lib/asterisk/bin
    ./retrieve_conf
    
    cd /etc/asterisk
    mv sip_notify.conf sip_notify.conf.default
    mv sip.conf sip.conf.default
    mv features.conf features.conf.default
    mv logger.conf logger.conf.default
    mv extensions.conf extensions.conf.default
    mv iax.conf iax.conf.default
    
    mv extensions_custom.conf.sample extensions_custom.conf 
    
    設定自動啟動
    cd /usr/src
    wget http://asteriskipcop.berlios.de/fpfa/amportal
    chmod u+x amportal
    mv amportal /etc/init.d
    ln -s /etc/init.d/amportal /etc/rc2.d/S99amportal 
    

    或者
    編輯 /etc/rc.local,在 exit 0 之前加上:

    ...
    /usr/local/sbin/amportal start
    exit 0 
    

    安裝完成

    管理介面登入:http://主機位址/admin,預設帳號:admin / admin

    F.A.Q

    ERROR: codec_dahdi.c: Failed to open /dev/dahdi/transcode: Permission denied

    Ans: chown -R asterisk:asterisk /dev/dahdi

    啟動 Asterisk 後,chan_iax2.so 無法載入,messages 有錯誤訊息

    [Apr  5 16:25:54] WARNING[412] loader.c: Error loading module 'res_crypto': /usr/lib/asterisk/modules/res_crypto.so: cannot open shared object file: No such file or directory
    [Apr  5 16:25:54] WARNING[412] loader.c: Error loading module 'chan_iax2.so': /usr/lib/asterisk/modules/chan_iax2.so: undefined symbol: ast_aes_set_decrypt_key

    Ans:編譯時要選擇

    Channel Drivers > [*] chan_iax2

    Resources Modules > [*] res_crypto

    如果項目出現 [XXX],先安裝這些套件

    apt-get install openssl libssl-dev
    Powered by MindTouch Core