asterisk原始碼安裝

安裝參考資料

安裝必備套件

安裝過程會問你輸入國家代碼,台灣請輸入886
apt-get build-dep asterisk
aptitude install ncurses-dev libxml2 libxml2-dev libsqlite3-dev subversion

下載原始碼

底下請挑一個你需要的版本下載來編譯安裝

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-10.7.0.tar.gz
tar zxvf asterisk-10.7.0.tar.gz
cd asterisk-10.7.0/

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-10.8.0.tar.gz
tar zxvf asterisk-10.8.0.tar.gz
cd asterisk-10.8.0

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz
tar zxvf asterisk-11-current.tar.gz

註:若你是使用asterisk13版本,則還需要另外安裝底下這兩個包
aptitude install uuid-dev libjansson-dev

編譯指令

./configure
抓 mp3 套件
contrib/scripts/get_mp3_source.sh
make menuselect 
#若要增加額外功能,如SRTP(預設已有)和fax就要下此指令選擇相關模組
#fax模組分別在Applications裡的app_fax選了之後這裡就要做一次save&exit的動作,然後到 Resource Modules裡的res_fax、res_fax_spandsp選了這兩個之後,還要再做一次save&exit的動作才行。
#後來發現Applications裡的fax功能和Resource裡的fax功能好象是相衝突的,選了一個,另一個就會被自動的取消。
make 
make install
安裝範例設定檔(若此動作不做的話 /etc/asterisk 底下會空白)
make samples
若要(此動作可省略)安裝說明文件(413MB),請下指令 (需要另外安裝套件 aptitude install doxygen)
make progdocs

設定開機啟動

=================笨方法=====================
vim /etc/init.d/asterisk.sh
#!/bin/bash
/usr/sbin/asterisk
update-rc.d asterisk.sh defaults
=================笨方法=====================

=================推薦方法======================
設開機自動執行
cp contrib/init.d/etc_default_asterisk /etc/default/asterisk
cp contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk
vim /etc/init.d/asterisk

找到底下內容
DAEMON=__ASTERISK_SBIN_DIR__/asterisk
ASTVARRUNDIR=__ASTERISK_VARRUN_DIR__
ASTETCDIR=__ASTERISK_ETC_DIR__
修改底下內容 (填入正確路徑)
DAEMON=/usr/sbin/asterisk
ASTVARRUNDIR=/var/run/asterisk
ASTETCDIR=/etc/asterisk

update-rc.d asterisk start 99 2 3 4 5 . stop 01 0 1 6 .

debian8的啟動方式不太一樣了
update-rc.d asterisk defaults
or
update-rc.d asterisk enable 2 3 4 5
=================推薦方法======================

註:這裡的內容是debian剛使用了新的啟動方式時有一些不穩定的狀況,需要自己手動排除這些問題,現在比較穩定了,就比較沒有這些問題了,因此這部份的內容僅留作舊資料參考用。
說明:由於 update-rc.d 新版本的參數下法有些不太一樣,所以上面的指令在新版的 update-rc.d就不適用了。
update-rc.d 新版指令:
update-rc.d -n asterisk defaults 90 01
update-rc.d asterisk defaults 90 01
乾跑,可先測試結果,結果ok的話拿掉 -n 這個參數再執行一次
 
但由於 update-rc.d 此版本仍不是個穩定版,仍有許多問題,所以可能按上述的指令執行仍會遇到無效的情況。
 
上述的指令無效只好手動,底下是手動設定的指令
cd /etc/rc0.d
ln -s ../init.d/asterisk K01asterisk
cd ../rc6.d
ln -s ../init.d/asterisk K01asterisk
cd ../rcS.d
ln -s ../init.d/asterisk S90asterisk
cd ../rc2.d/
ln -s ../init.d/asterisk S90asterisk
cd ../rc3.d/
ln -s ../init.d/asterisk S90asterisk
cd ../rc4.d/
ln -s ../init.d/asterisk S90asterisk
cd ../rc5.d/
ln -s ../init.d/asterisk S90asterisk




