【Asterisk介紹,討論】芝心玩家安裝編 CentOS 5 + Asterisk 1.4.x-- 翻譯中

本文是以下來源的翻譯本
來源自http://www.voip-info.org/wiki/vi ... +1.4.x+installation

本文專注於系統安裝,如想了解什麼是Asterisk,請到以下連結
http://www.hkepc.com/forum/viewt ... &extra=page%3D1

有關其他設定和介絡請到以下連結
http://www.hkepc.com/forum/viewt ... &extra=page%3D1

本方法適合對安裝LINUX有一定認識的人, 更要懂得如何從編譯原始檔開始,使用文字編緝器修改設定檔,因為需要玩家的一定工力,没有經驗/恆心的人但又想一嘗Asterisk的工能,請參考菜鳥無痛安裝法

[事前凖備]
Base Install of Asterisk on an i386 CentOS/RHEL box:
More as an aide memoir for us than anything else, but if somebody does find it useful, then that's good too!

For reasons detailed elsewhere, you're best not using a GUI, so do the installation from the command line ('linux-text' at the GRUB prompt). When you select the packages, the only one you need is 'server'. Disk partitioning, networking etc. is all entirely up to you!

At your first login, you'll be presented with a simple administration screen. Disable SELinux and (for now) the firewall.
Page Contents

          o Dependencies
                + Quick method:
                + Individual application specific dependencies
                      # Asterisk
                      # Speex (optional)
                      # ODBC stuff (optional)
                      # MySQL ODBC interface/connector (optional, but required if using ODBC and MySQL)
                      # MySQL (optional)
                      # PHPMyAdmin (optional)
                      # Webmin (optional)
          o Download and install Asterisk and components
                + Download
                + Libpri (optional)
                + Zaptel
                + Asterisk
                + Asterisk-addons (versions 1.4.17 onwards)
                + Asterisk-addons (versions prior to 1.4.17)
                + mISDN drivers for Digium B410P (optional)
          o Configure MySQL (optional)
                + Notes
                + SQL
          o Configure various files
                + Set up CDR to MySQL
                + Set up realtime
                + ODBC configuration (using settings from above)
                      # /etc/odbcinst.ini
                      # /etc/odbc.ini
                      # /etc/asterisk/res_odbc.conf
                      # /etc/asterisk/func_odbc.conf
          o Setting up Asterisk on a vserver
                + The host
                + The vserver
          o See Also


Dependencies

The first thing to do is to get your box up to date. If you have CentOS 5.1 or lower, you may want to upgrade to CentOS 5.2. Try:
yum -y upgrade

and then reboot. Otherwise, to update all the installed packages, at the shell, run
yum -y update

