Search This Blog

Tuesday, 14 August 2012

How to Install Asterisk on Centos

For Asterisk Installation you need following dependencies and related softwares.

Dependencies

 Normal Method:

 The first thing to do is to get your box up to date. 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 openssl-devel perl perl-Net-SSLeay perl-Crypt-SSLeay \
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 \
libtiff-devel libxml2-devel


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
 

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)

If SSL is required, ensure that the correct bits are installed
yum -y install openssl openssl-devel perl perl-Net-SSLeay perl-Crypt-SSLeay

Download the latest version of the RPM from http://www.webmin.com/
rpm -i webmin-VERSION
chkconfig webmin on
service webmin start

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

Download and install Asterisk and components

Download (Choose the Latest which is available)

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.asterisk.org/pub/telephony/asterisk/asterisk-1.6.1-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.6.1-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6pre18.tgz (or most current version)
wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
tar -zxf dahdi-linux-complete-current.tar.gz
tar -zxf asterisk-1.6.1-current.tar.gz
tar -zxf spandsp-0.0.6pre18.tgz
tar -zxf libpri-1.4-current.tar.gz
tar -zxf asterisk-addons-1.6.1-current.tar.gz

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

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


Asterisk-addons

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.
 

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';
 
 

No comments:

Post a Comment