Задача: Разобрать, как установить Asterisk + FreePBX для будущего использования IP–телефонии, как дома так и на рабочем месте.
Надоумило меня одна давно задуманная задачка, проработать установку связки FreePBX и Asterisk для организации своего сервера IP телефонии. Дело в том, что я уже сколько раз убеждаюсь, что чтобы лучше понять, как что работает — все нужно сделать своими руками, воссоздать всю ситуацию пусть и в тестовых условиях и уже на этот стенд постепенно наращивать тот функционал хотелок которые обычно появляются после. Потом работая с боевыми сервисами все понимание дается только на раз, да и к тому же не лишнем будет та справка по задокумментированным шагам, как и что делать то надо. Вот и сейчас, как раз я рассмотрю пошагово всё решение той задачи отраженное в теме данной заметки. Да и еще, т. к. я живу уже в собственном доме, то почему-бы не организовать возможность наличия существовать собственной ATC дома, ведь для этого нужно только:
- наличие телефона с SIM картой от Megafon
- подключенный пакет услуг Multifon
- Система, как физическая так и виртуальная с осью Ubuntu 12.04.5 Server amd64 (я разворачивал на LVM)
и конечно же заинтересованность сделать это и не бояться трудностей которые конечно же возникнут. А они уж поверьте будут, потому как без них ничто не приходит просто так, учась на своих ошибках Вы становитесь
более продуктивными и приобретаете положительный опыт.
Мне же к примеру нравится самому ставить себе задачи и на работе внедрять все то что я разбирал в свободное время. Просто так сложилось, что это как хобби и оно на прямую связано с работой.
Но довольно разглагольствований перейду как практическому освящению шагов.
В заметке все описанное ниже является практической частью, опробованной на работе и дома.
В моем распоряжении система:
RAM = 4Gb (меньше не советую)
HDD = 40 Gb
CPU = 2
- В системе установлены все последние обновления по безопасности
- Отключен Apparmor
- Настроено корректное время
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 srv–phone
Загружаю последний стабильный релиз 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, сейчас запуск имеет место быть из под учетной записи www–data, а для 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 можно щелкнуть по картинке с человеком в очках.
Авторизуемся:
Login: root
Password: 712mbddr@
и нажимаем Continue (для перехода на следующую страницу если введенные данные корректны)
И вот состоялась первая встреча с панелью администрирования Вашей телефонной АТС
Для завершения установки нажимаем выделенную кнопку — Apply Config.
Теперь для нужд телефонии нужно доустановить следующие модули
На заметку:
Советую не просто бездумно нажимать Confirm при установке модулей, а читать что выдается, просто порой для установки какого либо модуля сперва нужно установить зависимости.
Переходим: Module Admin – Check Online –
- Announcements (зависит от Recordings) для создания приветствий;
- Call Forward, переадресация звонков;
- Call Waiting, ожидание звонка, или вторая линия для абонента;
- Conferences, для создания телефонных конференций;
- IVR, для создания голосовых меню;
- Ring Groups, для объединения внутренних абонентов в группы;
- Time Conditions, для создания правил по времени;
- Asterisk Info, для получения дополнительной информации при работе станции;
- CDR Reports (зависит от Core (зависит от Framework)) для получения информации о звонках;
- Asterisk IAX Settings, для расширенных настроек протокола IAX2;
- Asterisk SIP Settings, для расширенных настроек протокола SIP;
На заметку: Какие конкретно ставить Вам модули вы в последствие самостоятельно определите, ставьте только нужное и используемое, не захламляйте систему.
Как устанавливать модули:
Щелкаем по нему (по модулю), к примеру Asterisk CLI – Install – Опускаемся в самый низ страницы и нажимаем Process – Confirm
Об успешной установке говорит окно
Нажимаем 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, в дальнейшем я покажу как его настраивать и использовать. Сейчас установка завершена, установлены необходимые модули посредством которых и идет самостоятельная настройка АТС будь-то для домашних нужд или будь то для использования в компании. Хотя для больших организаций, большой нагрузки нужны дополнительные шаги, такие как создания кластера, продумывания средтств балансировки да и много всего, что рассмотреть все случаи под всех не представляется возможным. А пока я сделал первый шаг для своих заметок в дальнейшем, сперва идет установка каркаса на который я в последствии буду навешивать различный функционал. Мне хочется самим реализовать все то, что используется сейчас в компании где я работают, чтобы во-первых знать как это быстро сделать, продумывать пути решения если что-то пойдет не так. Но довольно слов, буду прощаться, до встречи — с уважением, автор блога — Олло Александр.
Спасибо за дельную заметку.