Установка asterisk 13 на debian 8.11 jessie + freepbx 14

Установка FreePBX

Вносим необходимые правки в файлы конфигураций php, apache и применяем сделанные изменения в них:

1
2
3
4
5
6
7

sed -i ‘s/\(^upload_max_filesize = \).*/\1 256M/’ /etc/php/5.6/apache2/php.ini
sed -i ‘s/\(^memory_limit = \).*/\1 256M/’ /etc/php/5.6/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
a2enmod rewrite
service apache2 restart

Создаем файл конфигурации /etc/odbcinst.ini:

1
2
3
4
5
6

cat <<EOF > /etc/odbcinst.ini

Description = ODBC for MySQL (MariaDB)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
FileUsage = 1
EOF

Создаем файл конфигурации /etc/odbc.ini

1
2
3
4
5
6
7
8
9
10
11

cat <<EOF > /etc/odbc.ini

Description = MySQL connection to ‘asteriskcdrdb’ database
Driver = MySQL
Server = localhost
Database = asteriskcdrdb
Port = 3306
Charset = utf8
Socket = /var/run/mysqld/mysqld.sock
Option = 3
EOF

Создадим базу данных для работы FreePBX:

1 mysql -u root -p

1
2
3
4
5
6

CREATE DATABASE asterisk default charset utf8;
CREATE DATABASE asteriskcdrdb default charset utf8;
GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘asterpass’;
GRANT ALL PRIVILEGES ON asteriskcdrdb.* to asteriskuser@localhost IDENTIFIED BY ‘asterpass’;
FLUSH PRIVILEGES;
EXIT

Переходим в каталог с дистрибутивом FreePBX, запускаем Asterisk и выполняем установку:

1
2
3

cd freepbx/
./start_asterisk start
./install -n —dbuser=asteriskuser —dbpass=asterpass

Установка завершена, через Web браузер заходим в консоль FreePBX:

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Install

DAHDI

Only required if using a physical server and installing telecom hardware.  At this time, versions newer than ( and ) do not install correctly.

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.2+2.10.2.tar.gz
tar zxvf dahdi-linux-complete-2.10*
cd /usr/src/dahdi-linux-complete-2.10*/
make all && make install && make config
systemctl restart dahdi

If  fails try reboot and run

Asterisk

If upgrading an existing install with older Asterisk, it is best to run   first.

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
tar zxvf asterisk-16-current.tar.gz
cd /usr/src/asterisk-16*/
make distclean

Install additional dependencies

cd /usr/src/asterisk-16*/
./contrib/scripts/install_prereq install

Configure

cd /usr/src/asterisk-16*/
./configure --with-pjproject-bundled --with-jansson-bundled

To verify type .

Set compile options

cd /usr/src/asterisk-16*/
make menuselect

# Go to Applications and make sure  is checked.
# To change compile options after install simply run make menuselect and make && make install again.

Create Asterisk User, compile, install and set preliminary ownership.

adduser asterisk --disabled-password --gecos "Asterisk User"
make && make install && chown -R asterisk. /var/lib/asterisk

Freepbx

cd /usr/src
git clone -b release/15.0 --single-branch https://github.com/freepbx/framework.git freepbx
touch /etc/asterisk/modules.conf
cd /usr/src/freepbx
./start_asterisk start

./install -n
# Minimal module install
fwconsole ma downloadinstall framework core voicemail sipsettings infoservices \
featurecodeadmin logfiles callrecording cdr dashboard music soundlang recordings conferences
fwconsole chown
fwconsole reload

Optionally, install all modules (not recommended).  You may need to run the following commands twice.

fwconsole ma installall
fwconsole chown
fwconsole reload

Set Freepbx to start on boot

cat >> /etc/systemd/system/freepbx.service << EOF

Description=Freepbx
After=mariadb.service
 

Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start
ExecStop=/usr/sbin/fwconsole stop
 

WantedBy=multi-user.target

EOF
systemctl enable freepbx

Configure Apache

Add  to web directory so that  is active.

cat >> /etc/apache2/conf-available/allowoverride.conf << EOF 
<Directory /var/www/html>
    AllowOverride All
    </Directory>
