Перейти к записям
Дек 28 / MyBlog-IT Admin

Установка FreePBX + Asterisk 11 Ubuntu/Debian v7

Подготовка системы

Настоящее руководство описывает установку на Ubuntu / Debian v7 систем Asterisk и FreePBX на основе исходных файлов. Хотя для Ubuntu и Debian существуют deb-пакеты для Asterisk, в настоящем руководстве они не рассматриваются.

Проверено на:

  • Ubuntu Server v12.04 LTS / Debian v7 / 32 или 64 бит 
  • Asterisk v11.5 
  • FreePBX v2.11

Начнем

Если установка осуществляется «с нуля» на загруженной из ISO системе Ubuntu Server или Debian v7, то ISO выполнит установку по умолчанию.  После такой установки переходите к разделу «Создание корневого пароля». В противном случае, предполагается, что к моменту начала установки у вас уже имеется сервер Ubuntu с установленными базовыми компонентами.

Мы хотим выполнять установку в консольном текстовом режиме, а не в графическом режиме GUI. Если у вас уже установлен GUI, то вам потребуется отключить его во время запуска системы. У вас останется возможность включить его вручную, используя команду: «startx»

1sudo nano /etc/default/grub

Замените GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

на

GRUB_CMDLINE_LINUX_DEFAULT=””  

если это еще не сделано.

Обновите Grub:

1sudo update-grub

Создание корневого пароля

1$sudo passwd root [sudo] password for defaultuser: [введите пароль для пользователя по умолчанию, который вы задали во время установки]
2Enter new UNIX password: [введите новый корневой пароль]
3Retyp new UNIX password: [повторите новый корневой пароль, которые вы выбрали до этого]
4passwd: password updated successfully $su Password:
5[введите корневой пароль]
6#

