Установка из исходных кодов Asterisk на Ubuntu 10.04 в контейнере OpenVZ
| Среда, 11 января 2012 г. Просмотров: 506 | Рубрика: asterisk(FreePBX) Метки: OpenVZ Asterik SRC |
Те кто зашел на эту страницу, думаю понимают зачем это нужно. Смысла объяснять в каких случаях нужно использовать asterisk собранный вручную , и почему в этом случаи не желательно наличие FreePBX, думаю ненужно.
Данный цикл статей расскажет о том как сделать "правильный" сервер корпоративного уровня. Без лишних графических оболочек, только все самое нужное.
Остальные статьи:
- Ссылка 1 Установка из исходных кодов Asterisk на Ubuntu 10.04 в контейнере OpenVZ
- Ссылка 2 Hylafax Server на Asterisk 1.10 + AvantFAX
- Ссылка 3 Monast в качестве основной панели Asterisk, установка на Ubuntu
Конечно же несколько слов нужно сказать о виртуализации - судя из названия статьи, собирать это дело нужно в контейнере 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, Факсов. Но это уже тема следующих статей.
Жду ваших комментариев.
Подписаться на комментарии по RSS



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