EOF
a2enconf allowoverride

Change default apache user/group, disable index.html, enable rewrite module

sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
chown asterisk. /run/lock/apache2
mv /var/www/html/index.html /var/www/html/index.html.disable
a2enmod rewrite
systemctl restart apache2

Install

DAHDI

Only required if using a physical server and installing telecom hardware.  At this time, versions newer than ( and ) do not install correctly.

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.2+2.10.2.tar.gz
tar zxvf dahdi-linux-complete-2.10*
cd /usr/src/dahdi-linux-complete-2.10*/
make all && make install && make config
systemctl restart dahdi

If  fails try reboot and run

Asterisk

To install Asterisk v14, set  .  To switch versions, it is best to run   first.

# Select Asterisk VERSION=14 or
VERSION=13
cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${VERSION}-current.tar.gz
tar zxvf asterisk-${VERSION}-current.tar.gz
cd /usr/src/asterisk-${VERSION}*/
make distclean

Install additional dependencies

cd /usr/src/asterisk-${VERSION}*/
./contrib/scripts/install_prereq install

Configure

cd /usr/src/asterisk-${VERSION}*/
./configure --with-pjproject-bundled

To verify type .

Set compile options

cd /usr/src/asterisk-${VERSION}*/
make menuselect

# Select additional compile options or leave at default and save.
# To add more compile options afterwards just run make menuselect again and compile/install again.

Create Asterisk User, compile, install and set preliminary ownership.

adduser asterisk --disabled-password --gecos "Asterisk User"
make && make install && chown -R asterisk. /var/lib/asterisk

Freepbx

cd /usr/src
git clone -b release/14.0 --single-branch https://github.com/freepbx/framework.git freepbx
cd /usr/src/freepbx
./start_asterisk start

./install -n

If you get a error modify the following line:

nano +266  installlib/installcommand.class.php
$lastline = exec("runuser" . $answers . ' -s /bin/bash -c "cd ~/ && asterisk -rx \'core show version\' | grep ^Asterisk 2>&1"', $tmpout, $ret);
# Minimal module install
fwconsole ma downloadinstall framework core voicemail sipsettings infoservices \
featurecodeadmin logfiles callrecording cdr dashboard music conferences
fwconsole chown
fwconsole reload

Optionally, install all modules (not recommended).  You will most likely need to run the following commands twice.

fwconsole ma installall
fwconsole chown
fwconsole reload

Set Freepbx to start on boot

cat >> /etc/systemd/system/freepbx.service << EOF

Description=Freepbx
After=mariadb.service
 

Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start
ExecStop=/usr/sbin/fwconsole stop
 

WantedBy=multi-user.target

EOF
systemctl enable freepbx

Configure Apache

Add  to web directory so that  is active.

cat >> /etc/apache2/conf-available/allowoverride.conf << EOF 
<Directory /var/www/html>
    AllowOverride All
    </Directory>
EOF
a2enconf allowoverride

Change default apache user/group, disable index.html, enable rewrite module

sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
chown asterisk. /run/lock/apache2
mv /var/www/html/index.html /var/www/html/index.html.disable
a2enmod rewrite
systemctl restart apache2

Prerequisites

Initial upgrade and install

apt update && apt -y upgrade && apt install lsb-release

PHP

# Install dependencies
apt -y install curl apt-transport-https ca-certificates
# Add php repository on Debian v9.  Optional for Debian v10 as v7.3 is included.
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > \
/etc/apt/sources.list.d/php.list
# Install PHP v7.3
apt update && apt -y install php7.3 php7.3-curl php7.3-cli php7.3-mysql php7.3-mbstring php7.3-gd php7.3-xml

Other

apt -y install locales sngrep build-essential aptitude openssh-server apache2 mariadb-server mariadb-client bison doxygen flex php-pear curl sox libncurses5-dev libssl-dev libmariadbclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool-bin autoconf git subversion uuid uuid-dev libiksemel-dev tftpd postfix mailutils nano ntp libspandsp-dev libcurl4-openssl-dev libical-dev libneon27-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libsrtp*-dev unixodbc unixodbc-dev python-dev xinetd e2fsprogs dbus sudo xmlstarlet lame ffmpeg dirmngr linux-headers*