When you've done either of the above, reboot the machine when it's finished (as it'll install a new kernel) and then run
yum -y update

again and repeat until there are no more updates.

Quick method:
Do you trust me? If so, the line below will install all the dependencies you need (and then some!) - cut and paste from here if you're happy to install things you may or may not need.
yum -y install gcc gcc-c++ kernel-devel bison openssl-devel \
libtermcap-devel ncurses-devel doxygen curl-devel newt-devel \
mlocate lynx tar wget nmap bzip2 mod_ssl crontabs vixie-cron \
speex speex-devel unixODBC unixODBC-devel libtool-ltdl \
libtool-ltdl-devel mysql-connector-odbc mysql mysql-devel \
mysql-server php-mysql php-mbstring php-mcrypt flex screen


Individual application specific dependencies
Asterisk
We've got to be able to compile it!
yum -y install gcc gcc-c++

Note that you may need to use the following if you are running a Xen enabled kernel:
yum -y install kernel-xen-devel

If you want the 'zttool' application, you'll need to:
yum -y install newt-devel

Other things you may find useful (if they're not already installed):
yum -y install mlocate lynx tar wget nmap bzip2 mod_ssl crontabs vixie-cron


Speex (optional)
yum -y install speex speex-devel

Note - if you're using these notes to prepare an Asterisk 1.6 machine, be aware that Speex has more dependencies than just this.

ODBC stuff (optional)
Note that if you have already installed Asterisk, you will need to run 'configure', 'make' and 'make install' to detect ODBC and compile it in.
yum -y install unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel


MySQL ODBC interface/connector (optional, but required if using ODBC and MySQL)
yum -y install mysql-connector-odbc

And then edit the file '/etc/odbcinst.ini' (or '/usr/local/odbcinst.ini') and replace 'Driver = /usr/lib/libmyodbc.so' with 'Driver = /usr/lib/libmyodbc3.so'

MySQL (optional)
yum -y install mysql mysql-devel mysql-server
chkconfig mysqld on
service mysqld start


PHPMyAdmin (optional)
Download the latest version from http://www.phpmyadmin.net/, unzip/unbzip/untar into /var/www/htdocs/phpmyadmin (for the time being). Make sure Apache starts on boot.
yum -y install php-mysql php-mbstring php-mcrypt
chkconfig httpd on
service httpd start

Surf to https://i.p.address/phpmyadmin and check it works.

Webmin (optional)
Download the latest version of the RPM from http://www.webmin.com/
rpm -i webmin-VERSION

Surf to https://i.p.address:10000 and check it works.

[ 本帖最後由 cnewshk 於 2009-2-8 16:32 編輯 ]

[下載同安裝]
Download and install Asterisk and components
Download
Download the latest asterisk version /usr/src/asterisk and untar the files as follows:
mkdir -p /usr/src/asterisk
cd /usr/src/asterisk
wget http://downloads.digium.com/pub/ ... -1.4-current.tar.gz
wget http://downloads.digium.com/pub/ ... -1.4-current.tar.gz
wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz
wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
tar -zxf zaptel-1.4-current.tar.gz
tar -zxf asterisk-1.4-current.tar.gz
tar -zxf libpri-1.4-current.tar.gz
tar -zxf asterisk-addons-1.4-current.tar.gz

You'll end up with four tar files and four directories in the directory '/usr/src/asterisk'.

Libpri (optional)
If you are using E1 cards you need to install LIBPRI. If you do want to use LIBPRI, make sure you compile and install it before you compile Asterisk. Replace 'VERSION' with the correct details.
cd /usr/src/asterisk/libpri-VERSION
make clean
make
make install


Zaptel
You're pretty much going to need Zaptel. If not for any hardware then for the dummy timer anyway. Note that the stock CentOS kernels come with a 1000HZ timer and so don't need recompiling (phew!). Replace 'VERSION' with the correct details.
cd /usr/src/asterisk/zaptel-VERSION
make clean
./configure
make
make install
make config

Edit /etc/zaptel.conf and /etc/asterisk/zapata.conf for your site.
Set Zaptel to start automatically and then start it.
chkconfig zaptel on
service zaptel start


Asterisk
cd /usr/src/asterisk/asterisk-VERSION
make clean
./configure

Choose which options to install (audio files, voicemail storage, codecs etc.)
make menuselect
make
make install

Install sample files in /etc/asterisk, install docs/manpages and set to start on boot.
make samples
make progdocs
make config
chkconfig asterisk on

Check Asterisk starts properly:
asterisk -vvvvvvvvvvvvvvvvvvvc
stop now

If not, you've probably not been following these instructions carefully! Assuming it does start properly, you probably want to start it in the background:
service asterisk start

TOP

[附件安裝和設定]
Asterisk-addons (versions 1.4.17 onwards)
cd /usr/src/asterisk/asterisk-addons-VERSION

make clean
./configure
make menuselect

Choose what you do and don't want. Unless you really need oh323, deselect it as it can be the cause of compilation woes.
make
make install

Install sample files in /etc/asterisk
make samples

Edit /etc/asterisk/cdr_mysql.conf and add 'loguniqueid=yes' to the global section.

Asterisk-addons (versions prior to 1.4.17)
The instructions are exactly as above, with the exception that the Makefile needs to be edited to ensure that uniqueids are stored in the MySQL database. This is done by editing the value of 'CFLAGS' (prior to version 1.4.5) or 'ASTCFLAGS' (1.4.5 to 1.4.16). See Asterisk cdr mysql for details.

mISDN drivers for Digium B410P (optional)
cd /usr/src/asterisk/zaptel-VERSION
yum -y install flex
make b410p
/etc/init.d/misdn-init config
chkconfig --add misdn-init
chkconfig misdn-init on

Don't forget to edit /etc/misdn-init.conf and /etc/asterisk/misdn.conf before you start it.

Configure MySQL (optional)
The information below shows table definitions for all of the tables Asterisk can use with MySQL or ODBC.

Notes
The UniqueID field in the CDR table is not necessarily unique! Due to the very very dodgy way Asterisk handles unique IDs, if you set the field to be the primary key (as advised elsewhere), you will lose data.

SQL
Note that the SIP 'qualify' field has a default value set to 'yes'. This is for two reasons. Firstly, I wrote these notes because it's how I use and want to use Asterisk. Secondly, whether qualification is enabled or not in realtime is controlled by the 'rtcachefriends' setting in sip.conf - if it's 'no', then whether 'qualify' is 'yes' or 'no' in the database is irrelevant. It makes sense therefore to enable it in the database and then turn it on or off with the 'rtcachefriends' setting.

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

##
##Database: `asterisk`
##
CREATE DATABASE `asterisk` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `asterisk`;

##########################################################

##
##Table structure for table `cdr`
##

CREATE TABLE IF NOT EXISTS `cdr` (
`recid` mediumint(8) unsigned NOT NULL auto_increment COMMENT 'Record ID',
`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 '',
PRIMARY KEY  (`recid`),
KEY `calldate` (`calldate`),
KEY `dst` (`dst`),
KEY `accountcode` (`accountcode`),
KEY `src` (`src`),
KEY `disposition` (`disposition`),
KEY `uniqueid` (`uniqueid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

##########################################################

##
##Table structure for table `queue_members`
##

CREATE TABLE IF NOT EXISTS `queue_members` (
  `queue_name` varchar(128) NOT NULL default '',
  `interface` varchar(128) NOT NULL default '',
  `penalty` int(11) default NULL,
  PRIMARY KEY  (`queue_name`,`interface`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

##########################################################

##
##Table structure for table `queues`
##

CREATE TABLE IF NOT EXISTS `queues` (
  `name` varchar(128) NOT NULL,
  `musiconhold` varchar(128) default 'default',
  `announce` varchar(128) default NULL,
  `context` varchar(128) default NULL,
  `timeout` int(11) default '60',
  `monitor_join` tinyint(1) default NULL,
  `monitor_format` varchar(128) default NULL,
  `queue_youarenext` varchar(128) default NULL,
  `queue_thereare` varchar(128) default NULL,
  `queue_callswaiting` varchar(128) default NULL,
  `queue_holdtime` varchar(128) default NULL,
  `queue_minutes` varchar(128) default NULL,
  `queue_seconds` varchar(128) default NULL,
  `queue_lessthan` varchar(128) default NULL,
  `queue_thankyou` varchar(128) default NULL,
  `queue_reporthold` varchar(128) default NULL,
  `announce_frequency` int(11) default NULL,
  `announce_round_seconds` int(11) default NULL,
  `announce_holdtime` varchar(128) default NULL,
  `periodic_announce` varchar(128) default NULL,
  `periodic_announce_frequency` int(11) default NULL,

  `retry` int(11) default '5',
  `ringinuse` varchar(5) NOT NULL default 'no',
  `autofill` varchar(5) NOT NULL default 'yes',
  `autopause` varchar(5) NOT NULL default 'no',
  `setinterfacevar` varchar(5) NOT NULL default 'yes',
  `wrapuptime` int(11) default '30',
  `maxlen` int(11) default NULL,
  `servicelevel` int(11) default NULL,
  `strategy` varchar(128) default 'ringall',
  `joinempty` varchar(128) default 'no',
  `leavewhenempty` varchar(128) default 'yes',
  `eventmemberstatus` tinyint(1) default NULL,
  `eventwhencalled` tinyint(1) default NULL,
  `reportholdtime` tinyint(1) default NULL,
  `memberdelay` int(11) default NULL,
  `weight` int(11) default NULL,
  `timeoutrestart` tinyint(1) default NULL,
  PRIMARY KEY  (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

##########################################################

##
##Table structure for table `sip`
##

CREATE TABLE IF NOT EXISTS `sip` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(80) NOT NULL,
  `host` varchar(31) NOT NULL default 'dynamic',
  `nat` varchar(5) NOT NULL default 'no',
  `type` enum('user','peer','friend') NOT NULL default 'friend',
  `accountcode` varchar(20) default 'ACCOUNT',
  `amaflags` varchar(13) default NULL,
  `callgroup` varchar(10) default NULL,
  `callerid` varchar(80) default NULL,
  `call-limit` varchar(6) NOT NULL default '10',
  `cancallforward` char(3) default 'yes',
  `canreinvite` char(3) default 'no',
  `context` varchar(80) default 'from-sip',
  `defaultip` varchar(15) default NULL,
  `dtmfmode` varchar(7) default 'rfc2833',
  `fromuser` varchar(80) default NULL,
  `fromdomain` varchar(80) default NULL,
  `insecure` varchar(4) default NULL,
  `language` char(2) default 'en',
  `mailbox` varchar(50) default NULL,
  `md5secret` varchar(80) default NULL,
  `deny` varchar(95) default '0.0.0.0/0.0.0.0',
  `permit` varchar(95) default '0.0.0.0/0.0.0.0',
  `mask` varchar(95) default NULL,
  `musiconhold` varchar(100) default 'default',
  `pickupgroup` varchar(10) default NULL,
  `qualify` char(3) default 'yes',
  `regexten` varchar(80) default NULL,
  `restrictcid` char(3) default NULL,
  `rtptimeout` char(3) default NULL,
  `rtpholdtimeout` char(3) default NULL,
  `secret` varchar(80) default 'SECRET',
  `setvar` varchar(100) default NULL,
  `disallow` varchar(100) default 'all',
  `allow` varchar(100) default 'alaw',
  `fullcontact` varchar(80) NOT NULL default '',
  `ipaddr` varchar(15) NOT NULL default '',
  `port` smallint(5) unsigned NOT NULL default '0',
  `regserver` varchar(100) default NULL,
  `regseconds` int(11) NOT NULL default '0',
  `username` varchar(80) NOT NULL,
  `defaultuser` varchar(80) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `name_2` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=301 ;

##########################################################

##
##Table structure for table `voicemail_messages`
##

CREATE TABLE IF NOT EXISTS `voicemail_messages` (
  `id` int(11) NOT NULL auto_increment,
  `msgnum` int(11) NOT NULL default '0',
  `dir` varchar(80) default '',
  `context` varchar(80) default '',
  `macrocontext` varchar(80) default '',
  `callerid` varchar(40) default '',
  `origtime` varchar(40) default '',
  `duration` varchar(20) default '',
  `mailboxuser` varchar(80) default '',
  `mailboxcontext` varchar(80) default '',
  `recording` longblob,
  PRIMARY KEY  (`id`),
  KEY `dir` (`dir`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1088 ;

##########################################################

##
##Table structure for table `voicemail_users`
##

CREATE TABLE IF NOT EXISTS `voicemail_users` (
  `uniqueid` int(11) NOT NULL auto_increment,
  `customer_id` varchar(11) NOT NULL default '0',

  `context` varchar(50) NOT NULL default 'default',
  `mailbox` varchar(11) NOT NULL default '0',
  `password` varchar(5) NOT NULL default '6666',
  `fullname` varchar(150) NOT NULL,
  `email` varchar(50) NOT NULL,
  `pager` varchar(50) NOT NULL,
  `tz` varchar(10) NOT NULL default 'en',
  `attach` varchar(4) NOT NULL default 'yes',
  `saycid` varchar(4) NOT NULL default 'yes',
  `dialout` varchar(10) NOT NULL,
  `callback` varchar(10) NOT NULL,
  `review` varchar(4) NOT NULL default 'no',
  `operator` varchar(4) NOT NULL default 'no',
  `envelope` varchar(4) NOT NULL default 'no',
  `sayduration` varchar(4) NOT NULL default 'no',

  `saydurationm` tinyint(4) NOT NULL default '1',
  `sendvoicemail` varchar(4) NOT NULL default 'no',
  `delete` varchar(4) NOT NULL default 'no',
  `nextaftercmd` varchar(4) NOT NULL default 'yes',
  `forcename` varchar(4) NOT NULL default 'no',
  `forcegreetings` varchar(4) NOT NULL default 'no',
  `hidefromdir` varchar(4) NOT NULL default 'yes',
  `stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`uniqueid`),
  KEY `mailbox_context` (`mailbox`,`context`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=101 ;

## ########################################################

##
##Create realtime user with approximately the right privs.
##

CREATE USER 'astrealtime'@'localhost' IDENTIFIED BY 'MYPASS';
GRANT FILE ON * . * TO 'astrealtime'@'localhost' IDENTIFIED BY 'MYPASS' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT INSERT ON `asterisk`.`cdr` TO 'astrealtime'@'localhost';
GRANT SELECT , INSERT , UPDATE , DELETE ON `asterisk`.`queue_members` TO 'astrealtime'@'localhost';
GRANT SELECT , UPDATE ON `asterisk`.`queues` TO 'astrealtime'@'localhost';
GRANT SELECT , UPDATE ON `asterisk`.`sip` TO 'astrealtime'@'localhost';
GRANT SELECT , UPDATE ON `asterisk`.`voicemail_users` TO 'astrealtime'@'localhost';
GRANT SELECT , UPDATE , INSERT , DELETE ON `asterisk`.`voicemail_messages` TO 'astrealtime'@'localhost';

Configure various files
Set up CDR to MySQL
Edit /etc/asterisk/cdr_mysql.conf
[global]
hostname=localhost
dbname=asterisk
table=cdr
password=MYPASS
user=astrealtime
port=3306
sock=/var/lib/mysql/mysql.sock
userfield=1

Set up realtime
Edit res_mysql.conf
[general]
dbhost = localhost
dbname = asterisk
dbuser = astrealtime
dbpass = MYPASS
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock

Edit /etc/asterisk/extconfig.conf
[settings]
queues => mysql,asterisk,queues
queue_members => mysql,asterisk,queue_members
sippeers => mysql,asterisk,sip
sipusers => mysql,asterisk,sip
voicemail => mysql,asterisk,voicemail_users

ODBC configuration (using settings from above)
/etc/odbcinst.ini
[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc3.so
Setup           = /usr/lib/libodbcmyS.so
FileUsage       = 1
(Note the '3' which isn't in the original sample file!)

/etc/odbc.ini
; DSN definitions
[astrealtime]
Description     = Asterisk realtime and other FUNC_ODBC access
Driver          = MySQL
Socket          = /var/lib/mysql/mysql.sock
Server          = localhost
User            = astrealtime
Pass            = MYPASS
Database        = asterisk
Option          = 3

/etc/asterisk/res_odbc.conf
; Environment variables
[ENV]

; Connections
[astrealtime]
enabled => yes
dsn => astrealtime
username => astrealtime
password => MYPASS
pre-connect => yes
idlecheck => 3600

/etc/asterisk/func_odbc.conf
This really depends on why you need database access from the dialplan!

TOP

正呀 voip service 多謝樓主 教學

[ 本帖最後由 hungjoyee 於 2009-2-8 16:04 編輯 ]

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

原帖由 adrianmak 於 2009-2-8 16:05 發表
可否介绍什么硬件可用?

Hardware platform: Asterisk是一個可安裝在LINUX上的APPLICATION,以提供IP-PBX的工能,基本上可安裝LINUX的電腦都可以安裝.
END Point Device(User side): 可連接基於 SIP, IAX, MGCP等標凖而設計的網絡電話,本人實則使用過的有
Hard Phone:
CISCO CP7961G


Soft Phone:
X-lite


sjphone


Cisco IP Communicator


連接PSTN interface Card
可參考
http://store.digium.com/products.php?category_id=47

[ 本帖最後由 cnewshk 於 2009-2-8 16:47 編輯 ]

TOP

大部份銀行用緊  我想問bt 係唔係呢

TOP

原帖由 hungjoyee 於 2009-2-8 16:56 發表
大部份銀行用緊  我想問bt 係唔係呢

IPT方面來講,其實一般企業會選用CISCO的CALL MANAGER, Avaya和NORTEL的IP-PBX方案,因為是基於後期支援的考量,這也是OPEN SOURCE的最大問題,但近來也有不少由CISCO CALL MANAGER轉到開源ASTERISK的例子
http://www.networkworld.com/news/2006/091206-von-sam-houston.html

p.s. 你所指的bt是?

TOP

原帖由 cnewshk 於 2009-2-8 17:09 發表

IPT方面來講,其實一般企業會選用CISCO的CALL MANAGER, Avaya和NORTEL的IP-PBX方案,因為是基於後期支援的考量,這也是OPEN SOURCE的最大問題,但近來也有不少由CISCO CALL MANAGER轉到開 ...


依隻 http://www.btbroadbandoffice.com ... ion/broadband-voice

TOP

原帖由 hungjoyee 於 2009-2-8 17:31 發表


依隻 http://www.btbroadbandoffice.com ... ion/broadband-voice

不太很定,但已我所知,香港的網絡公司都有提供基於SIP標凖的服務,如HKBN的2b電話,就是建設於NORTEL的IP-PBX上,由於是跟標凖,不少第三方的軟硬件都可以連接

TOP