С этого момента все команды будут предполагать, что вы вошли в систему, как root (#).  В противном случае вам придется использовать sudo перед каждой командой

Установка требуемых пакетов Asterisk/FreePBX, других полезных пакетов, и зависимостей

1apt-get update && apt-get upgrade -y
1apt-get install -y build-essential openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear 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 uuid uuid-dev libiksemel-dev tftpd postfix mailutils nano ntp libspandsp-dev libcurl4-gnutls-dev unixodbc unixodbc-dev libmyodbc e2fsprogs gcc g++ make libnewt-dev libncurses5-dev openssl libssl-dev zlib1g-devlibjansson-dev uuid-dev sqlite-devel libxml2-devel

Во время установки вам будет несколько раз предложено задать корневой пароль MySQL, поэтому установите его сейчас.  Если вы не уверены, как сконфигурировать postfix, то тогда сконфигурируйте его для internet site.

Исправьте ошибку  chkconfig /sbin/insserv: No such file or directory.

1ln -s /usr/lib/insserv/insserv /sbin/insserv

Установите pear DB

Не обращайте внимания на предупреждение.

1pear install db-1.7.14
2reboot

TFTP

Если вы планируете использовать оборудование телефонов SIP, то вам, вероятно, потребуется разрешить работу с сервером tftp. Создайте файл конфигурации tftp.

nano /etc/xinetd.d/tftp
service tftp
{
protocol = udp
port =69
socket_type  = dgram
 wait  = yes
 user  = nobody
 server  = /usr/sbin/in.tftpd
 server_args  = /tftpboot
 disable  = no
 }

Теперь создайте каталог и перезапустите демона запуска tftp.

1mkdir /tftpboot
2chmod 777 /tftpboot
3service xinetd restart

Установите временную зону

Проверьте временную зону

Если необходимо выполнить изменения, то выполните команду

1dpkg-reconfigure tzdata

и следуйте инструкциям.

Загрузка и разархивирование исходных файлов

Скачайте и установите DAHDI (не обязательно)

Это делать не нужно, если вы не устанавливаете карту telco, и не используете пейджинг и конференции meetme.  Asterisk 11 по умолчанию использует confbridge для настройки пейджинга и конференций. Если вы не уверены, то установите этот пакет в любом случае.

1cd /usr/srс
2wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
3tar zxvf dahdi-linux-complete*
4cd /usr/src/dahdi-linux-complete*/
5make && make install && make config

Скачайте FreePBX

Убедитесь, что в вашем распоряжении последняя версия.

1cd /usr/src
2wget http://mirror.freepbx.org/freepbx-2.11.0.42.tgz
3tar zxvf freepbx-2.11*

Скачайте и установите Asterisk

Не запускайте make samples.  Если вы сделаете это, то возникнут проблемы, которые вам впоследствии придется устранять. Выполнив команду make samples на уже работающей и обновленной системе FreePBX, вы выведете ее из строя. Вам придется вручную вернуться к предыдущему пользователю и паролю в /etc/asterisk/manager.conf, и, возможно, проделать и другие действия, чтобы система заработала снова.

1cd /usr/src
2wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz
3tar zxvf asterisk-11-current.tar.gz
4cd /usr/src/asterisk-11*/
5make clean && make distclean

Предварительные настройки

Установка CFLAGS=-mtune=native предотвращает появление ряда проблем, связанных с виртуальными машинами, и с переносом их на другое оборудование. Возможно, что это более приемлемый путь, чем использование умолчаний Asterisk.  Когда мы проверяли в последний раз, Asterisk, если ничего другого не было задано, использовал по умолчанию CFLAGS=-march=native.

1./configure && make menuselect

Если вы намерены что-то делать с файлами mp3, то в «addons» выберите format_mp3.  По умолчанию эта опция не устанавливается.

Для обратной совместимости, и для того, чтобы иметь возможность отступить в случае, когда ODBC не работает, я рекомендую вам также установить и устаревший cdr_mysql. Эта опция по умолчанию не устанавливается.

FreePBX не использует режим реального времени Asterisk, но если вы планирует воспользоваться A2Billing, то вам также нужно выбрать опцию es_config_mysql.

Выберите Core Sounds и Extra Sounds.  Я предлагаю alaw, так как файлы в этом формате звучат лучше, чем в формате gsm, особенно, если вы используете alaw в качестве кодека по умолчанию.  Я обычно выбираю оба эти формата. Затем не забудьте нажать кнопку save .

Когда вы выбираете format_mp3 в качестве дополнения, то перед тем, как двигаться дальше, вам нужно будет выполнить командный файл, иначе установка не будет выполнена. Он выполняется после выбора опций в меню, и их сохранения, но до того, как будет подана команда make:

1./contrib/scripts/get_mp3_source.sh

Для выполнения указанного выше файла, у вас должна быть установлена система Subversion, и вы должны находиться в корневом каталоге исходного кода Asterisk.

Теперь можно скомпилировать и установить Asterisk. НЕ ВЫПОЛНЯЙТЕ команду make samples, даже если командный файл установки предложит вам сделать это. Это вызовет конфликты с файлами конфигурации FreePBX.

1make && make install

Создайте пользователя Asterisk

1adduser asterisk --disabled-password --no-create-home --home /var/lib/asterisk --shell \
2/sbin/nologin --gecos "Asterisk User"

Измените пользователя Apache

Измените пользователя Apache и имя группы на asterisk.

1sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
2sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
3chown asterisk. /var/lock/apache2
4service apache2 restart

Установка MySQL

MySQL уже должен работать, но для уверенности выполните команду.

1service mysql start

Теперь нужно сконфигурировать базу данных для databases for FreePBX.  Так как мы уже создали корневой пароль для mysql, то нам придется вводить этот пароль после каждой из следующих команд.

1cd /usr/src/freepbx*/
2mysqladmin -p create asterisk
3mysqladmin -p create asteriskcdrdb
4mysql -p asterisk < SQL/newinstall.sql
5mysql -p asteriskcdrdb < SQL/cdr_mysql_table.sql
6mysql -p

mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘amp109′;
Запрос выполнен, выбрано 0 строк (за 0.00 секунд)
mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY ‘amp109′;
Запрос выполнен, выбрано 0 строк (за 0.00 секунд) mysql> flush privileges;
Запрос выполнен, выбрано 0 строк (за 0.00 секунд) mysql> \q

Установка FreePBX

1/usr/sbin/safe_asterisk
2cd /usr/src/freepbx*/

Теперь нужно выполнить командный файл установки FreePBX. Выберите все умолчания, нажимая клавишу ENTER в ответ на каждый запрос.

1./install_amp

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

Настройка FreePBX на запуск при запуске системы

1nano /etc/rc.local

Добавьте перед exit 0 

1sleep 1 /usr/local/sbin/
2amportal start

Для Ubuntu, Asterisk должен создавать каталог  /var/run/asterisk при каждом запуске сервера. Основываясь на проведенных испытаниях, здесь должна быть добавлена задержка в 1 секунду (т.е.. sleep 1), чтобы дать серверу время, на выполнение этого до того, как мы попытаемся запустить Asterisk командой amportal start.

Установка корневого каталога Apache на /var/www/html

Если это уже было изменено из каталога по умолчанию /var/www , то выполните изменения вручную.

1sed -i "s_/var/www_/var/www/html_" /etc/apache2/sites-available/default
2reboot

Теперь вы должны иметь возможность доступа к GUI FreePBX по адресу http://yourserverIP.

После создания имени пользователя и пароля по умолчанию, войдите в GUI FreePBX, и перед тем, как делать что-либо еще, нажмите красную кнопку Apply Config наверху. В результате будут созданы файлы конфигурации Asterisk.  Asterisk не будет работать должным образом до тех пор, пока эти файлы не будут сгенерированы, и сервер не будет перезагружен.

CDR ODBC

Это не обязательно, если вы выбрали в меню Asterisk во время компиляции устаревший модуль cdr_mysql.  Рекомендуется использовать новый способ, подключаясь к CDR DB. Это, в конечном счете, будет требоваться, когда cdr_mysql больше не будет работать, или не будет включаться в состав Asterisk.

1nano /etc/odbcinst.ini
2[MySQL]
3Description = ODBC for MySQL
4Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so
5Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so
6FileUsage = 1

В 64-битовой операционной системе, замените строку 1 на ix86_64-linux-gnu.  Убедитесь, что драйвер ODBC работает

1odbcinst -s -q

должно дать [MySQL]

1nano /etc/odbc.ini
2[MySQL-asteriskcdrdb]
3Description     = MySQL ODBC Driver
4Driver          = MySQL
5Socket          = /var/run/mysqld/mysqld.sock
6Server          = localhost
7Database        = asteriskcdrdb
8Option          = 3

Проверьте следующий файл, используемый Asterisk для соединения с CDR DB

1nano /etc/asterisk/res_odbc_additional.conf
2[odbccdr]
3enabled => yes
4dsn => MySQL-asteriskcdrdb
5username => asteriskuser
6password => amp109

Теперь, используя установленные выше пароль и имя пользователя, проверьте, можете ли вы соединиться с базой данных через odbc

1isql -v MySQL-asteriskcdrdb asteriskuser amp109

Если вы использовали при настройке cdr DB другое имя пользователя и пароль, то используйте сейчас их, и скопируйте файл res_odbc_addional.conf  в res_odbc_custom.conf, заменив имя пользователя и пароль на  нужные. В результате вы должны получить:

1Connected!
2sql-statement
3help [tablename]
4quit
5SQL>

Для выхода введите команду quit.

Наконец, создайте или добавьте следующие строки. Обратите внимание на то, что connection=odbcdr соответствует [odbcdr] в файле  res_odbc.conf.  Параметр calldate больше не используется в in cdr_adaptive_odbc.so. Для обеспечения такого же поведения, как и в случае стандартных функций cdr, мы добавляем строку alias start:

1nano /etc/asterisk/cdr_adaptive_odbc.conf
2[first]
3connection=odbcdr
4table=cdr
5alias start => calldate

Прочие дополнительные установки

Замените “upload_max_filesize” с 2M на 20M, чтобы разрешить использовать более крупные по размеру файлы с музыкой, прослушиваемой при удержании вызова.

1nano +891 /etc/php5/apache2/php.ini

Измените Web-сервер Apache, чтобы можно было получить доступ к GUI через порт, отличающийся от 80:

1nano +134 /etc/apache2/ports.conf

поменяйте «Listen 80″ на  «Listen 8888″, или на любой другой порт по вашему выбору. Теперь, вместо доступа к FreePBX по адресу http://xxx.xxx.xxx.xxx, вы будет получать к нему доступ по адресу http://xxx.xxx.xxx.xxx:8888. Измените установку AllowOverride в Apache по умолчанию с None на All, чтобы Apache выполнял директивы в файлах .htaccess, которые по умолчанию препятствует доступу к чувствительным каталогам FreePBX.

1nano +7 /etc/apache2/sites-available/default
2AllowOverride All
3service apache2 restart

Установите внешние расширения sip, если вы работаете под защитой NAT.  Это вы также можете сделать в модуле установки SIP в Asterisk SIP.

1nano /etc/asterisk/sip_nat.conf
2nat=yes
3externip= or
4;externhost=yourdns.com
5localnet=192.168.1.0/255.255.255.0
6;change the above to whatever your local subnet is externrefresh=10

(Ctrl-X>y>ENTER) Кроме того, при  добавлении внешних расширений SIP в FreePBX, смените умолчание nat=never в файле конфигурации на nat=yes для расширений, которые будут внешними.

Установите коммерческие модули, зависимые от FreePBX

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

1cd /usr/src

Скачайте zendguard

Для 32-битовой системы:

1wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz

Для 64-битовой системы :

1http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz

Разархивируйте

1tar -xzf ZendGuardLoader-php-5.3*

Создайте для него каталог, и скопируйте в него. 

1mkdir /usr/local/lib/Zend
2cp ZendGuardLoader-php-5.3*/php-5.3.x/ZendGuardLoader.so /usr/local/lib/Zend/

Сообщите php, где найти его.

1nano /etc/php5/conf.d/zendguard.ini
2zend_extension = /usr/local/lib/Zend/ZendGuardLoader.so
3zend_loader.enable = 1

Установите зависимые части коммерческого модуля

1apt-get install -y incron prosody

Конфигурация журнальных файлов

Если вам не нужно каждый раз, когда вы перезапускаете amportal из командной строки, видеть кучи сообщений, предупреждений и ошибок, и вы не хотите, чтобы ваши журнальные файлы  Asterisk  разбухали от постоянной записи в них отладочной информации, то сделайте следующее:

1nano /etc/asterisk/logger_logfiles_custom.conf
2console =>
3full => notice,warning,error

Также убедитесь, что отключен вывод отладочной информации в GUI FreePBX Settings>Advanced Settings>Developer.

Установка цикличного журнала

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

1nano /etc/logrotate.d/asterisk

Теперь добавьте следующие строки, чтобы журнальные фалы Asterisk менялись еженедельно вместе с другими журнальными файлами.

1/var/log/asterisk/messages /var/log/asterisk/*log /var/log/asterisk/full {
2missingok
3notifempty
4sharedscripts
5create 0640 asterisk asterisk
6postrotate
7/usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null
8endscript
9}

То же самое сделайте и для freepbx

01nano /etc/logrotate.d/freepbx
02/var/log/asterisk/freepbx_dbug /var/log/asterisk/freepbx_debug {
03missingok
04notifempty
05sharedscripts
06create 0640 asterisk asterisk
07postrotate
08/usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null
09endscript
10}

Сконфигурируйте голосовую почту на шаблон электронной почты

1nano etc/asterisk/vm_email.inc

Поменяйте шаблон таким образом, чтобы голосовая почта выглядела так, как вам нужно. Убедитесь в правильной настройке адреса http://ipaddress_of_Freepbx_server.

Псевдонимы для Root

Внесите изменения в файл /etc/aliases, добавив адреса электронной почты для переадресации сообщений, отправленных для ‘root’, на ваш почтовый ящик.  Внизу вы должны увидеть пример с комментариями. Скопируйте его и замените в нем адрес на свой электронный адрес.

1nano /etc/aliases
2root:   some_email@somedomain.com

После этого выполните

Проверьте, можете ли вы отправлять электронную почту через ‘root’

1echo testing | mail -s "test mail" root@localhost

Если вы получили электронную почту, то вы знаете псевдонимы, и выходная электронная почта работает.

Настройка производительности MySQL

Следующие действия уменьшать затраты памяти без влияния на производительность

1nano /etc/mysql/my.cnf
2[mysqld]
3.
4.
5.
6skip-innodb

(Ctl-x > y > ENTER) После командной подсказки введите:

1service mysql restart
Оставить комментарий