Node.js

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
apt -y install nodejs

ODBC

Install connector

cd /usr/src
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-2.0.19/\
mariadb-connector-odbc-2.0.19-ga-debian-x86_64.tar.gz
tar -zxvf mariadb-connector-odbc-2.0.19*.tar.gz
cp lib/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/

Create /etc/odbcinst.ini

cat >> /etc/odbcinst.ini << EOF

Description = ODBC for MariaDB
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
  
EOF

Create /etc/odbc.ini

cat >> /etc/odbc.ini << EOF

Description = MariaDB connection to 'asteriskcdrdb' database
driver = MySQL
server = localhost
database = asteriskcdrdb
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
option = 3
  
EOF

MongoDB

Only required if you plan to use XMPP

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

echo "deb http://repo.mongodb.org/apt/debian $(lsb_release -sc)/mongodb-org/4.2 main" \
| sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

apt update && apt install -y mongodb-org

systemctl enable mongod

Libjansson

Asterisk v16 requires libjansson >= 2.11.   

# Mandatory for Debian v9.  Optional for Debian v10 which includes a new enough version.

cd /usr/src
wget http://www.digip.org/jansson/releases/jansson-2.12.tar.gz
tar -zxvf jansson-2.12.tar.gz
cd jansson-2.12/
./configure && make && make install

Popular content

Today’s:

  • Appendix F: aastra.cfg and <MAC>.cfg files
  • OpenSIPS v2 with GUI on Debian v8 MariaDB Apache install guide
  • Sangoma Wanpipe Installation
  • Appendix D: Special note about Cisco PIX firewall
  • Asterisk Freepbx on Debian (Debian v10, Asterisk v16, Freepbx v15)

All time:

  • FreePBX Production Install Guide (RHEL v5 or v6, Asterisk v1.8+, FreePBX v2.9+)
  • A2Billing Install guide
  • A2Billing v2 Install Guide
  • Asterisk/FreePBX on an OpenVZ/Virtuozzo Virtual Private Server (VPS)
  • Freepbx Production Install Guide (RHEL v6, Asterisk v11+, Freepbx v2.11+)

Last viewed:

  • Asterisk Freepbx on Debian (Debian v10, Asterisk v16, Freepbx v15)
  • Appendix D: Special note about Cisco PIX firewall
  • A2Billing v2 Install Guide
  • Install 3DM2 software for 3WARE SATA RAID card
  • Kazoo v4 Single Server Install Guide

Open Source Private Branch Exchange (PBX)

Asterisk is an Open Source PBX and telephony toolkit. It is, in a
sense, middleware between Internet and telephony channels on the bottom,
and Internet and telephony applications at the top.

Asterisk can be used with Voice over IP (SIP, H.323, IAX and more) standards,
or the Public Switched Telephone Network (PSTN) through supported hardware.

