21 сентября 2015 г.

Установка Asterisk 13 и FreePBX 12 в Ubuntu Server 14.04

Первоначальная настройка системы


При установке Ubuntu Server 14.04 выберите OpenSSH server и LAMP server:


Переключитесь на root пользователя:
sudo -i
Обновите систему:
apt-get update && apt-get upgrade -y
Установите необходимые пакеты:
apt-get install -y build-essential linux-headers-$(uname -r) openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git subversion unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev libmyodbc lame
Перезагрузите сервер:
reboot
Снова переключитесь на root пользователя:
sudo -i
Исправьте предупреждение Apache о наименовании сервера (Could not reliably determine the server's fully qualified domain name):
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf && a2enconf servername && service apache2 restart
Установите PearDB:
pear uninstall db && pear channel-update pear.php.net && pear install -Z db-1.7.14

Установка и настройка Asterisk


Скачайте файлы с исходным кодом:
cd /usr/src && wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz && wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz && wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz && git clone https://github.com/akheron/jansson.git && git clone https://github.com/asterisk/pjproject.git
Скомпилируйте и установите DAHDI и LibPRI:
cd /usr/src && tar xvfz dahdi-linux-complete-current.tar.gz && tar xvfz libpri-current.tar.gz && rm -f dahdi-linux-complete-current.tar.gz libpri-current.tar.gz && cd dahdi-linux-complete-* && make all && make install && make config && cd /usr/src/libpri-* && make && make install
Скомпилируйте и установите pjproject:
cd /usr/src/pjproject && ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr && make dep && make && make install
Скомпилируйте и установите Jansson:
cd /usr/src/jansson && autoreconf -i && ./configure && make && make install
Скомпилируйте и установите Asterisk:
cd /usr/src && tar xvfz asterisk-13-current.tar.gz && rm -f asterisk-13-current.tar.gz && cd asterisk-* && ./configure && contrib/scripts/get_mp3_source.sh && make menuselect
После ввода команды make menuselect, вам будет предложено выбрать устанавливаемые модули. Большинство требуемых модулей выбираются автоматически. Для поддержки mp3 включите модуль 'format_mp3'.


В разделе Core Sound Packages выберете поддержку русскоязычных файлов (если требуется):


В разделе Extras Sound Packages выберете дополнительные звуковые файлы (если требуется):


В завершении выберете Save & Exit и продолжите установку:
make && make install && make config && ldconfig

Установка и настройка FreePBX


Скачайте и распакуйте FreePBX:
cd /usr/src && wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-12.0-latest.tgz && tar zxvf freepbx-12.0-latest.tgz && cd /usr/src/freepbx
Создайте пользователя Asterisk и задайте права пользователя:
useradd -m asterisk && chown asterisk. /var/run/asterisk && chown -R asterisk. /etc/asterisk && chown -R asterisk. /var/{lib,log,spool}/asterisk && chown -R asterisk. /usr/lib/asterisk
Удалите веб-директорию сервера Apache:
rm -rf /var/www/html
Настройте сервер Apache:
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini && sed -ie 's/\;date\.timezone\ \=/date\.timezone\ \=\ "Europe\/Moscow"/g' /etc/php5/apache2/php.ini && cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig && sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf && sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf && service apache2 restart

Настройка ODBC


Добавьте следующие строки в /etc/odbcinst.ini в зависимости от разрядности операционной системы:

Для 32-битной ОС:
cat >> /etc/odbcinst.ini << EOF
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1

EOF
Для 64-битной ОС:
cat >> /etc/odbcinst.ini << EOF
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1

EOF
 Добавьте следующие строки в /etc/odbc.ini:
cat >> /etc/odbc.ini << EOF
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3

EOF

Настройка MySQL


Создайте безопасный пароль для связи FreePBX и MySQL:
export ASTERISK_DB_PW=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 - | cut -c2-18`
Эта команда сгенерирует 16-ти значный пароль и сохранит значение в переменной {ASTERISK_DB_PW}.

Подготовка базы данных Asterisk в MySQL:
mysqladmin -u root -p create asterisk
mysqladmin -u root -p create asteriskcdrdb
Задайте права на использование БД MySQL пользователю asteriskuser@localhost:
mysql -u root -p -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
mysql -u root -p -e "flush privileges;"

Запуск Asterisk и завершение установки FreePBX


Запустите Asterisk:
./start_asterisk start
Установите FreePBX:
./install_amp --installdb --username=asteriskuser --password=${ASTERISK_DB_PW} 

В квадратных скобках указанны значения по умолчанию и, в принципе, можно воспользоваться ими, только необходимо указать ip адрес вашего сервера.

Обновите пакеты FreePBX:
amportal chown && amportal a ma installall && amportal a reload && amportal a ma refreshsignatures && amportal chown
Создайте ссылку на директорию Music On Hold (mp3):
ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3
Перезапустите amportal:
amportal restart
Активируйте возможность выбора русской локализации веб-интерфейса FreePBX (если требуется):
sed -i 's/ru_RU.ISO-8859-5/ru_RU.UTF-8/g' /etc/locale.alias && locale-gen ru_RU && service apache2 restart
Перейдите на веб-интерфейс FreePBX:
http://ip_адрес_сервера/admin

На открывшейся странице зарегистрируйте администратора FreePBX.

Если после входа наблюдается Security Issue"Critical Module "FreePBX Framework" is unsigned, re-download immediately", то обновите подписи модулей FreePBX:
cd /usr/src/freepbx && amportal chown && amportal a ma refreshsignatures && amportal a reload
PS Также подготовил виртуальные машина VMware до и после инсталляции - https://cloud.mail.ru/public/Kz2s/igKKoH63b

Источники:
http://wiki.freepbx.org/display/FOP/Installing+FreePBX+12+on+Ubuntu+Server+14.04+LTS
http://help.ubuntu.ru/wiki/freepbx

14 комментариев

  1. В самом начале при установке пакетов необходимо использовать синтаксис другой "linux-headers-$(uname -r)" иначе выдаст ошибку "C: Couldn't find package linux-headers-uname -r"

    ОтветитьУдалить
    Ответы
    1. Спасибо за информацию, но только что проверил на Ubuntu 14.04.4 и у меня команда sudo apt-get install linux-headers-`uname -r` отработала нормально. В какой версии дистрибутива проверяли?

      Удалить
    2. В 14.04.4 не прошло:
      sudo apt-get install linux-headers-`uname -r`
      Написал:
      sudo apt-get install linux-headers-$(uname -r)
      и все ОК!

      Удалить
    3. Тему поправил, благодарю всех за информацию!

      Удалить
  2. Образ версии ubuntu-14.04.4-server-amd64 недавно скачанный с оф сайта, возможно отличие из-за разрядности каких правок со стороны
    Canonical.

    Так же, при обновлении пакетов FreePBX использовать "amportal a ma installall" нельзя, т.к. модуль digiumaddoninstaller не поддерживается в OS Ubuntu, установка будет прерываться на нем и в GUI FreePBX будет соответствующая ошибка. Можно обновить модули вручную
    "amportal a ma upgrade framework
    amportal a ma upgrade core
    amportal a ma upgrade voicemail
    amportal a ma upgrade sipsettings
    amportal a ma upgrade infoservices
    amportal a ma upgrade featurecodeadmin
    amportal a ma upgrade logfiles
    amportal a ma upgrade callrecording
    amportal a ma upgrade cdr
    amportal a ma upgrade dashboard"
    , или вообще не трогать их.

    ОтветитьУдалить
    Ответы
    1. ради интереса проверил - на 32битной версии работают оба варианта..

      Удалить
    2. Я тоже проверял на x32. Спасибо за информацию!

      Удалить
  3. бьюсь второй день((
    Поставил версию FreePBX 13 (Ubuntu 14.4), при вводе строки
    ./install_amp --installdb --username=asteriskuser --password=${ASTERISK_DB_PW}
    пишет ./install_amp no such file ...
    когда пишу ./install --installdb --username=asteriskuser --password=${ASTERISK_DB_PW} начинает спрашивать кучу параметров((

    ОтветитьУдалить
  4. Доброго времени суток, подскажите можно ли установить на виртуальную машину, и нужны ли дополнительные настройки?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте! Да, можно. Нет, доп настройки не нужны.

      Удалить
    2. Ссылка на виртуальные машины (VMware)- https://cloud.mail.ru/public/Kz2s/igKKoH63b

      Удалить
  5. Вышла libpri 1.5, 1.4 по ссылке недоступна
    можно использовать http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

    ОтветитьУдалить
    Ответы
    1. Здравствуйте, исправил, спасибо!

      Удалить
  6. В самом деле первая инструкция которая помогла без косяков, за исключением модули ставил вручную
    amportal a ma upgrade framework
    amportal a ma upgrade core
    amportal a ma upgrade voicemail
    amportal a ma upgrade sipsettings
    amportal a ma upgrade infoservices
    amportal a ma upgrade featurecodeadmin
    amportal a ma upgrade logfiles
    amportal a ma upgrade callrecording
    amportal a ma upgrade cdr
    amportal a ma upgrade dashboard

    ОтветитьУдалить