建帳號給asterisk用

useradd -U asterisk -r -c "Asterisk PBX daemon" -d /var/lib/asterisk -s /bin/false
chown -R asterisk.asterisk /var/lib/asterisk 
chown -R asterisk.asterisk /var/spool/asterisk
chown -R asterisk.asterisk /var/run/asterisk
chown -R asterisk.asterisk /usr/lib/asterisk
chown -R asterisk.asterisk /var/log/asterisk
chown -R asterisk.asterisk /etc/asterisk


logrotate 設定

vim /etc/logrotate.d/asterisk-cdr
貼上底下內容,底下內容範例有兩個,擇一用之

======================範例1================================
/var/log/asterisk/cdr-csv/Master.csv {
weekly
missingok
rotate 52
create 0640 asterisk asterisk
postrotate
/usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null
endscript
}
======================範例1================================
======================範例2================================
var/log/asterisk/cdr-csv/Master.csv {
weekly
missingok
rotate 52
create 0640 asterisk asterisk
size 102400k
copytruncate
postrotate
endscript
}
#102400K=100MB 意指log大到100MB時才會輪替
======================範例2================================
#weekly 指定轉儲周期為每周
#missingok 表示如果找不到log文件也沒OK
#rotate 52
#prerotate/endscript 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
#postrotate/endscript 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行

CDR內的時間問題修正

由於我們linux系統所使用的時間是北京時間,在查CDR時卻發現了它所記錄的時間與我們系統上的時間差了8小時.後來才發現調整的方法:
vim /etc/asterisk/cdr.conf

[csv]
;usegmtime=yes    ; log date/time in GMT.  Default is "no"
;將上面那一行給註解掉,也就是我們不要使用gmt時間,這樣CDR的時間就會準確了。

asterisk設定檔在vim內語法高亮

檔案位於原始碼內
asterisk-10.7.0/contrib/editors/

vim /usr/share/vim/vim72/filetype.vim
在最後加上底下內容
" Asterisk config file
au BufNewFile,BufRead *asterisk*/*voicemail.conf* setf asterisk_voicemail
au BufNewFile,BufRead *asterisk/*.conf* setf asterisk
au BufNewFile,BufRead *asterisk/*.ael* setf asterisk

基本上它會將位於 /etc/asterisk 此目錄底下所有的 .conf 檔 都當成是 “asterisk" type 來做語法高亮.
You could make it more specific and this will naturally just pickup the .conf files in certain directories, but I found it more convenient than anything else.

參考資料:voipvim語法高亮

如果不知道配置文件及脚本的位置,可以在vim中使用命令 :scriptnames ,将显示如下路径
/etc/vimrc
/usr/share/vim/vim72/syntax/syntax.vim
/usr/share/vim/vim72/syntax/synload.vim
/usr/share/vim/vim72/syntax/syncolor.vim
/usr/share/vim/vim72/filetype.vim
/usr/share/vim/vim72/ftplugin.vim
/home/kdj/.vimrc

如果不知道vim配置文件的搜索位置,请输入 :version ,将显示
系统vimrc文件:"/etc/vimrc"
用户vimrc文件:"$HOME/.vimrc"
用户exrc文件:"$HOME/.exrc"
$VIM预设值:"/usr/share/vim"


asterisk 移除方法

參考資料

killall -9 safe_asterisk
killall -9 asterisk
rm -rf /etc/asterisk
rm -f /etc/zaptel.conf
rm -rf /var/log/asterisk
rm -rf /var/lib/asterisk
rm -rf /var/spool/asterisk
rm -rf /usr/lib/asterisk


bug 修正

In main/utils.c there is a line (1126) that reads like this –

ast_log(LOG_ERROR, “write() returned error: %s\n", strerror(errno));

change ERROR to NOTICE – 修改錯誤等級

ast_log(LOG_NOTICE, “write() returned error: %s\n", strerror(errno));

and do make && make install. This will remove this message.

本篇發表於 voip。將永久鏈結加入書籤。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *