Почему разработчики такие козлы. Вот написал я ранее заметку, как поставить FreePBX на Ubuntu Trusty Server все было хорошо. На ее основе: я развернул в организации, дома и для тестов. А вот сейчас мне также потребовалось тестовое окружение и что, беру свою заметку и получаю что больше нет svn репозитария:
ekzorchik@srv-trusty:~$ sudo svn co http://svn.freepbx.org/freepbx/branches/2.11 /var/www/freepbx
svn: E670002: Unable to connect to a repository at URL ‘http://svn.freepbx.org/freepbx/branches/2.11’
svn: E670002: Name or service not known
aollo@work:~$ ping svn.freepbx.org
ping: unknown host svn.freepbx.org
Вот зачем? И я с каждым разом убеждаюсь что доверять сообществу нельзя. Можно раз использовать и сделать все возможное чтобы репозитарий, пакеты, своя инструкция были только на своем физическом железе и сервисе. Вот (HP MicroServer Gen8) что я подарил ранее себе на день рождения и будет/есть тем самым личным местом хранения наработок и инструментов, а не интернет ресурсы.
Сейчас будет инструкция по обновленной установке FreePBX на Ubuntu 14.04.5 Server amd64 где информации берется из официальной документации.
На заметку: Вообще практичнее было бы подготовить docker контейнер (будет много позже) всей системы, но и также посредством Remastersys создать образ системы.
Характеристики системы на которой разбираю установку:
- RAM = 2
- CPU = 1
- HDD = 50
ekzorchik@srv-trusty:~$ sudo rm -Rf /var/lib/apt/lists
ekzorchik@srv-trusty:~$ sudo apt-get update && sudo apt-get upgrade -y
ekzorchik@srv-trusty:~$ sudo apt-get install linux-generic-lts-xenial
linux-image-generic-lts-xenial -y
ekzorchik@srv-trusty:~$ sudo rm /etc/localtime
ekzorchik@srv-trusty:~$ sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ekzorchik@srv-trusty:~$ sudo apt-get install ntp -y
ekzorchik@srv-trusty:~$ sudo nano /etc/profile
export LC_ALL="en_US.UTF-8"
ekzorchik@srv-trusty:~$ source /etc/profile
ekzorchik@srv-trusty:~$ sudo tasksel install openssh-server
ekzorchik@srv-trusty:~$ sudo reboot
ekzorchik@srv-trusty:~$ uname -a && lsb_release -a
Linux srv-trusty 4.4.0-83-generic #106~14.04.1-Ubuntu SMP Mon Jun 26
18:10:19 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
ekzorchik@srv-trusty:~$ apt-cache show asterisk | grep Version
Version:
1:11.7.0~dfsg-1ubuntu1
ekzorchik@srv-trusty:~$ sudo apt-get install -y build-essential linux-headers-
uname -r
openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev libmyodbc unzip
New password for the MySQL "root" user: 712mbddr@
Repeat password for the MySQL "root" user: 712mbddr@
ekzorchik@srv-trusty:~$ sudo reboot
ekzorchik@srv-trusty:~$ sudo a2enmod rewrite
ekzorchik@srv-trusty:~$ sudo nano /etc/apache2/apache2.conf
ServerName srv-trusty
ekzorchik@srv-trusty:~$ sudo sed -i 's/\(^upload_max_filesize = \).*/\120M/'
/etc/php5/apache2/php.ini
ekzorchik@srv-trusty:~$ sudo sed -ie 's/\;date\.timezone\ \=/date\.timezone\ \=\
"Europe\/Moscow"/g' /etc/php5/apache2/php.ini
ekzorchik@srv-trusty:~$ sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.backup
ekzorchik@srv-trusty:~$ sudo sed -i 's/AllowOverride None/AllowOverride All/'
/etc/apache2/apache2.conf
ekzorchik@srv-trusty:~$ sudo mysql_secure_installation
Подготовливаю базу MySQL, пользователя и пароль под нее:
ekzorchik@srv-trusty:~$ mysql -u root -p712mbddr@ -e "create database asterisk"
ekzorchik@srv-trusty:~$ mysql -u root -p712mbddr@ -e "create database asteriskcdrdb"
ekzorchik@srv-trusty:~$ mysql -u root -p712mbddr@ -e "grant all privileges on asterisk.* to asteriskuser@localhost identified by 'asterpass'"
ekzorchik@srv-trusty:~$ mysql -u root -p712mbddr@ -e "grant all privileges on
asteriskcdrdb.* to asteriskuser@localhost identified by 'asterpass'"
ekzorchik@srv-trusty:~$ sudo service apache2 restart
ekzorchik@srv-trusty:~$ sudo pear install Console_Getopt
ekzorchik@srv-trusty:~$ sudo pear uninstall db
pear/db not installed
ekzorchik@srv-trusty:~$ sudo pear channel-update pear.php.net
ekzorchik@srv-trusty:~$ sudo pear install -Z db-1.7.14
ekzorchik@srv-trusty:~$ cd /usr/src
ekzorchik@srv-trusty:/usr/src$ sudo wget
http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz
ekzorchik@srv-trusty:/usr/src$ sudo wget
http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
ekzorchik@srv-trusty:/usr/src$ sudo wget
http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
ekzorchik@srv-trusty:/usr/src$ sudo wget
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
ekzorchik@srv-trusty:/usr/src$ sudo git clone https://github.com/akheron/jansson.git
ekzorchik@srv-trusty:/usr/src$ sudo wget http://www.pjsip.org/release/2.2.1/pjproject-2.2.1.tar.bz2
Компилирую и установливаю Lame (mp3)
ekzorchik@srv-trusty:/usr/src$ sudo tar zxf lame-3.98.4.tar.gz
ekzorchik@srv-trusty:/usr/src$ cd lame-3.98.4/
ekzorchik@srv-trusty:/usr/src/lame-3.98.4$ sudo ./configure
ekzorchik@srv-trusty:/usr/src/lame-3.98.4$ sudo make && sudo make install
ekzorchik@srv-trusty:/usr/src/lame-3.98.4$ cd ../
Компилирую и установливаю DAHDI и LibPRI:
ekzorchik@srv-trusty:/usr/src$ sudo tar xfz dahdi-linux-complete-current.tar.gz
ekzorchik@srv-trusty:/usr/src$ sudo tar xfz libpri-current.tar.gz
ekzorchik@srv-trusty:/usr/src$ sudo rm dahdi-linux-complete-current.tar.gz libpri-current.tar.gz
ekzorchik@srv-trusty:/usr/src$ cd dahdi-linux-complete-*
ekzorchik@srv-trusty:/usr/src/dahdi-linux-complete-2.11.1+2.11.1$ sudo make all
ekzorchik@srv-trusty:/usr/src/dahdi-linux-complete-2.11.1+2.11.1$ sudo make install
ekzorchik@srv-trusty:/usr/src/dahdi-linux-complete-2.11.1+2.11.1$ sudo make config
ekzorchik@srv-trusty:/usr/src/dahdi-linux-complete-2.11.1+2.11.1$ cd ../libpri-*
ekzorchik@srv-trusty:/usr/src/libpri-1.6.0$ sudo make
ekzorchik@srv-trusty:/usr/src/libpri-1.6.0$ sudo make install
ekzorchik@srv-trusty:/usr/src/libpri-1.6.0$ cd ../
Компилирую и ставлю pjproject:
(Требуется для поддержки драйвера канала PjSIP)
ekzorchik@srv-trusty:/usr/src$ sudo tar xjf pjproject-*.tar.bz2
ekzorchik@srv-trusty:/usr/src$ cd pjproject-*
ekzorchik@srv-trusty:/usr/src/pjproject-2.2.1$ sudo CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
ekzorchik@srv-trusty:/usr/src/pjproject-2.2.1$ sudo make dep
ekzorchik@srv-trusty:/usr/src/pjproject-2.2.1$ sudo make
ekzorchik@srv-trusty:/usr/src/pjproject-2.2.1$ sudo make install
ekzorchik@srv-trusty:/usr/src/pjproject-2.2.1$ cd ../
Компилирую и ставлю jansson:
ekzorchik@srv-trusty:/usr/src$ cd jansson/
ekzorchik@srv-trusty:/usr/src/jansson$ sudo autoreconf -i
ekzorchik@srv-trusty:/usr/src/jansson$ sudo ./configure
ekzorchik@srv-trusty:/usr/src/jansson$ sudo make
ekzorchik@srv-trusty:/usr/src/jansson$ sudo make install
ekzorchik@srv-trusty:/usr/src/jansson$ cd ../
Компилирую и ставлю Asterisk:
ekzorchik@srv-trusty:/usr/src$ sudo tar zxf asterisk-13-current.tar.gz
ekzorchik@srv-trusty:/usr/src$ sudo rm asterisk-13-current.tar.gz
ekzorchik@srv-trusty:/usr/src$ cd asterisk-*/
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo ./contrib/scripts/install_prereq install
ITU-T telephone code: 7
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo ./configure
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo ./configure --with-pjproject-bundled
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo ./contrib/scripts/get_mp3_source.sh
./contrib/scripts/get_mp3_source.sh: 12: ./contrib/scripts/get_mp3_source.sh: svn: not found
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo apt-get install subversion -y
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo ./contrib/scripts/get_mp3_source.sh
Exported revision 202.
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo make menuselect
Слева представлены разделы, а с права при выборе раздела доступные опции. Исходя из этого перехожу в раздел Add-ons и отмечаю опции клавишей «Enter»: format_mp3, app_mysql, cdr_mysql. Затем перехожу в раздел Core Sound Packages и отмечаю опции клавишей «Enter»:
- CORE-SOUNDS-EN-ALAW
- CORE-SOUNDS-EN-GSM
- CORE-SOUNDS-EN-G729
- CORE-SOUNDS-RU-ALAW
- CORE-SOUNDS-RU-GSM
- CORE-SOUNDS-RU-G729
Затем перехожу в раздел Music On Hold File Packages и отмечаю опцию клавишей «Enter»:
- MOH-OPSOUND-WAV (хотя это уже предопределено установщиком)
Затем перехожу в раздел Extras Sound Packages и отмечаю опции клавишей «Enter»:
- EXTRA-SOUND-EN-WAV
- EXTRA-SOUND-EN-ALAW
- EXTRA-SOUND-EN-GSM
- EXTRA-SOUND-EN-G729
Затем переходим в меню Save & Exit (или нажимаем клавишу F12) и наконец таки переходим к установке Asterisk:
ekzorchik@srv-trusty:~/asterisk-13.17.0$ sudo make
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo make
+--------- Asterisk Build Complete ---------+
+ Asterisk has successfully been built, and +
+ can be installed by running: +
+ +
+ make install +
+-------------------------------------------+
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo make install
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo make config
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ sudo ldconfig
ekzorchik@srv-trusty:/usr/src/asterisk-13.17.0$ cd ../
Установка и настройка FreePBX
ekzorchik@srv-trusty:~$ sudo wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
ekzorchik@srv-trusty:/usr/src$ sudo tar zxf freepbx-*.tgz
ekzorchik@srv-trusty:/usr/src$ cd /usr/src/freepbx/
Создаю пользователя Asterisk и права пользователя.
ekzorchik@srv-trusty:/usr/src/freepbx$ sudo useradd -m asterisk
ekzorchik@srv-trusty:/usr/src/freepbx$ sudo chown asterisk. /var/run/asterisk
ekzorchik@srv-trusty:/usr/src/freepbx$ sudo chown -R asterisk. /etc/asterisk
ekzorchik@srv-trusty:/usr/src/freepbx$ sudo chown -R asterisk. /var/{lib,log,spool}/asterisk
ekzorchik@srv-trusty:/usr/src/freepbx$ sudo chown -R asterisk. /usr/lib/asterisk
ekzorchik@srv-trusty:/usr/src/freepbx$ sudo rm -rf /var/www/html/
Запустим Asterisk и установим FreePBX.
ekzorchik@srv-trusty:/usr/src/freepbx$ sudo ./start_asterisk start
STARTING ASTERISK
Asterisk Started
ekzorchik@srv-trusty:/usr/src/freepbx$ sudo ./install -n --dbuser=asteriskuser --dbpass=asterpass
Finished setting permissions
Generating default configurations...
Reloading FreePBX
Successfully reloaded
Finished generating default configurations
Trusting FreePBX...Trusted
You have successfully installed FreePBX
ekzorchik@srv-trusty:/usr/src/freepbx$ cd ~/
В завершении настроим создадим ссылку на директорию Music On Hold формата mp3
ekzorchik@srv-trusty:~$ sudo ln -s /var/lib/asterisk/moh/ /var/lib/asterisk/mohmp3
ekzorchik@srv-trusty:~$ sudo amportal start
Please wait...
!!!!amportal is depreciated. Please use fwconsole!!!!
forwarding all commands to 'fwconsole'
Asterisk already running
Running FreePBX startup...
Taking too long? Customize the chown command, See http://wiki.freepbx.org/display/FOP/FreePBX+Chown+Conf
Setting Permissions...
Setting base permissions...Done
Setting specific permissions...
677 [============================]
Finished setting permissions
Unable to run Pre-Asterisk hooks, because Asterisk is already running on PID 22259 and has been running for 4 minutes, 59 seconds
Поверим состояние Asterisk подключившись к консоли
ekzorchik@srv-trusty:~$ sudo asterisk -vvr
Asterisk 13.17.0, Copyright (C) 1999 - 2014, Digium, Inc. and others.
srv-trusty*CLI> quit
Asterisk cleanly ending (0).
Executing last minute cleanups
Подключаюсь к FreePBX:
Т.к. вроде как установка завершена, то чтобы открыть Web-интерфейс потребуется обратиться браузером с другой системы к этой по IP&DNS, где IP адрес текущей:
ekzorchik@srv-trusty:~$ ip r | awk '{print $9}'
10.10.10.11
URL ссылка на доступ: http://10.10.10.11/ и передо мной почему-то просто белая страница. См. Логи что есть что:
ekzorchik@srv-trusty:~$ sudo tail -f /var/log/apache2/error.log
[Sat Jul 22 13:29:57.625476 2017] [:error] [pid 1385] [client 10.10.10.11:36064] PHP Fatal error: Class 'FreePBX' not found in /var/www/html/admin/config.php on line 126
[Sat Jul 22 13:29:57.625582 2017] [:error] [pid 1385] [client 10.10.10.11:36064] PHP Warning: Unknown: open(/var/lib/php5/sess_b8tudp1hj9vapjqkpuep0dlpt2, O_RDWR) failed: Permission denied (13) in Unknown on line 0
[Sat Jul 22 13:29:57.625604 2017] [:error] [pid 1385] [client 10.10.10.11:36064] PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php5) in Unknown on line 0
ekzorchik@srv-trusty:~$ sudo nano /etc/apache2/envvars
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
а было www-data, как выставлено по умолчанию установщиком Web-сервиса Apache2.
ekzorchik@srv-trusty:~$ sudo service apache2 restart
После нажимаю клавишу F5 в странице где была белая страница и я продвинулся на шаг где нужно указать административные учетные данные которые будут использоваться. Создаю:
- Username: ekzorchik
- Password: 712mbddr@
- Confirm Password: 712mbddr@
- Admin Email address: support@ekzorchik.ru
и после нажимаю Create Account, затем меня перекидываем на URL: http://10.10.10.11/html/admin/config.php где нужно кликнуть мышью на FreePBX Administration → указываю login & password и нажимаю Continue. Но мастер входа не успокаивается и хочет чтобы я указал дополнительные параметры: язык звука, системный язык, часовой пояс. Ладно:
- Sound Prompts Language: English
- System Language: en_US
- Timezone: Europe/Moscow
и нажимаю Submit — после нужно нажать Apply Config.
И вот она полная установка, она отличается от той что у меня была современностью интерфейса и всем новым:
Ладно буду знакомиться с новой версией, скорее это и к лучшему что более не могу ставить FreePBX 2.11
Теперь нужно сделать бекап текущей системы. Для этого воспользуемся заметкой.
И вот бекап занимает и будет сохранен на моем персональном хранилище OwnCloud.
ekzorchik@srv-trusty:~$ sudo du -sh /home/remastersys/remastersys/custom-backup.iso
1.7G /home/remastersys/remastersys/custom-backup.iso
ekzorchik@srv-trusty:~$ md5sum /home/remastersys/remastersys/custom-backup.iso
2aced6e0ae7fc7d89158087f4a7a25ae /home/remastersys/remastersys/custom-backup.iso
Сперва копирую его на домен контроллер под управлением Windows Server 2012 R2 Std, но почему-то то что раньше работало не срабатывает:
ekzorchik@srv-trusty:~$ sudo mount.cifs //10.10.10.2/c$/iso -o username=ekzorchik,password=712mbddr@,domain=polygon.local,rw,uid=ekzorchik,gid=1000,iocharset=utf8 /media/cdrom
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Решение простое, нужно использовать версию пакет SMB не 1 как было ранее, а 2. В SMBv1 были найдены непростительные ошибки приводящие к распространению вирусов, а ранее в заметке по настройке максимальной производительности для Windows 10 я также и для Server 2012 R2 Std отключил:
C:\Windows\system32>dism /online /disable-feature /featurename:SMB1Protocol
Хорошо: Чтобы подмонтировать ресурс с версией пакета SMB 2 нужно:
ekzorchik@srv-trusty:~$ sudo mount.cifs //10.10.10.2/c$/iso -o username=ekzorchik,password=712mbddr@,domain=polygon.local,rw,uid=ekzorchik,gid=1000,iocharset=utf8,vers=2.0 /media/cdrom
ekzorchik@srv-trusty:~$ sudo cp /home/remastersys/remastersys/custom-backup.iso /media/cdrom
Проверяю, а соответствует ли md5 сумма файлу бекапа и скопированному файлу — ответ Да!
ekzorchik@srv-trusty:~$ md5sum /media/cdrom/custom-backup.iso
2aced6e0ae7fc7d89158087f4a7a25ae /media/cdrom/custom-backup.iso
ekzorchik@srv-trusty:~$ sudo umount /media/cdrom
umount: /media/cdrom: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
ekzorchik@srv-trusty:~$ ps aux | grep 'sudo cp'
root 32179 0.0 0.1 83380 3976 ? S 10:52 0:00 sudo cp /home/remastersys/remastersys/custom-backup.iso /media/cdrom/iso
ekzorchik@srv-trusty:~$ sudo kill -9 32179
ekzorchik@srv-trusty:~$ sudo umount /media/cdrom
Итого задача которая была запланирована вылилась вот в такой вот документ который поможет мне в дальнейшем. Да и уже настроенный образ у меня есть и буду от него отталкиваться при тестировании запланированного. Я бы еще так сказал, что установка сложна, приятнее было бы если бы через deb пакеты ставилось, но только не готовый дистрибутив использовать. Так я вообще кроме далее далее ничего не узнаю.
На заметку: Может случиться что после при нажатии Apply Config будет сообщение вида:
Reload failed because retrieve_conf encountered an error:1
Exit: 1
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl)
Exectiption: Unable to connect to Asterisk through the CLI in file /var/lib/asterisk
Это значит что дело в правах на каталог /var/run/asterisk
ekzorchik@srv-trusty:~$ ls /var/run/asterisk/ -l
total 4
srwxrwxr-x 1 root root 0 Oct 14 19:33 asterisk.ctl
-rw-r--r-- 1 root root 5 Oct 14 19:33 asterisk.pid
ekzorchik@srv-trusty:~$ sudo fwconsole stop
ekzorchik@srv-trusty:~$ sudo chown -R asterisk:asterisk /var/run/asterisk
ekzorchik@srv-trusty:~$ sudo sed -i '/END INIT INFO/a AST_USER="asterisk"\nAST_GROUP="asterisk"' /etc/init.d/asterisk
ekzorchik@srv-trusty:~$ whereis amportal
amportal: /usr/sbin/amportal /etc/amportal.conf
ekzorchik@srv-trusty:~$ sudo sed -i 's|exit 0|/usr/sbin/amportal restart\nexit 0|' /etc/rc.local
ekzorchik@srv-trusty:~$ sudo amportal restart
Please wait...
!!!!amportal is depreciated. Please use fwconsole!!!!
forwarding all commands to 'fwconsole'
Running FreePBX shutdown...
Shutting down Asterisk Gracefully. Will forcefully kill after 30 seconds.
Press C to Cancel
Press N to shut down NOW
[============================] 1 sec
Running FreePBX startup...
Starting Asterisk...
[============================] 10 secs
Asterisk Started
ekzorchik@srv-trusty:~$ ls -l /var/run/asterisk/
total 4
srwxrwxr-x 1 asterisk asterisk 0 Oct 14 19:52 asterisk.ctl
-rw-r--r-- 1 asterisk asterisk 6 Oct 14 19:52 asterisk.pid
После нажимаю Apply Config и ошибок больше нет все исправлено.
Ладно я прощаюсь, до новых встреч, с уважением автор блога Олло Александр aka ekzorchik.