Подготовка системы
Настоящее руководство описывает установку на 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»
1 | sudo nano /etc/default/grub |
Замените GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
на
GRUB_CMDLINE_LINUX_DEFAULT=””
если это еще не сделано.
Обновите Grub:
Создание корневого пароля
1 | $sudo passwd root [sudo] password for defaultuser: [введите пароль для пользователя по умолчанию, который вы задали во время установки] |
2 | Enter new UNIX password: [введите новый корневой пароль] |
3 | Retyp new UNIX password: [повторите новый корневой пароль, которые вы выбрали до этого] |
4 | passwd: password updated successfully $su Password: |
5 | [введите корневой пароль] |
С этого момента все команды будут предполагать, что вы вошли в систему, как root (#). В противном случае вам придется использовать sudo перед каждой командой
Установка требуемых пакетов Asterisk/FreePBX, других полезных пакетов, и зависимостей
1 | apt-get update && apt-get upgrade -y |
1 | apt-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.
1 | ln -s /usr/lib/insserv/insserv /sbin/insserv |
Установите pear DB
Не обращайте внимания на предупреждение.
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 |
Теперь создайте каталог и перезапустите демона запуска tftp.
Установите временную зону
Проверьте временную зону
Если необходимо выполнить изменения, то выполните команду
и следуйте инструкциям.
Загрузка и разархивирование исходных файлов
Скачайте и установите DAHDI (не обязательно)
Это делать не нужно, если вы не устанавливаете карту telco, и не используете пейджинг и конференции meetme. Asterisk 11 по умолчанию использует confbridge для настройки пейджинга и конференций. Если вы не уверены, то установите этот пакет в любом случае.
2 | wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz |
3 | tar zxvf dahdi-linux-complete* |
4 | cd /usr/src/dahdi-linux-complete*/ |
5 | make && make install && make config |
Скачайте FreePBX
Убедитесь, что в вашем распоряжении последняя версия.
2 | wget http://mirror.freepbx.org/freepbx-2.11.0.42.tgz |
Скачайте и установите Asterisk
Не запускайте make samples. Если вы сделаете это, то возникнут проблемы, которые вам впоследствии придется устранять. Выполнив команду make samples на уже работающей и обновленной системе FreePBX, вы выведете ее из строя. Вам придется вручную вернуться к предыдущему пользователю и паролю в /etc/asterisk/manager.conf, и, возможно, проделать и другие действия, чтобы система заработала снова.
2 | wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz |
3 | tar zxvf asterisk-11-current.tar.gz |
4 | cd /usr/src/asterisk-11*/ |
5 | make 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.
Создайте пользователя Asterisk
1 | adduser asterisk --disabled-password --no-create-home --home /var/lib/asterisk --shell \ |
2 | /sbin/nologin --gecos "Asterisk User" |
Измените пользователя Apache
Измените пользователя Apache и имя группы на asterisk.
1 | sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars |
2 | sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars |
3 | chown asterisk. /var/lock/apache2 |
Установка MySQL
MySQL уже должен работать, но для уверенности выполните команду.
Теперь нужно сконфигурировать базу данных для databases for FreePBX. Так как мы уже создали корневой пароль для mysql, то нам придется вводить этот пароль после каждой из следующих команд.
2 | mysqladmin -p create asterisk |
3 | mysqladmin -p create asteriskcdrdb |
4 | mysql -p asterisk < SQL/newinstall.sql |
5 | mysql -p asteriskcdrdb < SQL/cdr_mysql_table.sql |
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
Теперь нужно выполнить командный файл установки FreePBX. Выберите все умолчания, нажимая клавишу ENTER в ответ на каждый запрос.
Если вы получаете предупреждения или сообщения об ошибках, то обычно, они не являются фатальными.
Настройка FreePBX на запуск при запуске системы
Добавьте перед exit 0
1 | sleep 1 /usr/local/sbin/ |
Для Ubuntu, Asterisk должен создавать каталог /var/run/asterisk при каждом запуске сервера. Основываясь на проведенных испытаниях, здесь должна быть добавлена задержка в 1 секунду (т.е.. sleep 1), чтобы дать серверу время, на выполнение этого до того, как мы попытаемся запустить Asterisk командой amportal start.
Установка корневого каталога Apache на /var/www/html
Если это уже было изменено из каталога по умолчанию /var/www , то выполните изменения вручную.
1 | sed -i "s_/var/www_/var/www/html_" /etc/apache2/sites-available/default |
Теперь вы должны иметь возможность доступа к GUI FreePBX по адресу http://yourserverIP.
После создания имени пользователя и пароля по умолчанию, войдите в GUI FreePBX, и перед тем, как делать что-либо еще, нажмите красную кнопку Apply Config наверху. В результате будут созданы файлы конфигурации Asterisk. Asterisk не будет работать должным образом до тех пор, пока эти файлы не будут сгенерированы, и сервер не будет перезагружен.
CDR ODBC
Это не обязательно, если вы выбрали в меню Asterisk во время компиляции устаревший модуль cdr_mysql. Рекомендуется использовать новый способ, подключаясь к CDR DB. Это, в конечном счете, будет требоваться, когда cdr_mysql больше не будет работать, или не будет включаться в состав Asterisk.
3 | Description = ODBC for MySQL |
4 | Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so |
5 | Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so |
В 64-битовой операционной системе, замените строку 1 на ix86_64-linux-gnu. Убедитесь, что драйвер ODBC работает
должно дать [MySQL]
3 | Description = MySQL ODBC Driver |
5 | Socket = /var/run/mysqld/mysqld.sock |
7 | Database = asteriskcdrdb |
Проверьте следующий файл, используемый Asterisk для соединения с CDR DB
1 | nano /etc/asterisk/res_odbc_additional.conf |
4 | dsn => MySQL-asteriskcdrdb |
5 | username => asteriskuser |
Теперь, используя установленные выше пароль и имя пользователя, проверьте, можете ли вы соединиться с базой данных через odbc
1 | isql -v MySQL-asteriskcdrdb asteriskuser amp109 |
Если вы использовали при настройке cdr DB другое имя пользователя и пароль, то используйте сейчас их, и скопируйте файл res_odbc_addional.conf в res_odbc_custom.conf, заменив имя пользователя и пароль на нужные. В результате вы должны получить:
Для выхода введите команду quit.
Наконец, создайте или добавьте следующие строки. Обратите внимание на то, что connection=odbcdr соответствует [odbcdr] в файле res_odbc.conf. Параметр calldate больше не используется в in cdr_adaptive_odbc.so. Для обеспечения такого же поведения, как и в случае стандартных функций cdr, мы добавляем строку alias start:
1 | nano /etc/asterisk/cdr_adaptive_odbc.conf |
Прочие дополнительные установки
Замените “upload_max_filesize” с 2M на 20M, чтобы разрешить использовать более крупные по размеру файлы с музыкой, прослушиваемой при удержании вызова.
1 | nano +891 /etc/php5/apache2/php.ini |
Измените Web-сервер Apache, чтобы можно было получить доступ к GUI через порт, отличающийся от 80:
1 | nano +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.
1 | nano +7 /etc/apache2/sites-available/default |
Установите внешние расширения sip, если вы работаете под защитой NAT. Это вы также можете сделать в модуле установки SIP в Asterisk SIP.
1 | nano /etc/asterisk/sip_nat.conf |
5 | localnet=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 и некоторые дополнительные зависимые модули.
Скачайте zendguard
Для 32-битовой системы:
1 | wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz |
Для 64-битовой системы :
1 | http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz |
Разархивируйте
1 | tar -xzf ZendGuardLoader-php-5.3* |
Создайте для него каталог, и скопируйте в него.
1 | mkdir /usr/local/lib/Zend |
2 | cp ZendGuardLoader-php-5.3*/php-5.3.x/ZendGuardLoader.so /usr/local/lib/Zend/ |
Сообщите php, где найти его.
1 | nano /etc/php5/conf.d/zendguard.ini |
2 | zend_extension = /usr/local/lib/Zend/ZendGuardLoader.so |
Установите зависимые части коммерческого модуля
1 | apt-get install -y incron prosody |
Конфигурация журнальных файлов
Если вам не нужно каждый раз, когда вы перезапускаете amportal из командной строки, видеть кучи сообщений, предупреждений и ошибок, и вы не хотите, чтобы ваши журнальные файлы Asterisk разбухали от постоянной записи в них отладочной информации, то сделайте следующее:
1 | nano /etc/asterisk/logger_logfiles_custom.conf |
3 | full => notice,warning,error |
Также убедитесь, что отключен вывод отладочной информации в GUI FreePBX Settings>Advanced Settings>Developer.
Установка цикличного журнала
Настройте конфигурацию, чтобы запись в журнальные файлы производилась циклично, иначе они через короткое время станут слишком большими. Создайте следующий файл.
1 | nano /etc/logrotate.d/asterisk |
Теперь добавьте следующие строки, чтобы журнальные фалы Asterisk менялись еженедельно вместе с другими журнальными файлами.
1 | /var/log/asterisk/messages /var/log/asterisk/*log /var/log/asterisk/full { |
5 | create 0640 asterisk asterisk |
7 | /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null |
То же самое сделайте и для freepbx
01 | nano /etc/logrotate.d/freepbx |
02 | /var/log/asterisk/freepbx_dbug /var/log/asterisk/freepbx_debug { |
06 | create 0640 asterisk asterisk |
08 | /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null |
Сконфигурируйте голосовую почту на шаблон электронной почты
1 | nano etc/asterisk/vm_email.inc |
Поменяйте шаблон таким образом, чтобы голосовая почта выглядела так, как вам нужно. Убедитесь в правильной настройке адреса http://ipaddress_of_Freepbx_server.
Псевдонимы для Root
Внесите изменения в файл /etc/aliases, добавив адреса электронной почты для переадресации сообщений, отправленных для ‘root’, на ваш почтовый ящик. Внизу вы должны увидеть пример с комментариями. Скопируйте его и замените в нем адрес на свой электронный адрес.
2 | root: some_email@somedomain.com |
После этого выполните
Проверьте, можете ли вы отправлять электронную почту через ‘root’
1 | echo testing | mail -s "test mail" root@localhost |
Если вы получили электронную почту, то вы знаете псевдонимы, и выходная электронная почта работает.
Настройка производительности MySQL
Следующие действия уменьшать затраты памяти без влияния на производительность
(Ctl-x > y > ENTER) После командной подсказки введите: