Установка из исходных кодов Asterisk на Ubuntu 10.04 в контейнере OpenVZ


Среда, 11 января 2012 г.
Просмотров: 506
Рубрика: asterisk(FreePBX)
Метки:

Установка AsteriskТе кто зашел на эту страницу, думаю понимают зачем это нужно. Смысла объяснять в каких случаях нужно использовать asterisk собранный вручную , и почему в этом случаи не желательно наличие FreePBX, думаю ненужно.

Данный цикл статей расскажет о том как сделать "правильный" сервер корпоративного уровня. Без лишних графических оболочек, только все самое нужное.

Остальные статьи:

Конечно же несколько слов нужно сказать о виртуализации - судя из названия статьи, собирать это дело нужно в контейнере OpenVZ, но статья годится и для сборки на реальном ПК, те особенности которые отличаются я озвучу. Почему стоит использовать именно технологию виртуализации и какие это дает преимущества - тема отдельной статьи, это в данную статью не войдет, возможно сделаю отдельную статью позже.

Итак поехали:

Для серверов, рекомендуется обновить релиз Ubuntu:

Собственно установка Asterisk

Переключитесь в режим суперпользователя командой:

sudo su

Выполняем обновление:

apt-get update
apt-get upgrade

Установите MySQL:

apt-get install mysql-server

Введите пароль по запросу.

Устанавливаем MySQL, PHP, заголовки ядра для компиляции Asterisk

apt-get install build-essential openssh-server bison flex apache2 php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient15-dev mpg123 libxml2-dev binutils gcc phpmyadmin g++ libxml2-dev ncurses-dev php5-cli php-pear php-db sqlite3  libsqlite3-dev subversion htop nano

В этом месте как раз и присутствуют отличия между сборкой в контейнере и сборкой на реальном сервере:

Если сборка происходит на реальном сервере, нам необходимо просто поставить из рипозетария исходники ядра которые используются в системе, делается это простой командой:

apt-get install  linux-headers-`uname -r` -y

Если жу используется контейнер, то исходники ядра можно взять здесь:

Качаем нужную версию (в зависимости от версии ядра на ферме контейнеров):

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.32/linux-headers-2.6.32-020632-generic_2.6.32-020632_i386.deb 
dpkg -i linux-headers-2.6.32-020632-generic_2.6.32-020632_i386.deb

Заходим в каталог, куда будем скачивать исходники:

Ставим ссылку

ln -sf /usr/src/linux-headers-2.6.32-020632/ /usr/src/linux

Скачиваем последнюю стабильную версию на данный момент (скачать и проверить или последняя можно тут:

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.20.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.6.2.3.tar.gz

Распаковываем все исходники в /usr/src/

tar -vxzf asterisk-1.6.2.20.tar.gz
tar -vxzf asterisk-addons-1.6.2.3.tar.gz

Компилируем Asterisk в следующем порядке:

./configure 
make menuselect

Выбираем модули в категори Add-ons — app_mysql, cdr_mysql, res_config_mysql. (Чтобы выбрать категорию нажмите — Enter, чтобы отметить модуль нажмите — Space(пробел), вернутся к выбору категорий — Стрелка Влево, чтобы сохранить изменения и выйти нажмите — X.)

Я у себя сразу отключил поддержку H323, и format_mp3 - первое не использую, второй считаю необоснованной тратой ресурсов сервера, если у вас другое мнение, то их конечно же можно оставить.

Если выбран модуль Mp3, качаем файлы для поддержки mp3 формата:

root@computer:$ contrib/scripts/get_mp3_source.sh

Собираем и устанавливаем Asterisk:

root@computer:$ make
root@computer:$ make install
root@computer:$ make config
root@computer:$ make samples

Собираем и устанавливаем addons (принцим тут точно такойже делаем make menuselect и выбираем из списка только то что нам нужно, в версии 1.10 все модули которые мне нужны били в основном пакете сборку addons я не делал. )

cd asterisk-addons-1.6.2.1

./configure

make && make install

make samples

Скачиваем и распаковываем дополнительные звуки:

cd /var/lib/asterisk/sounds
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-alaw-current.tar.gz
tar -vxzf asterisk-extra-sounds-en-alaw-current.tar.gz

Создаем пользователя asterisk и добавляем пользователя www-data в группу asterisk:

adduser asterisk --disabled-password --gecos "Asterisk PBX"
adduser www-data asterisk&&adduser asterisk dialout&&adduser asterisk audio

Должно получиться вроде такого:

root@computer:/# cat /etc/group |grep asterisk
dialout:x:20:asterisk
audio:x:29:asterisk
asterisk:x:1000:www-data
root@computer:/# cat /etc/passwd |grep asterisk
asterisk:x:1000:1000:Asterisk PBX:/home/asterisk:/bin/bash

Теперь сделаем так чтобы Apache запускался от пользователя asterisk:

Целесообразность этого действия обдумывайте сами, у меня в контейнере кроме asteriska ничего больше нет и это мне сильно упрощает запуск скриптов и т. д.

root@computer:$ nano /etc/apache2/envvars
За комментируем следующие строки поставив в начале строки символ #
#export APACHE_RUN_USER=www-data
#export APACHE_RUN_GROUP=www-data
И после них добавим новые строки
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
Чтобы сохранить изменения нажмите Ctrl+O и Ctrl+X для выхода.
Теперь применим изменения к Apache:
root@computer:$ apache2ctl graceful

Резирвируем конфигурационный файл Apache:

cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig

Настраиваем конфиг Apache и разрешения:

sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
chown -R asterisk:asterisk /var/www
chown -R asterisk:asterisk /etc/phpmyadmin
chown -R asterisk:asterisk /var/lib/phpmyadmin
chown -R asterisk:asterisk /usr/share/phpmyadmin

Качаем русские звуковые фразы от сюда http://ivrvoice.ru/downloader

Берем самый свежий архив. В моем случае это asterisk-​sounds-​ru-​gsm-​2010-​04-​28.​tar.​gz

cd /var/lib/asterisk/sounds/
wget http://www.ivrvoice.ru/downloader/download/file/12
tar xvfz 12
rm 12

Выставляем необходимые права на файлы

chown -R asterisk. /etc/asterisk 
chown -R asterisk. /var/{lib,log,spool}/asterisk
mkdir /var/run/asterisk
chown -R asterisk. /var/run/asterisk/

Создаем стартовый скрипт:

nano /etc/init.d/asterisk со следующим содержанием:

cp /usr/src/asterisk-10.1.0-rc1/contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk

меняем строки

DAEMON=__ASTERISK_SBIN_DIR__/asterisk
ASTVARRUNDIR=__ASTERISK_VARRUN_DIR__
ASTETCDIR=__ASTERISK_ETC_DIR__

на

DAEMON=/usr/sbin/$NAME
ASTVARRUNDIR=/var/run/asterisk/
ASTETCDIR=/etc/asterisk

Даем на него правильные права

chmod 755 /etc/init.d/asterisk

Делаем запуск при старте:

update-rc.d asterisk defaults 90 10
Делаем чтобы записи о звонках ложились в базу данных.

Редактируем файл /etc/asterisk/cdr.conf

vi /etc/asterisk/cdr.conf

[general]
 enable=yes

Редактируем файл /etc/asterisk/cdr_mysql.conf

[global]
 hostname=localhost
 dbname=asterisk
 table=cdr
 password=pass01234
 user=asterisk
 port=3306
 ;sock=/tmp/mysql.sock
 ;userfield=1

Редактируем файл /etc/asterisk/modules.conf

vi /etc/asterisk/modules.conf

добавляем следующие строки (если нет):

load => cdr_addon_mysql.so

Создаем БД, таблицы и разрешения.

mysql -p
        > CREATE DATABASE asteriskcdrdb;
        GRANT INSERT
        ON asteriskcdrdb.*
        TO asteriskcdrdb@localhost
        IDENTIFIED BY 'yourpassword';
        USE asteriskcdrdb;
        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 '',
        `userfield` varchar(255) NOT NULL default ''
        );
        ALTER TABLE `cdr` ADD `uniqueid` VARCHAR(32) NOT NULL default '';
        ALTER TABLE `cdr` ADD INDEX ( `calldate` );
        ALTER TABLE `cdr` ADD INDEX ( `dst` );
        ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
    
 
mysql>

Не забываем дать разрешения пользователю asterisk@localhost для работы с БД MySQL:

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> on asteriskcdrdb.*
-> to 'asteriskcdrdb'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Проверяем соединение:

ipbx01:~# mysql -h localhost -u asteriskcdrdb-p asteriskmysql> show tables;
+——————–+
| Tables_in_asterisk |
+——————–+
| cdr |
+——————–+
1 row in set (0.00 sec)
 
mysql> desc cdr;
+————-+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+———————+——-+
| calldate | datetime | NO | MUL | 0000-00-00 00:00:00 | |
| clid | varchar(80) | NO | | | |
| src | varchar(80) | NO | | | |
| dst | varchar(80) | NO | MUL | | |
| dcontext | varchar(80) | NO | | | |
| channel | varchar(80) | NO | | | |
| dstchannel | varchar(80) | NO | | | |
| lastapp | varchar(80) | NO | | | |
| lastdata | varchar(80) | NO | | | |
| duration | int(11) | NO | | 0 | |
| billsec | int(11) | NO | | 0 | |
| disposition | varchar(45) | NO | | | |
| amaflags | int(11) | NO | | 0 | |
| accountcode | varchar(20) | NO | | | |
| userfield | varchar(255) | NO | | | |
| uniqueid | varchar(32) | NO | MUL | | |
+————-+————–+——+—–+———————+——-+
16 rows in set (0.00 sec)
 
mysql>

Вот и все, хранение CDR в БД MySQl у нас работает.

Перегружаем контейнер, проверяем все ли поднялось. Если все нормально - на этом установка завершена.

Дальше переходим к настройке Monast, cdrView, Факсов. Но это уже тема следующих статей.

Жду ваших комментариев.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru digg.com google.com yandex.ru

Подписаться на комментарии по RSS

Оставьте комментарий!

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)