Supported hardware:

 * All Wildcard (tm) ISDN PRI cards from Digium (http://www.digium.com)
 * HFC-S/HFC-4S-based ISDN BRI cards (Junghanns.NET, beroNet, Digium etc.)
 * All TDM (FXO/FXS) cards from Digium
 * Various clones of Digium cards such as those by OpenVox
 * Xorcom Astribank USB telephony adapter (http://www.xorcom.com)
 * Voicetronix OpenPCI, OpenLine and OpenSwitch cards
 * CAPI-compatible ISDN cards (using the add-on package chan-capi)
 * Full Duplex Sound Card (ALSA or OSS) supported by Linux
 * Tormenta T1/E1 card (http://www.zapatatelephony.org)
 * QuickNet Internet PhoneJack and LineJack (http://www.quicknet.net)

Установка

Теперь установка самого Asterisk на Ubuntu.

  1. Скачайте его с сайта разработчика. Введите «wget ». Файл будет помещён в текущий каталог. Поэтому заранее откройте нужную папку при помощи команды «cd».
  2. Если программа заархивирована, распакуйте её — «tar zxvf ».
  3. Зайдите в директорию с Астериксом.
  4. В последних версиях утилиты используются службы WebRTC. Их можно загрузить прямо из Asterisk-исходников — введите «contrib/scripts/install_prereq install». Е нужны скрипты «Pjproject» и «Libsrtp». Чтобы их запустить, напишите ту же команду, но с параметром «-unpackaged».
  5. Снова перейдите в каталог с программой.
  6. Наберите «. /configure». Должна появиться заставка.
  7. Можете запустить графический интерфейс, чтобы посмотреть, как выглядит меню программы «make menuselect». Чтобы выйти из него, нажмите «Exit».
  8. Теперь последовательно введите две команды: вначале «make», потом «make install».
  9. Астериск установлен и работает.

Эту программу можно скачать из репозитория — «apt-get install asterisk».

Самостоятельная сборка Pjproject и Libsrtp

Если «Pjproject» и «Libsrtp» не запустятся из исходников или возникнет ошибка, придётся самостоятельно их «собирать».

  1. Введите команду «sudo su».
  2. Перейдите директорию, в которой хранятся скрипты — «cd /usr/src/».
  3. Скачайте в неё нужный модуль — «git clone github.com/cisco/libsrtp.git».
  4. Просто загрузить скрипт недостаточно. Надо его подготовить. Откройте его папку — «cd libsrtp».
  5. Теперь введите параметры для конфигурации и настройки — «./configure CFLAGS=-fPIC».
  6. Затем строчку «make libsrtp.a».
  7. И поочерёдно команды для установки: вначале «make uninstall», потом «make install».
  8. Перейдите в каталоге на уровень вверх «cd …».
  9. Превратите всё это в готовый скрипт — «echo «/usr/local/lib» > /etc/ld.so.conf.d/usr_local.conf».
  10. И завершите командой «ldconfig».
  11. Можете выходить из Root-режима.

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

Я рекомендую ознакомиться с моим материалом на тему первоначальной настройки centos 7. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.

Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:

# mcedit /etc/sysconfig/selinux

и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:

# setenforce 0

Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.

Дальше обновляем систему и ставим пакеты Development Tools:

# yum update
# yum groupinstall core base "Development Tools"

Запуск и остановка Asterisk

/usr/sbin/asterisk: Файл запускающий Asterisk

Если Вы установили Asterisk, можно запустить его командой:

 /usr/src/asterisk -vvvgc

Остановить Asterisk из CLI можно командой ‘stop now’.

Командой без аргументов, Asterisk запускается как демон.

 /usr/sbin/asterisk 

Подключится к командному интерфейсу (CLI) можно используя аргумент ‘r’.

 /usr/sbin/asterisk -r

Запуск Asterisk из под не — root пользователя.
По умолчанию Asterisk запускается из под root, что может быть небезопасно.
Для изменения пользователя раскомментируйте строки в файле /etc/init.d/asterisk.

AST_USER="asterisk"
AST_GROUP="asterisk"

Создайте группу и пользователя asterisk.

/usr/sbin/groupadd asterisk 
/usr/sbin/useradd -d /var/lib/asterisk -g asterisk asterisk 

Измените права на использование следующих файлов:

chown --recursive asterisk:asterisk /var/lib/asterisk
chown --recursive asterisk:asterisk /var/log/asterisk
chown --recursive asterisk:asterisk /var/run/asterisk
chown --recursive asterisk:asterisk /var/spool/asterisk
chown --recursive asterisk:asterisk /usr/lib/asterisk
## Если Вы используете Zaptel
chown --recursive asterisk:asterisk /dev/zap
## Если Вы используете DAHDI
chown --recursive asterisk:asterisk /dev/dahdi
#----------------------------------------------------
chmod --recursive u=rwX,g=rX,o= /var/lib/asterisk
chmod --recursive u=rwX,g=rX,o= /var/log/asterisk
chmod --recursive u=rwX,g=rX,o= /var/run/asterisk
chmod --recursive u=rwX,g=rX,o= /var/spool/asterisk
chmod --recursive u=rwX,g=rX,o= /usr/lib/asterisk
## Если Вы используете Zaptel
chmod --recursive u=rwX,g=rX,o= /dev/zap
##  Если Вы используете DAHDI
chmod --recursive u=rwX,g=rX,o= /dev/dahdi
#----------------------------------------------------
chown --recursive root:asterisk /etc/asterisk
chmod --recursive u=rwX,g=rX,o= /etc/asterisk 
/etc/init.d/asterisk restart 

Asterisk

Требуемые пакеты

aptitude install libxml2-dev unixodbc-dev libmyodbc subversion libmysqlclient15-dev libsqlite0-dev libsnmp-dev libsqlite3 libsqlite3-dev
cd /usr/src/
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-10-current.tar.gz
tar zxvf asterisk-10-current.tar.gz
cd /usr/src/asterisk-<version>/
./contrib/scripts/get_mp3_source.sh
./configure
make menuconfig

Выберете дополнения:

  • Add-ons > app_mysql, app_saycountpl, cdr_mysql, format_mp3, res_config_mysql

  • Core Sound Packages > CORE-SOUNDS-RU-GSM

  • Extras Sound Packages > EXTRAS-SOUNDS-EN-GSM

make
make install
make config

Запускать Asterisk от одноименного пользователя

nano +107 /usr/sbin/safe_asterisk

ASTARGS="-U asterisk"

раскоментируйте

nano /etc/default/asterisk

AST_USER="asterisk"
AST_GROUP="asterisk"

insserv portmap

update-rc.d -f asterisk defaults

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

Скачиваем последнюю версию Freepbx с сайта разработчика.

# cd ~ && wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz

Распаковываем исходники.

# tar xvfz freepbx-*.tgz

Переходим в каталог freepbx и запускаем скрипт проверки запуска asterisk.

# cd freepbx && ./start_asterisk start

Если не получили ошибок, то запускаем установку непосредственно FreePBX.

# ./install -n

Если получили ошибку php:

PHP Fatal error: Uncaught Error: Call to a member function connected() on null in /root/freepbx/amp_conf/htdocs/admin/libraries/BMO/Framework.class.php:180

Запустите установку еще раз

# ./install -n

Она должна пройти без ошибок, но freepbx не будет работать корректно, так как не сможет подключиться к asterisk. После повторной установки надо открыть конфиг /etc/asterisk/manager.conf и в конце строки

#include manager_additional.conf
#include manager_custom.conf

заменить на

;include manager_additional.conf
;include manager_custom.conf

И убедиться, что указан параметр secret с паролем amp111. Если это не так, отредактируйте строку.

secret = amp111

Если этого параметра вообще нет, то добавить в секцию . После этого надо еще раз запустить установку freepbx, в третий раз. После этого ошибок быть не должно и freepbx будет корректно работать.

Если все прошло без ошибок, то можно проверять работу Freepbx. Но перед этим отключим Firewall, если он у вас работает.

# systemctl stop firewalld && systemctl disable firewalld

Я не хочу в этой статье касаться его настройки. Подробно вопрос настройки firewall я рассмотрел отдельно. Там можно узнать все нюансы. Здесь же я прото скажу, что для начала нам нужно открыть 80-й порт, чтобы мы смогли работать с веб интерфейсом:

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Для полноценной работы астериск, нужно открыть следующие порты:

iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5061 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5060 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5061 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

Теперь можно запустить httpd.

# systemctl start httpd

Добавляем его в автозагрузку:

# systemctl enable httpd

На этом установка закончена Freepbx. Можно зайти браузером на страницу с ip адресом сервера. У меня это http://85.143.175.176 Открывается начальная страница freepbx, где нам предлагается создать нового пользователя:

Создаем пользователя и заходим в web интерфейс управления астериском:

Вот и все, дальше можно заниматься настройкой. Раньше следующим разделом шла информация по автозагрузке freepbx, но в данный момент эта информация неактуально. Отдельно автоазгрузку для freepbx настраивать не надо. Она по дефолту автоматически запускается при старте системы.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: