- Обновляем список репозиториев
apt-get update
- Установка пакетов необходимых для установки Astrisk
apt-get install cpp cpp-4.6 cpp-4.7 g++ g++-4.7{a} libstdc++6-4.7-dev{a} make ncurses-dev libxml2-dev
- Загрузка исходников Asterisk. Используем только версии LTS, в нашем случае Asterisk 1.8.x LTS. Посмотреть версии можно тут Исходники Asterisk LTS
- Создадим каталог в который будем в дальнейшем загружать все исходники
mkdir src
- Переходим в каталог src
cd src
- Загружаем исходники Asterisk
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8-current.tar.gz
- Распаковываем полученный архив
tar xvzf asterisk-1.8-current.tar.gz
- Переходим в каталог с исходниками
cd asterisk-1.8.24.0/
- Проверяем конфигурацию на совместимость с системой
./configure
- Устанавливаем Asterisk
make make install
- Проверяем запустился ли Asterisk
asterisk -r
Если Asterisk запустился то мы попадем в его консоль и на выходе должны получить примерно это:
Asterisk 1.8.24.0, Copyright (C) 1999 - 2013 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 1.8.24.0 currently running on pbx-backup (pid = 4160)
- Для выхода из консоли Asterisk используется команда quit
quit
- На этом установка демона Asterisk закончена.
Настройка Apache для работы с Asterisk
- Создаем пользователя asterisk
adduser asterisk --disabled-password --gecos "Asterisk PBX"
- Добавляем пользователя в группу www-data
adduser www-data asterisk
- После того как пользователь asterisk создан, необходимо настроить Apache так, чтобы он запускался от имени пользователя asterisk:
Внесем изменения в переменные окружения Apache
nano /etc/apache2/envvars
Изменим строки:
export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data
Нужно заменить пользователя и группу на asterisk
export APACHE_RUN_USER=asterisk export APACHE_RUN_GROUP=asterisk
Чтобы внесенные изменения применились необходимо перезагрузить Apache, для этого используем безопасную перезагрузку:
apache2ctl graceful
Для проверки работы Apache нужно посмотреть запущенные процессы, убедиться что он запущен от имени asterisk и проверить доступность сервера, зайти на ip сервера через браузер, должна появиться надпись IT WORKS!
ps aux|grep apache
На выходе должно быть примерно так:
asterisk 4078 0.0 0.3 191016 15172 ? S 15:13 0:00 /usr/sbin/apache2 -k start
- На этом настройка Apache для работы с Astersik закончена.
Установка FreePBX
- FreePBX это полнофункциональный веб-интерфейс для конфигурации Asterisk PBX ( Asterisk GUI ). Конечно настроить конфигурационные файлы Asterisk можно и без web морды, но формат конфигов мягко говоря плохо читаемый, в связи с чем операция по добавлению нового оператора может вызвать много времени и вопросов. Поэтому считаю необходимым поставить веб морду, но при этом надо учитывать что FreePBX перетирает конфиги при вводе новых данных, поэтому нельзя добавлять свой код в основные конфиги Asterisk при использовании FreePBX.
- Для начала нам нужно скачать исходники FreePBX, для этого вводим команду:
wget http://mirror.freepbx.org/freepbx-2.11.0.tar.gz
- Устанавливаем необходимые пакеты для FreePBX
aptitude install libxml2 libxml2-dev libtiff4 libtiff4-dev lame apache2 mysql-server mysql-client php5 php-pear php5-mysql php5-gd openssl libssl-dev linux-source-3.2.0 perl bison libncurses5-dev libaudiofile-dev curl sox libcpan-mini-perl
- Переходим в папку с исходниками FreePBX
cd freepbx-2.11.0/
- Теперь нам необходимо подготовить базу данных для работы с FreePBX, а именно создать базы данных, таблицы и пользователей.
1.Необходимо установить mysql. Здесь нет ничего сложного, ставим из рэпов командой:
aptitude install mysql
во время установки необходимо задать и запомнить root пароль для mysql, не путайте его с паролем root пользователя, это разные пароли.
2.После установки mysql, переходим к созданию баз данных asteriskcdrdb и asterisk:
mysqladmin create asteriskcdrdb -p
mysqladmin create asterisk -p
для создания баз потребуется ввести пароль root пользователя mysql
3.Создаем таблицы в базах данных. Для этого в исходниках FreePBX есть необходимые скрипты, нам нужно лишь их запустить от имени root пользователя mysql:
mysql --user=root --password=ваш пароль asteriskcdrdb < /SQL/cdr_mysql_table.sql
mysql --user=root --password=ваш пароль asterisk < /SQL/newinstall.sql
4.Настраиваем права доступа. Создаем пользователя asteriskuser и даем ему права на созданные ранее базы данных:
Заходим в консоль Mysql
- mysql --user root -p
Назначаем привилегии, создаем пользователя и задаем ему пароль:
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'пароль';
GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'пароль';
Для выхода из консоли Mysql наберите:
quit
Базу данных Mysql для работы с FreePBX мы подготовили, теперь можно запустить скрипт для установки файлов FreePBX.
- Нужно запустить скрипт install_amp который скопирует все необходимые файлы. Все вопросы которые будут заданы при установке можно оставить по умолчанию, укажите только правильный пароль для пользователя asteriskuser, пароль который мы задали на этапе назначения привилегий на базы данных.
полный/путь_к_скрипту/install_amp
Например
src/freepbx-2.11.0/install_amp
все зависит от того куда вы скопировали исходники FreePBX
- После установки пробуем зайти на Web GUI Asterisk FreePBX:
http://ip-address
Установка панели FOP2
- FOP2 — это панель управления операторами для IP-АТС Asterisk, работа с которой осуществляется посредством веб-доступа. FOP2 позволяет выполнять разнообразные действия над телефонными разговорами, как над своими, так и над чужими (при наличии привелегий), что делает эту панель удобной для использования в колл-центрах супервайзерами и в компаниях секретарями.
- Скачать последнюю версию FOP2 панели для своей системы всегда можно с официального сайта http://fop2.com/download.php и купить лицензию (в демо режиме доступно 15 кнопок)http://fop2.com/buy.php
- Описывать процесс скачивания и распаковки архива не буду, думаю вопросов на этом этапе быть не должно. Поэтому сразу переходим к процессу установки. Для этого переходим в распакованный каталог с исходниками FOP2
cd /fop2/ make install
Если все прошло удачно то увидим вот это:
root@pbx-backup:~/src/fop2# make install Done!
- Далее нам необходимо сгенерировать диалплан FOPа для asterisk. Для этого есть уже готовый скрипт, нам нужно только его запустить:
/usr/local/fop2/generate_override_contexts.pl -write
Если на выходе получаем ошибку:
File /etc/asterisk/extensions_override_freepbx.conf is not writable. Aborting.
Значит нужно создать файл:
nano /etc/asterisk/extensions_override_freepbx.conf chown asterisk:asterisk /etc/asterisk/extensions_override_freepbx.conf chmod 664 /etc/asterisk/extensions_override_freepbx.conf
Файл создали, снова запускаем генератор диалплана:
/usr/local/fop2/generate_override_contexts.pl -write
На выходе должны получить:
/usr/local/fop2/generate_override_contexts.pl -write Backing up /etc/asterisk/extensions_override_freepbx.conf to /etc/asterisk/extensions_override_freepbx.conf.bak Done! Cleaning and updating /etc/asterisk/extensions_override_freepbx.conf ... Done! Creating /etc/asterisk/extensions_override_fop2.conf ... Done! Reloading asterisk dialplan... Finished!
- Теперь нам нужно внести изменения в конфиг FOP. Нужно узнать AMI пароль, что бы соединить fop2 панель с астериском, для этого выполняем команду и смотрим пароль в графе [admin], строчка secret:
nano /etc/asterisk/manager.conf
Копируем пароль из поля secret
- Полученный пароль нужно вставить в /usr/local/fop2/fop2.cfg в строчку manager_secret, так же в этом файле нужно раскомментировать строчку "web_dir"
- Проверяем корректность наших настроек по установке fop2 следующей командой:
/usr/local/fop2/fop2_server –test
Если все удачно должны увидеть:
Running in Demo Mode Connection to manager OK!
- Запускаем FOP2:
service fop2 start
- Теперь нам нужно установить администраторский модуль во FreePBX. Скачиваем его на официальном сайте http://fop2.com/download.php (FOP2Admin FreePBX Module) Для этого открываем вебинтерфейс и переходим во вкладку управление модулями. Выбираем закачать модули и выбираем скачанный модуль и нажимаем кнопку Upload. Если все удачно видим надпись: Модуль загружен успешно, Необходимо задействовать его используя администрирование локального модуля чтобы сделать его доступным.
Установка статистики Asternic Call Center Stats 2
- Asternic Call Center Stats 2 - расширенный набор инструментов статистики, отчетов и графиков.
- Сайт разработчика где можно скачать исходники http://www.asternic.net/downloads/
- Распаковываем исходники и приступаем к установке
- Создаем новую базу данных в mysql
mysqladmin -u root -p create qstats
- Заполняем ее таблицами (файл sql лежит в исходниках в папке sql)
mysql -u root -p qstats < ./sql/mysql-tables.sql
- Создаем пользователя и даем ему права на базу данных qstats:
mysql -u root -p mysql> GRANT ALL PRIVILEGES ON qstats.* TO 'qstats'@'localhost' IDENTIFIED BY 'ПАРОЛЬ' WITH GRANT OPTION; mysql> flush privileges;
- Теперь нужно поправить конфиг, внести туда учетные данные для подключения к базе данных и к asterisk:
nano ./html/config.php
Устанавливаем значение следующих переменных:
$DBUSER = 'qstats'; - имя пользователя базы данных $DBPASS = 'ПАРОЛЬ'; - пароль к базе данных $MANAGER_USER = "admin"; - имя пользователя AMI asterisk; $MANAGER_SECRET = "ПАРОЛЬ"; - пароль пользователя AMI asterisk;
- Копируем содержимое каталога html из исходников, в каталог /var/www/stats/
- Устанавливаем права на каталоги:
chown asterisk:asterisk /var/www/html/stats chown asterisk:asterisk /var/www/html/stats* -R
- Создаем файл для лицензионного ключа:
touch /var/www/stats/asterniclic.txt chmod 666 /var/www/stats/asterniclic.txt
- Далее нужно скопировать анализатор активности, который и будет собирать статисику:
mv parselog /usr/local
- Установка IonCube. IonCube одна из лучших систем по защите кода PHP проектов. Позволяет скрыть от посторонних глаз истинный PHP-код, создавая защищенные и полностью рабочие проекты.
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz tar zxvf ioncube_loaders_lin_x86.tar.gz cp ioncube/ioncube_loader_lin_5.4.so /usr/lib/php5/20100525 cp ioncube/ioncube_loader_lin_5.4_ts.so /usr/lib/php5/20100525 nano /etc/php5/conf.d/20-ioncube.ini
- Вставляем в /etc/php5/conf.d/20-ioncube.ini следующий код:
zend_extension = /usr/lib/php5/20100525/ioncube_loader_lin_5.4.so
- Перезагружаем apache и пробуем зайти на статистику, http://ip-address/stats, должна появиться страница ввода лицензии, значит все работает.
Настройка репликации баз данных
- В качестве резерва используется второй сервер с аналогичным софтом. Необходимо настроить репликацию базы данных, чтобы в случае выхода из строя первого сервера, можно было оперативно запустить второй. Изначально вопрос о кластеризации не стоял, поэтому на данный момент резервирование будем делать репликацией базы данных asterisk. Данное резервирование позволит в течении 10 минут запустить резервную атс. В дальнейшем будем организовывать кластер, но это позже.
- Настраиваем mysql на основном сервере:
1.Обязательно укажем уникальный ID сервера, путь для бинарных логов и имя БД для репликации в секции [mysqld]:
server-id = 1 log-bin = /var/lib/mysql/mysql-bin.log replicate-do-db = asterisk
Убедитесь, что у вас достаточно места на диске для бинарных логов
2.Добавим пользователя slave_user, под правами которого будет производится репликация. Будет достаточно привилегии "replication slave ":
mysql@pbx> GRANT replication slave ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
3.Перезагрузим MySQL, чтобы изменения в конфиге вступили в силу:
root@pbx# service mysqld restart
4.Если все прошло успешно, команда "show master status " должна показать примерно следующее:
mysql@pbx> SHOW MASTER STATUS\G File: mysql-bin.000001 Position: 98 Binlog_Do_DB: Binlog_Ignore_DB:
Значение position должно увеличиваться по мере того, как вносятся изменения в БД на мастере.
5.На втором сервере укажем ID сервера, имя БД для репликации и путь к relay-бинлогам в секции [mysqld] конфига, затем перезагрузим MySQL:
server-id = 2 relay-log = /var/lib/mysql/mysql-relay-bin/log relay-log-index = /var/lib/mysql/mysql-relay-bin.index replicate-do-db = asterisk
root@backup# service mysqld restart
6.Переносим данные
Здесь нам придется заблокировать БД для записи:
mysql@pbx> FLUSH TABLES WITH READ LOCK;
Посмотрим состояние мастера командой «show master status» и запомним значения File и Position (после успешной блокировки мастера они не должны изменятся):
File: mysql-bin.000001 Position: 98
Делаем дамп БД, и после завершения операции снимаем блокировку мастера:
mysqldump -u root -p astersik > /root/asterisk.sql
mysql@pbx> UNLOCK TABLES;
Переносим дамп на резервный сервер и восстанавливаем из него данные:
mysqldump -u root -p astersik < /root/asterisk.sql
Наконец, запускаем репликацию командами "change master to" и "start slave" и посмотрим, все ли прошло хорошо:
mysql@backup> stop slave; mysql@backup> CHANGE MASTER TO MASTER_HOST='pbx',MASTER_USER='slave_user',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=98; mysql@backup> start slave;
Значения MASTER_LOG_FILE и MASTER_LOG_POS мы берем с мастера.
Посмотрим, как идет репликация командой "show slave status ":
mysql@replica> SHOW SLAVE STATUS\G Slave_IO_State: Waiting for master to send event Master_Host: pbx Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 98 Relay_Log_File: mysql-relay-bin.000001 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: asterisk Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 98 Relay_Log_Space: 235 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 5
Значение Seconds_Behind_Master может быть любым целым числом.Если репликация идет нормально, реплика будет следовать за мастером (номер лога в Master_Log_File и позиция Exec_Master_Log_Pos будут расти). Время отставания реплики от мастера (Seconds_Behind_Master), в идеале, должно быть равно нулю. Если оно не сокращается или растет, возможно, что нагрузка на реплику слишком высока — она просто не успевает повторять изменения, происходящие на мастере.Если же значение Slave_IO_State пусто, а Seconds_Behind_Master равно NULL, репликация не началась. Смотрите лог MySQL для выяснения причины, устраняйте её и заново запускайте репликацию.