Опыт установки Asterisk+FreePBX в офисе и дома

Posted by

Задача: Разобрать, как установить Asterisk + FreePBX для будущего использования IPтелефонии, как дома так и на рабочем месте.

Надоумило меня одна давно задуманная задачка, проработать установку связки FreePBX и Asterisk для организации своего сервера IP телефонии. Дело в том, что я уже сколько раз убеждаюсь, что чтобы лучше понять, как что работает — все нужно сделать своими руками, воссоздать всю ситуацию пусть и в тестовых условиях и уже на этот стенд постепенно наращивать тот функционал хотелок которые обычно появляются после. Потом работая с боевыми сервисами все понимание дается только на раз, да и к тому же не лишнем будет та справка по задокумментированным шагам, как и что делать то надо. Вот и сейчас, как раз я рассмотрю пошагово всё решение той задачи отраженное в теме данной заметки. Да и еще, т. к. я живу уже в собственном доме, то почему-бы не организовать возможность наличия существовать собственной ATC дома, ведь для этого нужно только:

  • наличие телефона с SIM картой от Megafon
  • подключенный пакет услуг Multifon
  • Система, как физическая так и виртуальная с осью .5 Server amd64 (я разворачивал на LVM)

и конечно же заинтересованность сделать это и не бояться трудностей которые конечно же возникнут. А они уж поверьте будут, потому как без них ничто не приходит просто так, учась на своих ошибках Вы становитесь

более продуктивными и приобретаете положительный опыт.

Мне же к примеру нравится самому ставить себе задачи и на работе внедрять все то что я разбирал в свободное время. Просто так сложилось, что это как хобби и оно на прямую связано с работой.

Но довольно разглагольствований перейду как практическому освящению шагов.

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

В моем распоряжении система:

RAM = 4Gb (меньше не советую)

HDD = 40 Gb

CPU = 2

ekzorchik@srv-serv:~$ sudo rm /etc/localtime

ekzorchik@srv-serv:~$ sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Устанавливаем LAMPA из репозитариев (Linux,Apache,Mysql,PHP,Asterisk):

ekzorchik@srv-serv:~$ sudo apt-get install lamp-server^ libmysqlclient18 asterisk-dev asterisk-mysql asterisk-moh-opsound-wav php-db selinux-utils audiofile-tools bison libset-intspan-perl curl openssl php5-gd lame sox libxml2 subversion dahdi-* -y

New password for the MySQL «root» user:712mbddr@

Repeat password for the MySQL «root» user:712mbddr@

ITU-T telephone code:7

ekzorchik@srv-phone:~$ sudo nano /etc/apache2/apache2.conf

ServerName srvphone

Загружаю последний стабильный релиз FreePBX:

ekzorchik@srv-phone:~$ sudo svn co http://svn.freepbx.org/freepbx/branches/2.11 /var/www/freepbx

Далее создаю и заполняю базу данных для FreePBX:

ekzorchik@srv-phone:~$ mysql -u root -p712mbddr@

# создание базы для хранения конфигурации

mysql> create database asterisk;

Query OK, 1 row affected (0.00 sec)

# создание базы для журнала звонков

mysql> create database asteriskcdrdb;

Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'asterpass';

Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'asterpass';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> exit;

Bye

Далее заполняю созданные базы:

ekzorchik@srv-phone:~$ cd /var/www/freepbx/

ekzorchik@srv-phone:/var/www/freepbx$ mysql -u root -p asterisk < SQL/newinstall.sql

Enter password:712mbddr@

ekzorchik@srv-phone:/var/www/freepbx$ mysql -u root -p asteriskcdrdb < SQL/cdr_mysql_table.sql

Enter password:712mbddr@

ekzorchik@srv-phone:/var/www/freepbx$ cd ~/

Далее изменяю пользователя, из под кого запускается apache, сейчас запуск имеет место быть из под учетной записи wwwdata, а для FreePBX важно, чтобы он был из под учетной записи asterisk:

