Введение
Asterisk — бесплатное решение для организации voip телефонии. Он обладает всеми возможностями обычных АТС, но предоставляет более богатый функционал по управлению звонками. За относительную простоту настройки, по сравнению с цифровыми АТС, бесплатность и широкие возможности он и снискал такую популярность.
Freepbx — бесплатный веб интерфейс для управления астериском. Он существенно упрощает работу с конфигурациями, позволяет выполнять некоторые функции людям, вообще далеким от астериска. Например, с его помощью практически любого можно научить управлять учетными записями пользователей.
Лично я больше люблю настраивать asterisk вручную, нежели с помощью готовой панели. Да, конфигов астериск очень много, они объемные, работать с ними не удобно. Тем не менее, чистый астериск предоставляет практически неограниченную возможность по конфигурированию. С готовой панелью вы будете ограничены ее возможностями. Но если они вас полностью удовлетворяют, то лучше использовать ее.
Дальнейшая установка FreePBX будет проходить по следующей схеме:
- Подготовка системы.
- Установка MariaDB.
- Настройка Web сервера.
- Установка NodeJS.
- Установка Asterisk.
- Установка и настройка Freepbx.
Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.
Установка DAHDI, libPRI и Asterisk
-
# cd dahdi-linux-complete-2.10.2+2.10.2 # make all # make install # make config
-
# cd ../libpri-1.4.15 # make # make install
-
# cd ../asterisk-11.19.0 # ./configure --prefix=/usr --exec-prefix=/usr --with-crypto --with-dahdi --with-iconv -with-libcurl --with-gmime --with-iksemel --with-mysqlclient --disable-xmldoc --with-pri --with-spandsp --with-ldap --with-libcurl --with-popt --with-resample --with-speex # make menuselect # ./contrib/scripts/get_mp3_source.sh # make # make install # make samples
-
# ln -s /usr/lib/libasteriskssl.so.1 /usr/lib64/libasteriskssl.so.1 # ln -s /usr/lib/libpri.so.1.4 /usr/lib64/libpri.so.1.4 # cat contrib/init.d/rc.redhat.asterisk | sed 's/__ASTERISK_SBIN_DIR__/\/usr\/sbin/' > /etc/init.d/asterisk # chmod 755 /etc/rc.d/init.d/asterisk # systemctl enable asterisk.service
-
# groupadd asterisk # useradd -c "asterisk PBX" -d /var/lib/asterisk -s /sbin/nologin -g asterisk asterisk
-
# systemctl enable dahdi # systemctl start dahdi # systemctl start asterisk
Install Centos 6.3
Initial System Setup
Disable selinux
In /etc/sysconfig/selinux , change the following lines:
--- begin lines --- SELINUX=disabled SELINUXTYPE=targeted --- end lines ---
reboot, and verify the selinux status by running ‘sestatus’. It should say:
SELinux status: disabled
Install Required Dependencies
yum install gcc gcc-c++ lynx bison mysql-devel mysql-server php php-mysql php-pear php-mbstring tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git subversion kernel-devel php-process crontabs cronie cronie-anacron
IPTables
You must disable the default iptables. You can re-enable it later, once you have made the appropriate changes. Information on iptables can be found with a quick Google search. If iptables is left running, it will (at very least) block you from accessing the web interface.
See the current status:
chkconfig iptables --list
Disable iptables:
chkconfig --level 0123456 iptables off
Stop the service (this skips rebooting again):
service iptables stop
Auto Start MySQL
You must have mysql running for freepbx to operate normally. You need to set it to start at boot time. with the following command:
chkconfig --level 345 mysqld on
Then start mysqld if you don’t plan on rebooting during the installation phase:
service mysqld start
Auto Start Apache
You will want Apache running, so you can access the FreePBX admin interface, You need to set it to start at boot time. with the following command:
chkconfig --level 345 httpd on
Then start apache if you don’t plan on rebooting during the installation phase:
service httpd start
reboot
Install Dependencies for Google Voice
Install iksemel
cd /usr/src wget https://iksemel.googlecode.com/files/iksemel-1.4.tar.gz tar xf iksemel-*.tar.gz cd iksemel-* ./configure make make install
Install and Configure Asteriskfreepbx-2.11.0.43.tgz
Download Asterisk source files.
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-1.4-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz
Compile and install DAHDI.
cd /usr/src tar xvfz dahdi-linux-complete-current.tar.gz cd dahdi-linux-complete-* make all make install make config
Compile and install Asterisk
cd /usr/src tar xvfz asterisk-11-current.tar.gz cd asterisk-* ./configure contrib/scripts/get_mp3_source.sh make menuselect make make install make config make progdocs
Install Asterisk-Extra-Sounds
cd /var/lib/asterisk/sounds wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz tar xfz asterisk-extra-sounds-en-gsm-current.tar.gz rm -f asterisk-extra-sounds-en-gsm-current.tar.gz
Install and Configure FreePBX
Now create the Asterisk user and set ownership permissions.
adduser asterisk -M -c "Asterisk User" chown asterisk. /var/run/asterisk chown -R asterisk. /etc/asterisk chown -R asterisk. /var/{lib,log,spool}/asterisk chown -R asterisk. /usr/lib/asterisk mkdir /var/www/html chown -R asterisk. /var/www/
A few small modifications to Apache.
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_orig sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf service httpd restart
Configure Asterisk database in MYSQL.
cd /usr/src/freepbx export ASTERISK_DB_PW=amp109 mysqladmin -u root create asterisk mysqladmin -u root create asteriskcdrdb mysql -u root asterisk < SQL/newinstall.sql mysql -u root asteriskcdrdb < SQL/cdr_mysql_table.sql
Set permissions on MYSQL database.
mysql -u root -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';" mysql -u root -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';" mysql -u root -e "flush privileges;"
ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3 amportal start
Установка FreePBX
Возвращаемся в домашнюю папку пользователя:
cd ~
Скачиваем портал для управления астериском:
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz
* мы скачаем freepbx версии 15. Для CentOS 8 это оптимальная версия. Если необходимо установить freepbx 14, то устанавливаемая по умолчанию версия php .
Распаковываем скачанный архив:
tar zxvf freepbx-*.tgz
Переходим в распакованный каталог:
cd freepbx
Запускаем скрипт проверки работы Asterisk:
./start_asterisk start
Если видим:
STARTING ASTERISK
Asterisk is already running
… запускаем установку:
./install -n —dbuser root —dbpass password —webroot=/usr/share/nginx/html
* в данном примере мы указали учетные данные для подключения к СУБД (логин root и пароль, который мы создали после установки MariaDB); также мы указываем путь /usr/share/nginx/html, который является домашней директорией веб-сервера NGINX.
Начнется установка — в конце мы должны увидеть:
You have successfully installed FreePBX
Открываем браузер и заходим по адресу http:<IP-адрес сервера> — должна открываться страница конфигурирования FreePBX. Задаем настройки:
После входим в панель администратора под созданной учетной записью. Система нас запросит региональные настройки:
Теперь открываем конфигурационный файл:
vi /etc/asterisk/manager.conf
Находим строки:
#include manager_additional.conf
#include manager_custom.conf
… и меняем их на:
;include manager_additional.conf
;include manager_custom.conf
Перезапускаем сервис Asterisk:
systemctl restart asterisk
Asterisk + FreePBX настроен.
Operation
-
To start the Sangoma driver, which also starts your Sangoma card(s) run the following command on your Linux command line:-> wanrouter start
Immediately after running this command, you will see on-screen output of all the ports (i.e. wanpipe1, wanpipe2..etc) starting on your card.You will also see your ports plugging into the DAHDI signaling layer. If you see errors occurring, investigate the /var/log/messages file.
-
Configuring the DAHDI ModuleAfter your Sangoma card has started and is plugged into DAHDI, you will need to configure DAHDI by typing the following command on your Linux command line:-> dahdi_cfg
-
Start Asterisk by typing the following command in your Linux command line-> asterisk
- Log into your Asterisk CLI and run some basic commands to verify your system is functioning properly.Type the following in your Linux command Line:-> asterisk -rvvvvvvvvvv (each ‘v’ adds verbosity to what you see when logged in to the CLI)
-
Type the following CLI command to verify all your channels (dahdi channels) are loaded into asterisk:-> dahdi show channels
-
- For PRI/BRI cards only, run the following command to check the status of your pri/bri spans:-> pri show spans
Возможные проблемы
Рассмотрим решение некоторых проблем, с которыми мы можем столкнуться в процессе настройки.
Ошибка отображается при просмотре статуса сервиса, сразу после его запуска:
systemctl status asterisk
…
… systemd: asterisk.service: Can’t open PID file /var/run/asterisk/asterisk.pid (yet?) after start: No such file or directory
…
Данное сообщение не является ошибкой. Скорее, это сообщение от системы при запуске.
Убедиться в наличие данного файла можно командой:
ls -l /var/run/asterisk/asterisk.pid
Мы должны увидеть:
-rw-r—r—. 1 asterisk asterisk 6 Nov 5 09:45 /var/run/asterisk/asterisk.pid
* где видно, что файл существует. Его владелец — пользователь asterisk.
2. Ошибка 500 при попытке установить FreePBX 14 на CentOS 8
Ошибка появляется при попытке открыть страницу FreePBX в браузере.
Причина: официально, FreePBX 14 поддерживает php 5, которая по умолчанию уже не устанавливается в CentOS 8. В php версии 7 один из методов класса gui_hidden считается устаревшим и система возвращает ошибку 500.
Решение: есть 2 варианта решения проблемы.
1) установить на CentOS 8 php версии 5.6. Для этого подключаем репозиторий remi:
dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
После чего можно устанавливать необходимые компоненты:
dnf install php56 php56-php-fpm php56-php-bcmath php56-php-gd php56-php-json php56-php-mbstring php56-php-mysqlnd php56-php-pear php56-php-snmp php56-php-zip
Открываем настройки для php:
vi /etc/opt/remi/php56/php.ini
Правим значения для следующих опций:
upload_max_filesize = 128M
…
post_max_size = 128M
…
date.timezone = «Europe/Moscow»
…
memory_limit = 512M
Открываем настройки php-fpm:
vi /etc/opt/remi/php56/php-fpm.d/www.conf
Задаем значения для следующих опций:
user = asterisk
…
group = asterisk
…
listen.acl_users = asterisk,apache
Запускаем php-fpm:
systemctl enable php56-php-fpm —now
Откроем настройки nginx:
vi /etc/nginx/nginx.conf
Для опции fastcgi_pass задаем значение:
…
location ~ \.php$ {
…
fastcgi_pass unix:/var/opt/remi/php56/run/php-fpm/www.sock;
…
А также:
vi /etc/nginx/conf.d/php-fpm.conf
upstream php-fpm {
server unix:/var/opt/remi/php56/run/php-fpm/www.sock;
}
Перезапускаем nginx:
systemctl restart nginx
Также потребовалось установить следующий модуль для FreePBX:
fwconsole ma downloadinstall soundlang
2) отключить отображение ошибки. Для этого открываем файл:
vi /etc/freepbx.conf
И добавляем строку:
…
$bootstrap_settings = false;
…
Однако, у меня данный способ не дал положительного результата. Страница FreePBX открылась, но с ошибкой «Can Not Connect to Asterisk», а сервис fwconsole при запуске выдавал ошибку. В итоге, самый правильный вариант — использовать официально поддерживаемую версию PHP.
Подготовка
Обновите систему:
sudo dnf -y update
Установите зависимости:
sudo dnf -y groupinstall "Development Tools" sudo dnf install -y @php tftp-server ncurses-devel sendmail sendmail-cf newt-devel libxml2-devel libtiff-devel gtk2-devel subversion kernel-devel git crontabs cronie cronie-anacron wget vim php-xml sqlite-devel net-tools gnutls-devel unixODBC
Установка и настройка сервера базы данных MariaDB
Установите MariaDB:
sudo dnf module install mariadb
Проверьте версию MariaDB:
rpm -qi mariadb-server
sudo systemctl enable --now mariadb
Настройте параметры безопасности командой:
mysql_secure_installation
Убедитесь, что вы:
- Установили пароль пользователя базы данных root
- Удалили анонимных пользователей
- Запретили удаленный доступ пользователю root
- Удалили тестовую базу данных и доступ к ней
Затем проверьте доступ для пользователя root:
mysql -u root -p
Установка Node.js 10 LTS
Проверьте доступные версии Node.js:
sudo dnf module list | grep nodejs
Установите версию по умолчанию (если необходимо можно вручную указать другую версию):
sudo dnf module install nodejs:10
Проверьте установленную версию:
node --version
Установка и настройка Apache Web Server
Установите httpd:
sudo dnf -y install @httpd
Удалите страницу по умолчанию index.html:
sudo rm -f /var/www/html/index.html
sudo systemctl enable --now httpd
Если у вас есть активная служба межсетевого экрана firewalld, откройте порты http и https:
sudo firewall-cmd --add-service={http,https} --permanent sudo firewall-cmd --reload
Установка и настройка PHP
Установите PHP и необходимые расширения:
sudo dnf -y install wget @php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysqlnd php-gettext php-bcmath php-zip php-xml php-json php-process php-snmp
Скорректируйте настройки httpd
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
В /etc/php-fpm.d/www.conf пропишите:
listen.acl_users = asterisk
Запустите php-fpm и httpd:
sudo systemctl enable --now php-fpm httpd sudo systemctl restart php-fpm httpd
Проверьте статус обоих служб:
sudo systemctl status php-fpm httpd
Установка и обновление системных пакетов и зависимостей
Установите необходимые системные пакеты, отсутствующие в базовом дистрибутиве.
yum -y groupinstall core base "Development tools" yum -y install epel-release yum config-manager --set-enabled PowerTools yum -y install php php-gd php-mbstring php-mysqlnd php-pear php-pdo php-xml php-json yum -y install e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libsepol-devel libxml2-devel libtiff-devel gmp unixODBC unixODBC-devel audiofile-devel libogg-devel openssl-devel zlib-devel perl-Date-Manip sox git net-tools psmisc iptables-services fail2ban gcc-c++ make gnutls-devel libxml2-devel ncurses-devel subversion doxygen texinfo curl-devel neon-devel uuid-devel libuuid-devel sqlite-devel sqlite speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel gtk2-devel newt-devel mariadb-server mariadb libedit libedit-devel mailx postfix yum -y update reboot
Установка Freepbx 15 на Centos 8
Начнем с самого простого 15-я версия на php 7. Качаем архив с официального сайта.
YAML
# cd ~
# wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz
1 |
# cd ~ # wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz |
Распаковываем архив.
YAML
# tar xfz freepbx-15.0-latest.tgz
1 | # tar xfz freepbx-15.0-latest.tgz |
Устанавливаем Freepbx 15 на Centos 8.
YAML
# cd freepbx
# ./start_asterisk start
# ./install -n
1 |
# cd freepbx # ./start_asterisk start # ./install -n |
Если на mysql установили пароль root, то запускать установку следует с указанием пароля.
YAML
# ./install -n —dbuser root —dbpass password
1 | # ./install -n —dbuser root —dbpass password |
Перезапустите httpd.
YAML
# systemctl restart httpd
1 | # systemctl restart httpd |
На этом установка freepbx закончена. Можно идти в веб интерфейс и проверять. Сначала создадите учетную запись администратора freepbx, потом зайдете под ней в панель управления asterisk. Рекомендую выбрать английский язык. Перевод на русский так себе, с ним иногда бывает сложно понять суть настроек.
Я заметил небольшую проблему. Во время входа панель обращается к какому-то внешнему ресурсу, который с моего сервера плохо доступен. Из-за этого очень долго выполняется вход, потом вылетает ошибка бэкенда и загружается dashboard. В логах apache при этом была ошибка:
YAML
(70007)The timeout specified has expired: AH01075: Error dispatching request to : (polling), referer: http://10.20.1.23/admin/config.php
1 | (70007)Thetimeoutspecifiedhasexpired: AH01075: Error dispatching request to : (polling),referer: http://10.20.1.23/admin/config.php |
Не хватает дефолтного времени в параметре RequestReadTimeout. Ошибка пропала и вход стал выполняться нормально после того, как я увеличил таймауты, добавив в /etc/httpd/conf/httpd.conf.
YAML
RequestReadTimeout header=20-600,MinRate=500 body=20,MinRate=500
1 | RequestReadTimeoutheader=20-600,MinRate=500body=20,MinRate=500 |
Не забудьте после этого перезапустить httpd.
Так же у меня была ошибка с отображением системной информации в виджете System Overview. Вместо полезной информации там была ошибка:
There was an error asking for Overview. Check the error logs for more information.
Как ее исправить, я так и не разобрался.
Подготовка сервера
1. Устанавливаем необходимые программы
Обновляем пакеты:
yum update
Устанавливаем пакеты:
yum install gcc wget ntpdate automake libtool
* gcc нужен для сборки исходников, wget — для загрузки файлов из командной строки; ntpdate — синхронизации времени; automake — участвует в создании Makefile при запуске configure; libtool — обеспечивает процесс сборки и использования динамических библиотек.
2. Настраиваем время
Устанавливаем временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Устанавливаем утилиту для синхронизации времени и запускаем ее:
yum install chrony
systemctl enable chronyd —now
3. Настройка безопасности:
Создаем новый сервис в брандмауэре:
firewall-cmd —permanent —new-service=asterisk
Добавим в сервис нужные порты:
firewall-cmd —permanent —service=asterisk —add-port=5060/tcp
firewall-cmd —permanent —service=asterisk —add-port=5060/udp
firewall-cmd —permanent —service=asterisk —add-port=5061/tcp
firewall-cmd —permanent —service=asterisk —add-port=5061/udp
firewall-cmd —permanent —service=asterisk —add-port=4569/udp
firewall-cmd —permanent —service=asterisk —add-port=5038/tcp
firewall-cmd —permanent —service=asterisk —add-port=10000-20000/udp
* где 5060 — SIP, 5061 — SIP over TLS, 4569 — IAX, 5038 — AMI (Asterisk Manager Interface), 10000-20000 — диапазон для динамических портов.
Теперь добавляем созданный сервис как разрешенный:
firewall-cmd —permanent —add-service=asterisk
и перезапускаем фаервол:
firewall-cmd —reload
Подготовка
-
# yum -y update
- Выключить SELinux:
# sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/sysconfig/selinux # sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config
-
# reboot
Дополнительные репозитарии:
# rpm -Uvh http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
# yum -y install epel-release
-
# yum -y install net-tools mc make gcc kernel-devel kernel-headers gcc-c++ ncurses-devel jansson-devel libuuid-devel wget httpd fail2ban mariadb-server mariadb mariadb-devel php iksemel iksemel-devel crypto-utils openssl-devel gmime gmime-devel spandsp spandsp-devel openldap openldap-devel popt-devel speex speex-devel libcurl-devel speex-tools svn sqlite-devel mod_ssl php-mysql php-pear-MDB2-Driver-mysqli php-mbstring php-gd php-mcrypt libxml2-devel lame bison audiofile-devel sox php-pear-DB php-posix atop htop telnet mpg123 bzip2 unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel mysql-connector-odbc # rpm -Uvh https://dl.fedoraproject.org/pub/epel/6/x86_64/libresample-0.1.3-12.el6.x86_64.rpm https://dl.fedoraproject.org/pub/epel/6/x86_64/libresample-devel-0.1.3-12.el6.x86_64.rpm
-
# cd /root
-
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-14-current.tar.gz # tar -zxf asterisk-14-current.tar.gz
-
# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz # tar -zxf libpri-current.tar.gz # wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz # tar -zxf dahdi-linux-complete-current.tar.gz
Install Dependencies
Note that this uses an older PHP 5.6. FreePBX 15 supports PHP 7.1 and higher.
apt-get install -y openssh-server apache2 mysql-server mysql-client \ mongodb curl sox mpg123 sqlite3 git uuid libodbc1 unixodbc unixodbc-bin \ asterisk asterisk-core-sounds-en-wav asterisk-core-sounds-en-g722 \ asterisk-dahdi asterisk-flite asterisk-modules asterisk-mp3 asterisk-mysql \ asterisk-moh-opsound-g722 asterisk-moh-opsound-wav asterisk-opus \ asterisk-voicemail dahdi dahdi-dkms dahdi-linux libapache2-mod-security2 \ php5.6 php5.6-cgi php5.6-cli php5.6-curl php5.6-fpm php5.6-gd php5.6-mbstring \ php5.6-mysql php5.6-odbc php5.6-xml php5.6-bcmath php-pear libicu-dev gcc \ g++ make postfix libapache2-mod-php5.6
As part of this install, you may be asked (possibly several times) for a mysql password. DO NOT SET A MYSQL PASSWORD AT THIS POINT. Your machine will automatically generate a secure password later in the installation.
Fix permissions for the Asterisk user
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 chsh -s /bin/bash asterisk rm -rf /var/www/html
Remove any ‘sample’ config files left over, and fix errors
These are a security vulnerability and must be removed before installing freepbx. There is also an incompatibility in the Ubuntu-supplied asterisk.conf which needs to be fixed.
rm -rf /etc/asterisk/ext* /etc/asterisk/sip* /etc/asterisk/pj* /etc/asterisk/iax* /etc/asterisk/manager* sed -i 's/.!.//' /etc/asterisk/asterisk.conf
Update Apache configuration
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/5.6/cgi/php.ini sed -i 's/www-data/asterisk/' /etc/apache2/envvars sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf a2enmod rewrite service apache2 restart
Fix ‘Pear-GetOpt’ compatibility issue.
The standard ‘pear-getopt’ uses ‘each’ which is Deprecated in PHP 7. This simple patch fixes it
sed -i 's/ each(/ @each(/' /usr/share/php/Console/Getopt.php
Download and install package
mkdir -p /usr/lib/odbc curl -s https://cdn.mysql.com/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.11-linux-ubuntu18.04-x86-64bit.tar.gz | \ tar -C /usr/lib/odbc --strip-components=2 --wildcards -zxvf - */lib/*so
Configure ODBC
Note that this assumes you haven’t previously configured ODBC on this machine. If so, you will need to manually add the required data.
cat > /etc/odbc.ini << EOF Description=MySQL connection to 'asteriskcdrdb' database driver=MySQL server=localhost database=asteriskcdrdb Port=3306 Socket=/var/run/mysqld/mysqld.sock option=3 Charset=utf-8 EOF cat > /etc/odbcinst.ini << EOF Description=ODBC for MySQL Driver=/usr/lib/odbc/libmyodbc5w.so Setup=/usr/lib/odbc/libodbcmy5S.so FileUsage=1 EOF