В этой статье будет описан процесс установки полнофункционального веб-интерфейса управления для IP PBX ASterisk. Для этого вам необходим установленный и настроенный сервер. Если у вас его еще нет, или не можете настроить самостоятельно, воспользуйтесь статьей Сервер телефонии Asterisk. FreePBX есть нескольких версий, будем ставить последний релиз. На момент правки статьи, это версия 12. Берем с официальной страницы проекта. По сравнению с предыдущими версиями, установка несколько сократилась.

Поставим необходимые библиотеки.

sudo apt-get install libxml2 libxml2-dev libtiff5 libtiff5-dev lame apache2 mysql-server mysql-client php5 php-pear php-db php5-mysql php5-gd openssl php5-curl libssl-dev linux-source perl bison libncurses5-dev libaudiofile-dev curl sox libcpan-mini-perl
Хотелось бы, чтоб народ маленько включал голову при использовании данной статьи. На момент написания статьи актуальный релиз Ubuntu Server был 12.04, соответственно, копипаст работал. На данный момент, в связи с выходом 14.04 некоторые пакеты в репозиториях поменялись на свежие. К примеру, libtiff4 на libtiff5. Просьба быть внимательными. :-)

Начнем установку. Заходим в каталог freepbx. Для начала, необходимо создать и заполнить базы данных для FreePBX.

mysqladmin -u root -p create asterisk
mysqladmin -u root -p create asteriskcdrdb
mysql -u root -p -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'asterpass';"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'asterpass';"
mysql -u root -p -e "flush privileges;"
Пароль рекомендуется указывать свой!

Еще, чисто для удобства и контроля за создаваемыми базами, рекомендуется поставить phpmyadmin.

sudo apt-get install phpmyadmin

Зайдя в phpmyadmin и обнаружив отсутствие нужных привилегий на базы для пользователя asteriskuser, можно отредактировать их и так.

Изменим пользователя, под которым запускается апач.

sudo nano /etc/apache2/envvars

Правим переменные APACHE_RUN_USER и APACHE_RUN_GROUP.

export APACHE_RUN_USER=asterisk

export APACHE_RUN_GROUP=asterisk

sudo service apache2 restart

После этого, если апач был запущен от родного пользователя www-data, вы можете получить сообщение об ошибке запуска апача.

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

Всего лишь нужно удалить указанный каталог под рутом и запустить апач вновь. Проверяем правильность запуска…

ps aux|grep apache

На выходе должно быть что-то подобное

asterisk 8403 0.0 0.3 37976 4052 ? S 13:12 0:00 /usr/sbin/apache2 -k start

Подправим лимиты в /etc/php5/apache2/php.ini

upload_max_filesize=120M

sudo service apache2 restart

Установка FreePBX сводится всего к одной команде.

sudo ./install_amp --installdb --username=asteriskuser --password=asterpass

Иногда возникает ошибка при установке (замечено на 13.0 версии)

«Reading /etc/asterisk/asterisk.conf…Error! Unable to read /etc/asterisk/asterisk.conf or it was missing a directories section»

Решение: Удаление файла /etc/asterisk/asterisk.conf

Кстати, замечено, что не рекомендуется ставить FreePBX в каталог, отличный от корневого. Иначе потом будет некорректная ссылка на UCP. Несколько неудобно, но не смертельно.

После чего можно выполнить ряд команд, в том числе и для установки всех модулей.

sudo amportal chown
sudo amportal a ma installall
sudo amportal a reload
sudo amportal a ma refreshsignatures
sudo amportal chown

Осталось сделать последний штрих.

sudo ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3
sudo amportal restart

Вот теперь уже можно заходить в панель управления Asterisk. К примеру, если вы установили его в каталог по умолчанию, то заходим в него по ссылке http://ip_address/admin/. Получаем приглашение ввести имя пользователя, пароль и e-mail для админского аккаунта. После заполнения всех полей, жмем кнопку внизу и попадаем на dashboard нашей АТС. Сверху светится оранжевая надпись, советующая нам перезагрузить сервер для применения изменений. Следуем совету. Вроде бы все, но… Идем в меню Settings → Advanced Settings. Исправляем параметры Show Language setting и Use wget For Module Admin, устанавливая их в True. Первый заставляет FreePBX показывать кнопку смены языка, а второй указывает использовать метод wget для скачивания новых модулей, иначе почему-то не качались обновления. Настало время сходить и обновить все модули.

FIXME

Русификация Freepbx

Чтобы начать использовать русский язык в панели управления, вначале нужно в Advanced Settings, в разделе GUI Behavior, установить параметр Show Language setting в True, после чего нажать Apply Settings. После перехода на панель статуса, в строке меню появится кнопка выбора языка. Затем необходимо отредактировать файл /etc/locale.alias. Ищем строку russian ru_RU.ISO-8859-5 и правим ее.

russian ru_RU.UTF-8

После чего перегенерируем локаль и перезапускаем апач.

sudo locale-gen ru_RU
sudo service apache2 restart

В выпадающем списке языков теперь можно выбрать русский, и все должно заработать. ;-)

Работа над ошибками

После всех плясок с бубном в предыдущих разделах, появляется одна «жуткая» ошибка.

.htaccess files are disable on this webserver. Please enable them

В принципе, ничего страшного, если не выставлять боевой сервер в интернет, но давайте исправим, чтоб устрашающий красный свет в глаза не лез. Открываем /etc/apache2/apache2.conf

sudo nano /etc/apache2/apache2.conf

Ищем там строчку /var/www и приводим к указанному виду.

      Options Indexes FollowSymLinks
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted

sudo service apache2 restart

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

Рекомендуемые модули

Для получения обновлений нужно, чтоб в Module Admin были включены основной репозиторий, можно включить и расширенный репозиторий. В первую очередь обновляем модуль FreePBX Localization Updates, хотя это вас не спасет, потому, что локализация выполнена все равно не полностью. 8-)

Для полноценной работы с АТС считаю необходимым наличие следующих модулей:

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

Из Unsupported репозитория рекомендуется поставить еще модуль Custom Context, для создания контекстов.

Необходимо отметить, что кнопка Apply Config после установки модулей появляется только после перехода в другую часть интерфейса, к примеру на dashboard.

Теперь вы будете иметь на своем сервере полноценную рабочую телефонную станцию. Если нужен функционал FOP, лучше поставить другую операторскую панель. Есть проект MonAst, легкая панель, использующая технологии ajax. В общем, на вкус и цвет каждый сам себе злобный буратино. LOL В общих чертах описание процесса установки и настройки FreePBX окончено. В последней версии этой панели управления значительно переработан функционал панели статуса Asterisk, добавлена работа с WebRTC в UCP. Радует, что разработка этого продукта не стоит на месте, развивается функционал. Некоторые модули приходилось ставить отдельно, например будильник, а теперь они есть уже в репозиториях панели управления. Теперь и мы можем пользоваться современным продуктом хорошего качества. По сравнению с версией 2.8 отмечается значительное увеличения количества модулей различного назначения. Есть и коммерческие модули и бесплатные. Для использования коммерческих модулей необходимо установить Zend Guard от Zend_Technologies, что в рамках данной статьи не рассматривается. Однако, предполагать, что Asterisk вкупе с FreePBX как-то ограничен в функциональности без коммерческих модулей, будет неверно. Эта связка сама по себе достаточно законченный продукт. Есть и недочеты, конечно, куда без них. Пользоваться можно и довольно успешно.

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

FIXME

Ссылки

При подготовке данной статьи были использованы материалы следующих сайтов.

http://www.linux16.net/

http://www.habrahabr.ru/

Обсуждение статьи