В этой статье будет описан процесс установки полнофункционального веб-интерфейса управления для 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

Начнем установку. Заходим в каталог 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
После чего можно выполнить ряд команд, в том числе и для установки всех модулей.
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 для скачивания новых модулей, иначе почему-то не качались обновления. Настало время сходить и обновить все модули.
Русификация 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, хотя это вас не спасет, потому, что локализация выполнена все равно не полностью.
Для полноценной работы с АТС считаю необходимым наличие следующих модулей:
- Announcements, для создания приветствий;
- Call Forward, переадресация звонков;
- Call Waiting, ожидание звонка, или вторая линия для абонента;
- Conferences, для создания телефонных конференций;
- IVR, для создания голосовых меню;
- Ring Groups, для объединения внутренних абонентов в группы;
- Time Conditions, для создания правил по времени;
- Asterisk Info, для получения дополнительной информации при работе станции;
- CDR Reports, для получения информации о звонках;
- Asterisk IAX Settings, для расширенных настроек протокола IAX2;
- Asterisk SIP Settings, для расширенных настроек протокола SIP;
Из Unsupported репозитория рекомендуется поставить еще модуль Custom Context, для создания контекстов.
Теперь вы будете иметь на своем сервере полноценную рабочую телефонную станцию. Если нужен функционал FOP, лучше поставить другую операторскую панель. Есть проект MonAst, легкая панель, использующая технологии ajax. В общем, на вкус и цвет каждый сам себе злобный буратино.
В общих чертах описание процесса установки и настройки FreePBX окончено. В последней версии этой панели управления значительно переработан функционал панели статуса Asterisk, добавлена работа с WebRTC в UCP. Радует, что разработка этого продукта не стоит на месте, развивается функционал. Некоторые модули приходилось ставить отдельно, например будильник, а теперь они есть уже в репозиториях панели управления. Теперь и мы можем пользоваться современным продуктом хорошего качества. По сравнению с версией 2.8 отмечается значительное увеличения количества модулей различного назначения. Есть и коммерческие модули и бесплатные. Для использования коммерческих модулей необходимо установить Zend Guard от Zend_Technologies, что в рамках данной статьи не рассматривается. Однако, предполагать, что Asterisk вкупе с FreePBX как-то ограничен в функциональности без коммерческих модулей, будет неверно. Эта связка сама по себе достаточно законченный продукт. Есть и недочеты, конечно, куда без них. Пользоваться можно и довольно успешно.
Ссылки
При подготовке данной статьи были использованы материалы следующих сайтов.