ekzorchik@srv-phone:~$ cat /etc/apache2/envvars | grep APACHE_RUN

export APACHE_RUN_USER=www-data

export APACHE_RUN_GROUP=www-data

export APACHE_RUN_DIR=/var/run/apache2$SUFFIX

меняем на:

ekzorchik@srv-phone:~$ sudo nano /etc/apache2/envvars

export APACHE_RUN_USER=asterisk

export APACHE_RUN_GROUP=asterisk

Перезапускаем Apache:

ekzorchik@srv-serv:~$ sudo service apache2 restart

в процессе перезапуска получаем сообщение об ошибки запуска:

… waiting /var/lock/apache2 already exists but is not a directory owned by asterisk.

Please fix manually. Aborting.

, решением имеет место быть, удаление указанного каталога и запуском сервиса вновь:

ekzorchik@srv-phone:~$ sudo rm -r /var/lock/apache2/

ekzorchik@srv-phone:~$ sudo service apache2 start

Далее подкорректируем лимиты в /etc/php5/apache2/php.ini:

ekzorchik@srv-phone:~$ sudo nano /etc/php5/apache2/php.ini

было:

upload_max_filesize = 2M

нужно:

upload_max_filesize = 10M

было:

memory_limit = 128M

нужно:

memory_limit = 512M

На заметку: лимит по памяти выставляется индивидуально, я же поставил в половину от системной, хотя по исходным данным это не так, но все же.

Перезапускаем Apache для принятия изменений:

ekzorchik@srv-phone:~$ sudo service apache2 restart

Установим PEAR DB (нужно для установки freepbx):

ekzorchik@srv-phone:~$ sudo pear install DB

На заметку: dbэто дополнение к php отвечающее за доступ к различным базам данных

(MySQL, PostgreSQL, Oracle 7/8/8i и многим другим).

Запускаем скрипт установки FreePBX:

ekzorchik@srv-phone:~$ sudo rm /var/www/index.html

