Подумываю, а чтобы такого еще можно сделать с полезностью купленного миникомпьютера и тут озираясь вокруг своего рабочего места мой взор пал на экран мониторинга где все было хорошо, в частности сервер телефонии даже и не подумывал чтобы потревожить меня в столь ранний час. О, эврика, а что есть поднять минисервер телефонии на миникомпьютере Raspberry Pi 3 Model. Это же возможно, ведь на борту ось на базе Debian, а значит привычные команды установки, как в моих рабочих заметках под Ubuntu.
Итак, задача ясна, связку под сервис телефонии буду поднимать с использованием пакетов: asterisk + freepbx (Web-интерфейс), но по используемым ресурсам все же лучше взять только Asterisk (но это я после разберу).
Текущая модель моего миникомпьютера Raspberry Pi 3 Model B имеет следующие характеристики:
- CPU = 1 (4 Cores)
- RAM = 1Gb
- HDD = 8Gb (Использую Class 10, но если возникнет надобность то карту возьму по больше).
В своих заметках я стараюсь делать акцент, что сделанное самолично намного полезнее (для меня), чем взятое, как готовый образ и развернутое как отдельная VM. Но конечно же не исключаю такую возможность, ведь учиться надо же, как было у других.
Установливаю образ Raspberry на карту MicroSD и настраиваю систему по заметке, а далее
за основу беру свою заметку:
Увеличиваем размер swap файла со 100Мб до 512Мб:
pi@raspberrypi:~ $ sudo nano /etc/dphys-swapfile
#CONF_SWAPSIZE=100
CONF_SWAPSIZE=512
pi@raspberrypi:~ $ sudo reboot
pi@raspberrypi:~ $ sudo rm -Rf /var/lib/apt/lists/
pi@raspberrypi:~ $ sudo apt-get update && sudo apt-get upgrade -y
pi@raspberrypi:~ $ uname -a && lsb_release -a
Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
pi@raspberrypi:~ $ sudo tasksel install web-server
pi@raspberrypi:~ $ sudo apt-get install libmysqlclient18 asterisk-dev asterisk-mysql asterisk-moh-opsound-wav php-db selinux-utils audiofile-tools bison libset-intspan-perl curl openssl php5-gd php5 libapache2-mod-php5 php5-mysql lame sox libxml2 mysql-server mysql-client subversion dahdi-* -y
New password for the MySQL "root" user: 712mbddr@
Repeat password for the MySQL "root" user: 712mbddr@
pi@raspberrypi:~ $ sudo nano /etc/apache2/apache2.conf
ServerName pi
pi@raspberrypi:~ $ sudo svn co http://svn.freepbx.org/freepbx/branches/2.11 /var/www/freepbx
pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "create database asterisk"
pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "create database asteriskcdrdb"
pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "grant all privileges on asterisk.* to asteriskuser@localhost identified by 'asterpass'"
pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "grant all privileges on asteriskcdrdb.* to asteriskuser@localhost identified by 'asterpass'"
pi@raspberrypi:~ $ mysql -u root -p712mbddr@ -e "flush privileges"
pi@raspberrypi:~ $ mysql -u root -p712mbddr@ asterisk < /var/www/freepbx/SQL/newinstall.sql
pi@raspberrypi:~ $ mysql -u root -p712mbddr@ asteriskcdrdb < /var/www/freepbx/SQL/cdr_mysql_table.sql
pi@raspberrypi:~ $ sudo nano /etc/apache2/envvars
#export APACHE_RUN_USER=www-data
#export APACHE_RUN_GROUP=www-data
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
pi@raspberrypi:~ $ sudo service apache2 restart
pi@raspberrypi:~ $ sudo pear uninstall DB
uninstall ok: channel://pear.php.net/DB-1.7.14
pi@raspberrypi:~ $ sudo pear install db-1.7.14
pi@raspberrypi:~ $ sudo rm /var/www/html/index.html
pi@raspberrypi:~ $ sudo nano /etc/apache2/sites-available/000-default.conf
DocumentRoot /var/www/
pi@raspberrypi:~ $ sudo service apache2 restart
pi@raspberrypi:~ $ sudo chown -Rf asterisk:asterisk /var/www/freepbx/
pi@raspberrypi:~ $ cd /var/www/freepbx/
pi@raspberrypi:/var/www/freepbx $ sudo ./install_amp --password=asterpass --webroot=/var/www
Enter the IP ADDRESS or hostname used to access the AMP web-admin:
[192.168.1.1] 10.7.8.53
После открываю браузер и обращаюсь к Web станице с IP адресом моего миникомпьютере для последующей настройки развернутой оснастки для телефонии: http://IP&DNS → меня переадресует на http://IP&DNS/admin/config.php где меня ожидает страница предустановки Web-интерфейса от FreePBX:
После заполнения всех полей нажимаю: Set up my Account и все проходит успешно, меня встречает привычное меню входа для FreePBX оснастки:
Нажимаю на FreePBX Administration, затем авторизуюсь с использованием учетной записи созданной шагами выше, в моем случае это:
- Username: ekzorchik
- Password: 712mbddr@
и нажимаю кнопку Continue.
После чего меня приветствует дефолтное меню Web-управления АТС которое представляет собой, связку: Asterisk + фронтенд FreePBX
pi@raspberrypi:~ $ sudo asterisk -V
Asterisk 11.13.1~dfsg-2+deb8u2
framework 2.11.0.43 Enabled
По аналогии с заметками моего основного домашне/рабочего блога устанавливаю необходимые модули для работы:
- FreePBX Framework
- System Dashboard
- Core
- Asterisk SIP Settings
Потребление ресурсов еще пока ничего не значит, вот когда я нагружу АТС на базе Raspberry Pi 3 Model B вот тогда и буду критиковать.
Заметил при перезапуске FreePBX ошибки в консоли:
pi@raspberrypi:~ $ sudo amportal restart
Please wait...
PHP Notice: Undefined offset: 8192 in /var/www/admin/libraries/utility.functions.php on line 383
STOPPING ASTERISK
Waiting for Asterisk to Stop Gracefully...
Asterisk Stopped
SETTING FILE PERMISSIONS
Permissions OK
Removing any dangling symlinks
Dangling symlinks removed
STARTING ASTERISK
Asterisk Started
Reloading Asterisk because of Dynamic Hints
По ошибке, вроде как данная версия фронтенда FreePBX не может корректно работать с установленной версией php, сейчас у меня:
pi@raspberrypi:~ $ php --version
PHP 5.6.29-0+deb8u1 (cli) (built: Dec 17 2016 06:04:43)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
Но беда вот в чем, в текущих репозитариях системы Debian jessie только эта версия пакета интерпретатора php:
pi@raspberrypi:~ $ apt-cache show php5 | grep Version
Version: 5.6.29+dfsg-0+deb8u1
Как я понял из прочитанного по этой ошибке, просто в новой версии интерпретатора появились новые возможности, и вот на это и идет ругань, вообщем ничего критичного.
На заметку: Можно использовать данную АТС (Asterisk + FreePBX), как в связке с облачной АТС от Манго (для телефонов Cisco) или же купленного SIP аккаунта от Zadarma. Впрочем, навязывать свое мнение по использованию это не мое, так что каждый решает уже сам как использовать.
На заметку: если не ставить фронтенд, а использовать голый asterisk то свободных ресурсов будет больше.
И вот я выполнил свою задумку, в этом не помогли заметки моего блога (http://www.ekzorchik.ru) и желание реализовать задуманное. Теперь я буду тестировать как ведет себя данная АТС в домашнем использовании. А пока я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.