Т.к. у меня не получилось подружить 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

Web-интерфейс FreePBX почему-то не запускается, ошибка Internal Server Error

смотрю логи:

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)

В первый раз создаю Административную учетную запись в FreePBX 16

и нажимаю Setup System

И вот меня встречает Web-страница входа, т.е. URL-адрес: http://IP&DNS/admin/config.php

И вот меня встречает Web-страница входа, т.е. URL-адрес: http://IP&DNS/admin/config.php

нажимаю на "FreePBX Administration", указываю данные созданного администратора

  • Login: ekzorchik
  • Password: 712mbddr@

Авторизуюсь в FreePBX 16 посредством созданной административной учетной записи.

и нажимаю Continue

Указываю языковые настройки и системный язык:

  • Sound Prompts Language: English
  • System Language: en_US

Указываю языковые настройки и системный язык:

и нажимаю Submit

По итогу получаю привычный Web-интерфейс управления АТС на базе Asterisk 20:

По итогу получаю привычный Web-интерфейс управления АТС на базе Asterisk 20:

вижу, что активна кнопка "Apply Config" в правом верхнем углу текущей страницы, нажимаю на нее.

Вот теперь FreePBX 16 успешно установлен и можно приступать к настройке домашней АТС на свои задачи и задачи изучения телефонии.

На этом пока заметку делаю завершенной, с уважением автор блога Олло Александр aka ekzorchik.