Т.к. у меня не получилось подружить Ubuntu 22.04 Server + Asterisk 16 с FreePBX (15 и 16 версиями)
, то я вынужден проработать связку Ubuntu 22.04 + Asterisk 20 + FreePBX 16
от и до со всеми нюансами. Для чего мне это нужно, я просто хочу использовать только долговременные релизы для своих проектов дабы если будет проблема с помощью сообщества Asterisk
найти ее решение, плюс что-то у меня с Web
интерфейсом визуализации записанных разговоров на Asterisk 16
не заладилось, записи пишутся в mp3
конвертируются, но вот через Web
-интерфейс послушать их пока не могу. Тут вспомнил что можно поставить FreeBPX
и уже в нем через модуль получить желаемое из коробки. Посмотрим, короче есть время для самообразования, так почему бы не поучиться.
Шаг №1:
Обновляю информацию об установленных пакетов и обновляю установленные пакеты до версии самых последних в текущем релизе Ubuntu 22.04 Server
из стандартных репозитариев:
ekzorchik@srv-pbx:~$ sudo rm -Rf /var/lib/apt/lists ekzorchik@srv-pbx:~$ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y ekzorchik@srv-pbx:~$ sudo reboot ekzorchik@srv-pbx:~$ uname -a && lsb_release -a Linux srv-pbx 5.15.0-94-generic #104-Ubuntu SMP Tue Jan 9 15:25:40 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04 Codename: jammy ekzorchik@srv-pbx:~$
Шаг №2:
Настройки Locale:
sudo rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime sudo locale-gen en_US.UTF-8 echo "LC_ALL="en_US.UTF-8"" | sudo -s tee /etc/default/locale echo "LANG="en_US.UTF-8"" | sudo tee -a /etc/default/locale echo "LANGUAGE="en.US.UTF-8"" | sudo tee -a /etc/default/locale
Шаг №3:
Устанавливаю в систему Asterisk 20
опираясь на ранее опубликованную заметку: "Поднимаем Asterisk 20 на Ubuntu 22.04 LTS Server"
Шаг №4:
Устанавливаю LAMP (Linux Apache2 MySQL PHP):
ekzorchik@srv-pbx:~$ sudo apt-get install -y software-properties-common ekzorchik@srv-pbx:~$ sudo add-apt-repository ppa:ondrej/php -y ekzorchik@srv-pbx:~$ sudo apt-get install -y apache2 mariadb-server libapache2-mod-php7.4 php7.4 php-pear php7.4-cgi php7.4-common php7.4-curl php7.4-mbstring php7.4-gd php7.4-mysql php7.4-bcmath php7.4-zip php7.4-xml php7.4-imap php7.4-json php7.4-snmp ekzorchik@srv-pbx:~$ php -v PHP 8.3.3-1+ubuntu22.04.1+deb.sury.org+1 (cli) (built: Feb 15 2024 18:38:52) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.3, Copyright (c) Zend Technologies with Zend OPcache v8.3.3-1+ubuntu22.04.1+deb.sury.org+1, Copyright (c), by Zend Technologies ekzorchik@srv-pbx:~$ sudo update-alternatives --set php /usr/bin/php7.4 update-alternatives: using /usr/bin/php7.4 to provide /usr/bin/php (php) in manual mode ekzorchik@srv-pbx:~$ php -v PHP 7.4.33 (cli) (built: Sep 2 2023 08:03:46) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies ekzorchik@srv-pbx:~$
Задаем пароль для суперпользователя СУБД:
ekzorchik@srv-pbx:~$ sudo mysql_secure_installation Root Password: 712mbddr@ ekzorchik@srv-pbx:~$ sudo systemctl enable apache2 mariadb Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable apache2 Synchronizing state of mariadb.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable mariadb ekzorchik@srv-pbx:~$ sudo systemctl start apache2 mariadb
Шаг №5:
Немного настраиваю Apache2:
ekzorchik@srv-pbx:~$ sudo nano /etc/apache2/apache2.conf ServerName 127.0.0.1 ekzorchik@srv-pbx:~$ sudo sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf ekzorchik@srv-pbx:~$ sudo sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf ekzorchik@srv-pbx:~$ sudo sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.4/apache2/php.ini ekzorchik@srv-pbx:~$ sudo sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.4/cli/php.ini ekzorchik@srv-pbx:~$ sudo rm -f /var/www/html/index.html ekzorchik@srv-pbx:~$ sudo unlink /etc/apache2/sites-enabled/000-default.conf ekzorchik@srv-pbx:~$ sudo apache2ctl configtest Syntax OK ekzorchik@srv-pbx:~$
Шаг №6:
Устанавливаем NodeJS
и NPM
из дефолтных репозитариев Ubuntu 22.04 Server:
ekzorchik@srv-pbx:~$ sudo apt-get install -y nodejs npm ekzorchik@srv-pbx:~$ nodejs --version v12.22.9 ekzorchik@srv-pbx:~$ npm --version 8.5.1 ekzorchik@srv-pbx:~$
Шаг №7:
Скачиваем FreePBX 16
и устанавливаем в систему:
ekzorchik@srv-pbx:~$ wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz ekzorchik@srv-pbx:~$ tar -xzf freepbx-16.0-latest.tgz ekzorchik@srv-pbx:~$ cd freepbx/ ekzorchik@srv-pbx:~/freepbx$ ekzorchik@srv-pbx:~/freepbx$ sudo ./start_asterisk start STARTING ASTERISK Asterisk is already running ekzorchik@srv-pbx:~/freepbx$ ekzorchik@srv-pbx:~/freepbx$ sudo ./install -n --dbuser root --dbpass 712mbddr@
На заметку: Если после выполнения команды:
ekzorchik@srv-pbx:~/freepbx$ sudo ./install -n --dbuser root --dbpass 712mbddr@
У Вас ошибка следующего вида:
PHP Fatal error: Uncaught Error: Call to undefined function FreePBX\Install\simplexml_load_file() in /home/ekzorchik/freepbx/install:19 Stack trace: #0 {main} thrown in /home/ekzorchik/freepbx/install on line 19
ekzorchik@srv-pbx:~/freepbx$ — это значит что в системе Ubuntu 22.04 (Asterisk 20)
версия php
по умолчанию не php7.4
, а по дефолту php8.3
Когда поправили версию PHP
по дефолту, то выполнение команды:
ekzorchik@srv-pbx:~/freepbx$ sudo ./install -n --dbuser root --dbpass 712mbddr@
приводит к успешной установке FreePBX:
Finished generating default configurations You have successfully installed FreePBX ekzorchik@srv-pbx:~/freepbx$ cd ~/ ekzorchik@srv-pbx:~$ sudo usermod -aG www-data asterisk ekzorchik@srv-pbx:~$ sudo systemctl restart apache2
Шаг №8:
Проверяем, что Web
—интерфейс FreePBX
запускается и если все хорошо, то производит первоначальную настройку:
http://IP&DNS
— получаю ошибку
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at to inform them of the time this error occurred, and the actions you performed just before this error.
More information about error may be available in the server error log.
Apache/2.4.52 (Ubuntu) Server at 172.33.33.126 Port 80
смотрю логи:
ekzorchik@srv-pbx:~$ sudo tail -f /var/log/apache2/error.log [Thu Feb 22 10:29:25.861452 2024] [php7:warn] [pid 24934] [client 172.35.35.24:61973] PHP Warning: session_regenerate_id(): Cannot regenerate session id - session is not active in /var/www/html/admin/config.php on line 76 [Thu Feb 22 10:29:25.861484 2024] [php7:warn] [pid 24934] [client 172.35.35.24:61973] PHP Warning: session_start(): open(/var/lib/php/sessions/sess_uifj3qeq4ke40abu19vms578dn, O_RDWR) failed: Permission denied (13) in /var/www/html/admin/config.php on line 77 [Thu Feb 22 10:31:44.438214 2024] [core:alert] [pid 27092] [client 172.35.35.24:62004] /var/www/html/admin/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Выявил, что нет доступа к файлам сессии, нужно смотреть права на каталог /var/lib/php/sessions
кто владелец и от кого пишется и читается этот каталог. И с какими правами создаются файлы сессий. Тут больше проблема Web
чем Asterisk:
ekzorchik@srv-pbx:~$ sudo sed -i 's/www-data/asterisk/' /etc/apache2/envvars ekzorchik@srv-pbx:~$ sudo a2enmod rewrite Enabling module rewrite. To activate the new configuration, you need to run: systemctl restart apache2 ekzorchik@srv-pbx:~$ ekzorchik@srv-pbx:~$ sudo systemctl restart apache2
После нажимаю F5
на Web-странице с ошибкой и о чудо Web
-интерфейс FreePBX 16.0.40.7
запускается и передо мной мастер предварительной настройки, заполняю поля:
Username: ekzorchik
Password: 712mbddr@
Confirm Password: 712mbddr@
Notifications Email address: support@ekzorchik.com
System Identifier: Asterisk ekz
Automatic Module Updates: Disabled
Automatic Module Security Updates: Email Only
Send Security Emails for Unsigned Modules: Disabled
Check for Updates every: Sunday (Between 8pm and Midnight)
и нажимаю Setup System
И вот меня встречает Web
-страница входа, т.е. URL
-адрес: http://IP&DNS/admin/config.php
нажимаю на "FreePBX Administration"
, указываю данные созданного администратора
Login: ekzorchik
Password: 712mbddr@
и нажимаю Continue
Указываю языковые настройки и системный язык:
Sound Prompts Language: English
System Language: en_US
и нажимаю Submit
По итогу получаю привычный Web
-интерфейс управления АТС
на базе Asterisk 20:
вижу, что активна кнопка "Apply Config"
в правом верхнем углу текущей страницы, нажимаю на нее.
Вот теперь FreePBX 16
успешно установлен и можно приступать к настройке домашней АТС
на свои задачи и задачи изучения телефонии.
На этом пока заметку делаю завершенной, с уважением автор блога Олло Александр aka ekzorchik.