Исходные данные
Итак, у нас есть желание развернуть офисную телефонию на Астериске.
Отличное желание, прекрасное open-source решение.
OS: Centos 6.5 64-bit
PBX Version: Последний стабильный релиз из SVN (в данный момент это Asterisk SVN-branch-12-r409131)
Телефоны: Тут выбор пал на Cisco SPA504G (для SMB-сегмента рынка)
Подготовка ОС
Так как собирать будем из исходника — подготовим ОС, скачав необходимый набор ПО для компиляции.
[root@asterisk ~]
[root@asterisk ~]
Теперь скачаем исходники Астериска и необходимых для его компиляции DAHDI, LibPRI и libjansson
[root@asterisk ~]
[root@asterisk src]
[root@asterisk src]
[root@asterisk src]
[root@asterisk src]
[root@asterisk src]
Установим пакеты, необходимые для сборки DAHDI, LibPRI и самого Asterisk
[root@asterisk ~]
Список этих пакетов можно получить, выполнив скрипт, лежащий в директории contrib/scripts в исходниках Астериска
[root@asterisk ~]
Сборка DAHDI и LibPRI
[root@asterisk src]
[root@asterisk dahdi-linux]
Если в ответ на команду make получаете ошибку:
You do not appear to have the sources for the 2.X.XX-XXX.el6.x86_64 kernel installed.
Значит ОС подтянула свежее ядро с заголовочными файлами и хочет в него загрузиться.
Перезагрузите сервер.
Продолжаем сборку и установку
[root@asterisk dahdi-linux]
[root@asterisk dahdi-tools]
[root@asterisk dahdi-tools]
С DAHDI закончили. Переходим к LibPRI
[root@asterisk dahdi-tools]
[root@asterisk libpri]
Теперь очередь libjansson, которой нет в репозитариях CentOS
[root@asterisk src]
[root@asterisk src]
[root@asterisk jansson-2.5]
Сборка Asterisk
[root@asterisk jansson-2.5]
[root@asterisk asterisk]
[root@asterisk asterisk]
Необходимо включить Add-Ons -> res_config_mysql, чтобы работал Asterisk Realtime Configuration
Далее — Save & Exit
[root@asterisk asterisk]
И идём курить/пить кофе минут на 3-5-10, в зависимости от мощности сервера, после чего включаем его автозапуск
[root@asterisk asterisk]
[root@asterisk asterisk]
Установка MySQL и подготовка БД
[root@asterisk asterisk]
[root@asterisk asterisk]
[root@asterisk asterisk]
[root@asterisk asterisk]
[root@asterisk asterisk]
Enter password:
Устанавливаем MySQL, добавляем его автостарт при запуске, устанавливаем пароль root'а, удаляем тестовую БД, подключаемся к серверу от имени root.
mysql> CREATE DATABASE `asterisk_db` CHARACTER SET = 'utf8' COLLATE = 'utf8_general_ci';
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON asteriskdb.* TO 'asterisk'@'localhost' IDENTIFIED BY 'mypass' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
Теперь создадим таблицу для хранения SIP пиров
CREATE TABLE `tbl_sip_conf` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(80) NOT NULL DEFAULT '',
`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 NULL,
`amaflags` varchar(13) DEFAULT NULL,
`call-limit` smallint(5) unsigned DEFAULT NULL,
`callgroup` varchar(10) DEFAULT NULL,
`callerid` varchar(80) DEFAULT NULL,
`cancallforward` char(3) DEFAULT 'yes',
`canreinvite` char(3) DEFAULT 'yes',
`context` varchar(80) DEFAULT 'default',
`defaultip` varchar(15) DEFAULT '0.0.0.0',
`defaultuser` varchar(80) NOT NULL DEFAULT '',
`dtmfmode` varchar(7) DEFAULT NULL,
`fromuser` varchar(80) DEFAULT NULL,
`fromdomain` varchar(80) DEFAULT NULL,
`insecure` varchar(4) DEFAULT NULL,
`language` char(2) DEFAULT 'ru',
`macaddress` varchar(20) DEFAULT NULL,
`mailbox` varchar(50) DEFAULT NULL,
`md5secret` varchar(80) DEFAULT NULL,
`deny` varchar(95) DEFAULT NULL,
`permit` varchar(95) DEFAULT NULL,
`mask` varchar(95) DEFAULT NULL,
`musiconhold` varchar(100) DEFAULT NULL,
`pickupgroup` varchar(10) DEFAULT NULL,
`qualify` char(3) DEFAULT NULL,
`regexten` varchar(80) DEFAULT NULL,
`restrictcid` char(3) DEFAULT NULL,
`rtptimeout` char(3) DEFAULT NULL,
`rtpholdtimeout` char(3) DEFAULT NULL,
`secret` varchar(80) DEFAULT NULL,
`serial` varchar(20) DEFAULT NULL,
`setvar` varchar(100) DEFAULT NULL,
`disallow` varchar(100) DEFAULT 'all',
`allow` varchar(100) DEFAULT 'ulaw;alaw;gsm',
`fullcontact` varchar(80) NOT NULL DEFAULT '',
`ipaddr` varchar(45) DEFAULT NULL,
`port` smallint(5) unsigned NOT NULL DEFAULT '0',
`regserver` varchar(100) DEFAULT NULL,
`regseconds` int(11) NOT NULL DEFAULT '0',
`lastms` int(11) NOT NULL DEFAULT '0',
`defaultuser` varchar(80) NOT NULL DEFAULT '',
`subscribecontext` varchar(80) DEFAULT NULL,
`callbackextension` varchar(50) DEFAULT NULL,
`useragent` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) DEFAULT CHARSET=utf8;
Для работы астериска с созданной БД используем минимальный набор конфигов отсюда
В следующей части мануала будет установка Apache+PHP, подготовка скриптов для провиженинга телефонов, настройка DHCP, и т.д.