Пользователь
0,0
рейтинг
1 марта 2013 в 06:03

Разработка → Простая установка Asterisk + FreePBX для начинающих tutorial recovery mode

Ситуация


В сети на сегодняшний день достаточно много описаний по развертыванию IP телефонии и в основном это два варианта:
  • Берём готовый дистрибутив в виде установочного образа (Elastix,Trixbox etc...) и в результате получаем рабочий комплекс не имея никаких знаний в Linux
  • Устанавливаем комплекс самостоятельно занимаясь при этом компиляцией из исходных кодов и ручной правкой множества конфигурационных файлов.

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

Предпосылки


В процессе внедрения IP телефонии в одной из компаний с разветвленной структурой филиалов рассматривались оба варианта но оба не устраивало по ряду причин:
  • Бюджет на проект не подразумевал затрат на привлечение сторонних компаний для развертывания проекта, весь комплекс телефонии было решено развертывать своими силами.
  • Большинство системных администраторов в филиалах были не знакомы с Linux системами и являлись чистыми Winows админами.
  • Требовалось заложить высокую гибкость системы под будущие, еще не придуманные задачи.


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

Решение


Мы решили пойти путем более сложным и трудозатратным для нас, но дешевым для компании. Начали учить системных администраторов азам работы с linux. Концепция обучения состоит в том, чтобы сотрудник мог самостоятельно взяв типовой дистрибутив linux ubutu server 12.04 сумел установить на него Asterisk, Веб управление FreePBX и систему веб-управления факсами hylafax+Avantfax, при этом использую реальные проекты в их текущих состояниях.

Кроме того, для упрощения развертывания, инструкция должна была стать максимально простой и короткой. В итоге всё свелось к простому копи-пасту и установке большинства пакетов из репозиториев. Весь процесс множество раз выверялся повторными установками. Мы постарались обеспечить принцип минимальной достаточности. Всё без чего можно обойтись пропускалось (оставлено для самостоятельного освоения сотрудниками).
Это очень облегчило задачу для Win админов которые не привыкли к консоли и позволило им почувствовать себя более уверенно, особенно когда в результате собственных действий за минимальное число попыток получали рабочую систему. Это очень воодушевляет на первых этапах.

Итак сама инструкция


После установки чистой ubuntu server 12.04 LTS по этой инструкции мы готовы к началу установки.

В первый раз ВСЕ действия выполняем копированием — вставкой ничего не меняя, как есть!

Установка LAMPA

LAMPA — (Linux,Apache,Mysql,Php,Asterisk)
apt-get update
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-* linux-headers-`uname -r`


В процессе установки мастер попросит задать пароль для mysql сервера. Задаем например PaSs или свой и запоминаем. Пустым пароль оставлять не надо!

FreePBX


Указываем пароль, который поставили при установке mysql
passwd=PaSs
#Указываем версию которую хотим установить
fpbxver=2.10


Загрузка и создание базы

svn co http://svn.freepbx.org/freepbx/branches/$fpbxver /usr/src/freepbx
cd /usr/src/freepbx
mysqladmin create asterisk -p${passwd}
mysqladmin create asteriskcdrdb -p${passwd}
mysql asterisk < SQL/newinstall.sql -p${passwd}
mysql asteriskcdrdb < SQL/cdr_mysql_table.sql -p${passwd}
echo "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${passwd}';" > /tmp/tmpfbpx
echo "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${passwd}';" >> /tmp/tmpfbpx
echo "flush privileges;" >> /tmp/tmpfbpx
echo "quit"  >> /tmp/tmpfbpx
mysql -p${passwd} < /tmp/tmpfbpx



Установка FREEPBX

Запускаем установку (заполняем параметры или оставляем по умолчанию):
rm /var/www/index.html
./install_amp --password=${passwd} --webroot=/var/www

Подтверждаем параметры
adduser www-data asterisk
/etc/init.d/apache2 restart
wget http://127.0.0.1/admin/config.php# -O /dev/null


Подготовка WEB сервера

Изменение конфигурации apache2, для корректной работы с русским языком, а так-же меняем пользователя www-data от имени которого стартует apache2 на пользователя asterisk
locale-gen ru_RU 
perl -pi -e 's/#AddDefaultCharset UTF-8/AddDefaultCharset UTF-8/g' /etc/apache2/conf.d/charset 
perl -pi -e 's/export APACHE_RUN_USER=www-data/export APACHE_RUN_USER=asterisk/g' /etc/apache2/envvars 
perl -pi -e 's/export APACHE_RUN_GROUP=www-data/export APACHE_RUN_GROUP=asterisk/g' /etc/apache2/envvars
/etc/init.d/apache2 restart

Загрузка модулей и обновлений

Загружаем и устанавливаем свежие модули
./setup_svn.php
./install_amp
cp amp_conf/moh/*.wav /var/lib/asterisk/moh
cd /etc/asterisk
rm ccss.conf extensions.conf logger.conf iax.conf sip.conf features.conf sip_notify.conf chan_dahdi.conf
chown asterisk:asterisk /etc/amportal.conf


На этом базовый функционал готов, можно подключиться к серверу по
адрес сервера логин и пароль: admin

Некоторые добавления и исправления

Небольшой твик для стабильной работы FOP панели, перезапускает её раз в 10 минут
chmod 770 -R /var/www/admin/modules/fw_fop
echo "*/10 * * * * root amportal 2 > /dev/null">>/etc/crontab

Исправляем косяки с путями хранения звуков
cp -r /var/lib/asterisk/sounds/ /usr/share/asterisk/
rm -r /var/lib/asterisk/sounds/
ln -s /usr/share/asterisk/sounds /var/lib/asterisk/
chown -R asterisk:asterisk /var/lib/asterisk/sounds/
chown -R asterisk:asterisk /var/lib/asterisk/sounds/custom/


Русификация голоса
paths=/usr/share/asterisk/sounds/
cd /tmp
wget -c http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-wav-current.tar.gz
mkdir $paths/ru
cd $paths/ru
tar zxvf /tmp/asterisk-core-sounds-ru-wav-current.tar.gz


На этом этапе базовая система считается развернутой, дальше уже идет настройка через WEB интерфейс.

Ссылка на wiki с инструкцией
@siv237
карма
7,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (12)

  • 0
    Спасибо за материал.

    Являюсь региональным спецом тех.поддержки. Мне бы такие задачи руководство ставило…
    • 0
      Не совсем понял вашу позицию, она позитивна или негативна в отношении поставленной задачи?
      • 0
        Только позитивная. В нашей организации имеются старшие админы которое боги, а мы эникеи, по сути бесправные. Благо на юзерских машинах софт ставить можем, да пользователей новых заводить.

        А так хотелось бы творить, не на лабе.
  • 0
    Жаль PBX не поддерживает Asterisk 11 LTS(
    А инструкция действительно хороша, можно еще было бы добавить популярные возникающие ошибки и их исправления.
    • 0
      можно еще было бы добавить популярные возникающие ошибки и их исправления.

      Мой опыт говорит что при работе по мануалу, 95% ошибок это ошибки в путях и синтаксисе + различные версии. 5% местные аномалии и ошибки авторов.
      Потому самым главным правилом в исправлении ошибок, это просмотр на проделанную работу с осмысливанием сделанного.
      • 0
        Ага.
        Поди у каждого было. Когда новичек повторяет все по мануалу, а в мануале где-то пропущен слеш или точка сколько уходит времени и мата )))
        • 0
          я имел в виду что основную массу ошибок допускает не автор мануала а тот кто по нему работает. а ошибки автора в тех 5%. И то и другое лечится вдумчивым чтением по теме. Глупое повиновение мануалу уже ошибка, от такого действия толку столько же или чуть больше, сколько от развернутого образа настроенной кем то системы.
          • 0
            Если человек изучает что-то принципиально новое для себя, ошибки в инструкциях = не достигнутый результат. Не достигнутый результат в первые разы может отбить всё желание изучать тему.
            Когда результат достигается, хотя бы частичный, то человек уже может сосредоточиться на деталях и попытаться разобраться.
  • 0
    Вопрос к автору: как win-админы будут в дальнейшем обслуживать систему, если настраивали её копи-пастом? Почему ubuntu-server, а не debian например? Не пытаюсь троллить, просто интересно.
    • 0
      Ну смысл инструкции не в том, чтобы поднять готовое решение, а сделать первый шаг. Естественно, это только одна из инструкций и её цель исключительно в том, чтобы прибавить уверенности и заинтересовать. Одно дело — черный ящик в виде готового дистрибутива, а другое это список действий, значение которых всегда можно выяснить, приводящих к результату.
      Как показала практика, большинство админов заинтересовались процессом и начали изучать подробнее Linux, появились вопросы и самостоятельные решения. Многие включились во взаимопомощь друг другу, помогая остальным (у нас для общий чат).

      При сравнении debian 6 и ubuntu server для подобной задачи, ubuntu показался более простым, чисто субъективное мнение, да и результат тестирования ubuntu server с 10.04 версии доказал её стабильность. Ну и конечно важным моментом для обучения является огромная база вопросов и их решений в Интернете именно по ubuntu из-за её наибольшей распространенности из всех Linux дистрибутивов именно у новичков.
      У новичков всегда больше вопросов — больше вопросов — больше ответов — легче гуглить.
  • 0
    Отлично, а будет продолжение статьи, как настроить extention и другое (а то в интернете мануалов много, но конкретики — 0)?
    А то у самого стоит собранный сервер с FXO/FXS платой, а настроить не получается ввиду того, что мануалы пишут кусками, с ошибками и ничего не понятно.
  • 0
    Одна из самых популярных «дыр» для взлома freepbx и asterisk — использование скрипта из /recordings, для выполнения команды от имени пользователя asterisk (как правило, вебсервер запущен под ним же). Команда любая, обычно это заливка шелл-оболочки для удаленного использования. Требует авторизации под каким либо-пользователем и его паролем голосовой почты, который многие ставят крайне простым.

    Хорошим решением будет в любом случае закрыть доступ к скриптам дополнительной авторизацией средствами вебсервера через файл .htaccess, предварительно настроив вебсервер. Мануалов полно.

    Крайний раз разбирал взлом, унесший более ста тыс. рублей, схема была такая. Правда, .htaccess там был, пропал загадочно при переезде сервера.

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