ekzorchik@srv-phone:~$ sudo chown -Rf asterisk:asterisk /var/www/freepbx/*

ekzorchik@srv-serv:~$ cd /var/www/freepbx/

ekzorchik@srv-phone:/var/www/freepbx$ sudo ./install_amp --password=asterpass --webroot=/var/www

Checking for PEAR DB..OK

Checking for PEAR Console::Getopt..OK

Using password: *********

Using Webroot at /var/www

Checking user..OK

Checking if Asterisk is running..running with PID: 11501..OK

Checking for /etc/amportal.conf../etc/amportal.conf does not exist, copying default

Creating new /etc/amportal.conf

Enter your USERNAME to connect to the ‘asterisk’ database:

[asteriskuser] <нажимаю Enter>

Enter your PASSWORD to connect to the ‘asterisk’ database:

[asterpass]<нажимаю Enter>

Enter the hostname of the ‘asterisk’ database:

[localhost]<нажимаю Enter>

Enter a USERNAME to connect to the Asterisk Manager interface:

[admin]<нажимаю Enter>

Enter a PASSWORD to connect to the Asterisk Manager interface:

[amp111]<нажимаю Enter>

Enter the path to use for your AMP web root:

[/var/www]<нажимаю Enter>

Enter the IP ADDRESS or hostname used to access the AMP web-admin:

[192.168.0.1] 192.168.0.136 (указываем IP адрес данной станции)

Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]?

[extensions]<нажимаю Enter>

Enter directory in which to store AMP executable scripts:

[/var/lib/asterisk/bin]<нажимаю Enter>

Created /var/lib/asterisk/bin<нажимаю Enter>

Enter directory in which to store super-user scripts:

[/usr/local/sbin]<нажимаю Enter>

На заметку: указанные значения определенные установщиком можно посмотреть/изменить в файле: /etc/amportal.conf

ekzorchik@srv-phone:/var/www/freepbx$ cd ~/

После того, как установка была завершена следует перезагрузить полностью весь сервер, поверьте это нужно, а то будет, как у меня было, Trunk поднялись зарегистрировались, а вот Extensions телефонных номеров ни в какую не хотели, помогла только перезагрузка.

Далее открываем браузер (только не Internet Explorer, советую использовать Google Chrome) и в строку адреса вводим: Http://192.168.0.136 для регистрации в оснастке управления FreePBX:

Username: root

Password: 712mbddr@

Confirm Password: 712mbddr@

Admin Email address: ekzorchik@ekzorchik.ru

Confirm Email address: ekzorchik@ekzorchik.ru

И нажимаем Set up my Account

Далее произойдет редирект на URL: http://192.168.0.136/admin/config.php на странице которого зайти в Меню администрирования FreePBX можно щелкнуть по картинке с человеком в очках.

Переходим в режим Администратора во FreePBX оснастке

Авторизуемся:

Login: root

Password: 712mbddr@

и нажимаем Continue (для перехода на следующую страницу если введенные данные корректны)

Авторизуемся в панели Администрирования

И вот состоялась первая встреча с панелью администрирования Вашей телефонной АТС

Первое знакомство с Web-интерфейсом FreePBX

Для завершения установки нажимаем выделенную кнопку — Apply Config.

Теперь для нужд телефонии нужно доустановить следующие модули

На заметку:

Советую не просто бездумно нажимать Confirm при установке модулей, а читать что выдается, просто порой для установки какого либо модуля сперва нужно установить зависимости.

Переходим: Module Admin – Check Online —

  1. Announcements (зависит от Recordings) для создания приветствий;
  2. Call Forward, переадресация звонков;
  3. Call Waiting, ожидание звонка, или вторая линия для абонента;
  4. Conferences, для создания телефонных конференций;
  5. IVR, для создания голосовых меню;
  6. Ring Groups, для объединения внутренних абонентов в группы;
  7. Time Conditions, для создания правил по времени;
  8. Asterisk Info, для получения дополнительной информации при работе станции;
  9. CDR Reports (зависит от Core (зависит от Framework)) для получения информации о звонках;
  10. Asterisk IAX Settings, для расширенных настроек протокола IAX2;
  11. Asterisk SIP Settings, для расширенных настроек протокола SIP;

На заметку: Какие конкретно ставить Вам модули вы в последствие самостоятельно определите, ставьте только нужное и используемое, не захламляйте систему.

Как устанавливать модули:

Щелкаем по нему (по модулю), к примеру Asterisk CLI – Install – Опускаемся в самый низ страницы и нажимаем ProcessConfirm

Об успешной установке говорит окно
Так выглядит окно успешной установки модуля во FreePBX

Нажимаем Return и не забываем применить настройки нажатиев по выделенным красным кнопке Apply Config

На заметку:

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

Посмотреть текущую версию установленного Asterisk и FreePBX можно следующим образом:

ekzorchik@srv-serv:~$ asterisk -v | head -n 1

Asterisk 1.8.10.1~dfsg-1ubuntu1

ekzorchik@srv-serv:~$ sudo amportal a ma list | grep framework

[sudo] password for ekzorchik:

framework 2.11.0.42 Enabled

Вот собственно и все по установке Asterisk на систему Ubuntu 12.04.5 Server amd64, в дальнейшем я покажу как его настраивать и использовать. Сейчас установка завершена, установлены необходимые модули посредством которых и идет самостоятельная настройка АТС будь-то для домашних нужд или будь то для использования в компании. Хотя для больших организаций, большой нагрузки нужны дополнительные шаги, такие как создания кластера, продумывания средтств балансировки да и много всего, что рассмотреть все случаи под всех не представляется возможным. А пока я сделал первый шаг для своих заметок в дальнейшем, сперва идет установка каркаса на который я в последствии буду навешивать различный функционал. Мне хочется самим реализовать все то, что используется сейчас в компании где я работают, чтобы во-первых знать как это быстро сделать, продумывать пути решения если что-то пойдет не так. Но довольно слов, буду прощаться, до встречи — с уважением, автор блога — Олло Александр.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

девятнадцать + 2 =