Дата написания: апрель 2020 г.
Автор: Graf
VOIP Server (Asterisk+FreePBX) |
---|
Дано:
IP сервера, где все это будет стоять - 192.168.10.234
Slackware64 14.2 с последними обновлениями ядра, системы и пакета sbopkg.
ASTERISK
Если вы собираетесь использовать аппаратные интерфейсы ISDN (например, карты T1/E1/J1/BRI), настроить взаимодействие Asterisk с аналоговыми и цифровыми телефонами, включая подключения к телефонной сети общего пользования или PSTN, и планируете использовать приложение набора номеров MeetMe,то сначала, вам необходимо установить библиотеки libpri и DAHDI (бывший Zaplet).
Если вышеперечисленное вы не будете использовать, то устанавливать эти библиотеки нет необходимости и можно перейти сразу к установке Asterisk.
- DAHDI
Первым делом установим последнюю (на день написания статьи - 3.1.0) версию DAHDI.
Скачаем, соберём, создадим пакет и установим его.
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-3.1.0.tar.gz # tar xf ./dahdi-linux-3.1.0.tar.gz # cd ./dahdi-linux-3.1.0 # make # make install DESTDIR=/tmp/dahdi-linux-3.1.0 # cd /tmp/dahdi-linux-3.1.0/ # makepkg -l y -c n /tmp/dahdi-linux-3.1.0-x86_64-1.txz # upgradepkg --install-new /tmp/dahdi-linux-3.1.0-x86_64-1.txz
- DAHDI-TOOLS
Далее установим последнюю (на день написания статьи - 3.1.0) версию dahdi-tool.
Скачаем, сконфигурируем, соберём, создадим пакет и установим его.
# wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-3.1.0.tar.gz # tar xf ./dahdi-tools-3.1.0.tar.gz # cd dahdi-tools-3.1.0 # autoreconf -i #./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --libdir=/usr/lib64 \ --includedir=/usr/include # make # make install DESTDIR=/tmp/dahdi-tools-3.1.0 # make install-config DESTDIR=/tmp/dahdi-tools-3.1.0 # cd /tmp/dahdi-tools-3.1.0/ # makepkg -l y -c n /tmp/dahd-tools-3.1.0-x86_64-1.txz # upgradepkg --install-new /tmp/dahd-tools-3.1.0-x86_64-1.txz
- LIBPRI
Теперь, cкачаем, соберём, создадим пакет и установим последнюю версию ( на день написания статьи - 1.6.0) библиотеки libpri.
# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.6.0.tar.gz # tar xf ./libpri-1.6.0.tar.gz # cd libpri-1.6.0 # make # make install DESTDIR=/tmp/libpri-1.6.0 # cd /tmp/libpri-1.6.0/ # makepkg -l y -c n /tmp/libpri-1.6.0-x86_64-1.txz # upgradepkg --install-new /tmp/libpri-1.6.0-x86_64-1.txz
- ASTERISK
Собственно, сборка и установка последней (на день написания статьи -17.3.0) версии Asterisk.
# sbopkg -Bki "libedit libsrtp jansson" # wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-17.3.0.tar.gz # tar xf ./asterisk-17.3.0.tar.gz # cd asterisk-17.3.0 # ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --libdir=/usr/lib64 \ --includedir=/usr/include
Выбираем опции, подробнее об опциях ТУТ.
# make menuselect # make # make install DESTDIR=/tmp/asterisk-17.3.0
---> IMPORTANT INFORMATION ABOUT format_mp3 <--- *** *** *** *** format_mp3 has been selected to be installed, but the *** *** MP3 decoder library has not yet been downloaded into *** *** the source tree. To do so, please run the following *** *** command: *** *** *** *** $ contrib/scripts/get_mp3_source.sh
Так и делаем
# ./contrib/scripts/get_mp3_source.sh
должны подгрузиться файлы, и повторяем
# make install DESTDIR=/tmp/asterisk-17.3.0
Собираем примеры конфигураций, документацию и ротацию логов.
# make samples DESTDIR=/tmp/asterisk-17.3.0 # make progdocs DESTDIR=/tmp/asterisk-17.3.0 # make install-logrotate DESTDIR=/tmp/asterisk-17.3.0
Устанавливаем веб интерфейс для голосовой почты, для этого изменим в файле ./Makefile строку
HTTP_DOCSDIR=/var/www/htm
на
HTTP_DOCSDIR=/var/www/htdocs
Создаем недостающие каталоги и собираем.
# mkdir -p /tmp/asterisk-17.3.0/var/www/{htdocs,cgi-bin} # make webvmail DESTDIR=/tmp/asterisk-17.3.0
собираем весь пакет и устанавливаем его.
# cd /tmp/asterisk-17.3.0 # makepkg -l y -c n /tmp/asterisk-17.3.0-x86_64-1.txz # upgradepkg --install-new /tmp/asterisk-17.3.0-x86_64-1.txz
Создадим скрипт для запуска - /etc/rc.d/rc.asterisk.
В котором укажем, что он запускаться будет от пользователя apache. (нужно для FreePBX)
#!/bin/sh AST_CONFIG=/etc/asterisk AST_SBIN=/usr/sbin # Запускаем asterisk от имени apache AST_USER=apache AST_GROUP=apache . /etc/rc.d/init.d/functions if ! [ -x $AST_SBIN/asterisk ] ; then echo "ERROR: /usr/sbin/asterisk not found" exit 0 fi if ! [ -d $AST_CONFIG ] ; then echo "ERROR: $AST_CONFIG directory not found" exit 0 fi DAEMON=$AST_SBIN/asterisk SAFE_ASTERISK=$AST_SBIN/safe_asterisk CONFIG0=`readlink $0` if [ "$CONFIG0" = "" ]; then CONFIGFILE=/etc/sysconfig/`basename $0` else CONFIGFILE=/etc/sysconfig/`basename $CONFIG0` fi [ -x $CONFIGFILE ] && . $CONFIGFILE RETVAL=0 start() { # Start daemons. echo -n $"Starting asterisk: " if [ -f $SAFE_ASTERISK ] ; then DAEMON=$SAFE_ASTERISK fi if [ $AST_USER ] ; then ASTARGS="-U $AST_USER" fi if [ $AST_GROUP ] ; then ASTARGS="$ASTARGS -G $AST_GROUP" fi if [ $AST_CONFIG ]; then ASTARGS="$ASTARGS -C $AST_CONFIG" fi daemon $DAEMON $ASTARGS RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/asterisk echo return $RETVAL } stop() { # Stop daemons. echo -n $"Shutting down asterisk: " killproc asterisk RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/asterisk echo return $RETVAL } restart() { stop start } reload() { $DAEMON -rx 'reload' > /dev/null 2> /dev/null } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; condrestart) [ -f /var/lock/subsys/asterisk ] && restart || : ;; status) status asterisk ;; *) echo "Usage: asterisk {start|stop|restart|reload|condrestart|status}" exit 1 esac exit $?
Раздадим права:
# chown -R apache:apache /var/lib/asterisk # chown -R apache:apache /var/log/asterisk # chown -R apache:apache /var/run/asterisk # chown -R apache:apache /var/spool/asterisk # chown -R apache:apache /usr/lib64/asterisk # chown apache /var/spool/mqueue/ # chown apache /var/spool/cron/crontabs/asterisk # chmod -R 0770 /var/lib/asterisk # chmod -R 0770 /var/log/asterisk # chmod -R 0770 /var/run/asterisk # chmod -R 0770 /var/spool/asterisk # chmod -R 0770 /usr/lib64/asterisk
Стартуем asterisk.
# chmod +x /etc/rc.d/rc.asterisk # /etc/rc.d/rc.asterisk start Starting asterisk: [ OK ]
Заходим в консоль Asterisk, дабы убедиться, что он работает
# asterisk -rvvv Asterisk 17.3.0, Copyright (C) 1999 - 2018, Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 17.3.0 currently running on your-voip-server (pid = 13071) your-voip-server*CLI>
Как видим - работает!
Для выхода из консоли нужно набрать exit.
FreePBX
Настроим MySQL.
# mkdir /var/lib/mysql/mysql # mysql_install_db # chown -R mysql:mysql /var/lib/mysql # chmod +x /etc/rc.d/rc.mysqld # /etc/rc.d/rc.mysqld start # mysql_secure_installation Switch to unix_socket authentication [Y/n] n Set root password? [Y/n] y Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y
Правим /etc/httpd/httpd.conf
# Убираем знак комментария с: LoadModule rewrite_module lib64/httpd/modules/mod_rewrite.so # Приводим к виду: DocumentRoot "/srv/httpd/htdocs" <Directory "/srv/httpd/htdocs"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> # Убираем знак комментария с: Include /etc/httpd/mod_php.conf
Правим /etc/httpd/php.ini
upload_max_filesize = 50M date.timezone = Europe/Moscow max_execution_time = 600 memory_limit = 512M
Перезапуск (apache).
# /etc/rc.d/rc.httpd restart
Для прослушивания записей в браузере проверьте, что у вас установлены пакеты sox и mpg123 (есть в составе дистрибутива), а также установим lame и ffmpeg.
# wget https://slackware.uk/people/alien/sbrepos/14.2/x86_64/lame/lame-3.99.5-x86_64-1alien.txz # upgradepkg --install-new ./lame-3.99.5-x86_64-1alien.txz # wget https://ftp.sotirov-bg.net/pub/contrib/slackware/packages/slackware64-14.2/ffmpeg-3.4.7-x86_64-1gds.txz # upgradepkg --install-new ./ffmpeg-3.4.7-x86_64-1gds.txz
Устанавливаем PeerDB.
При помощи sbopkg, устанавливаем nodejs.
Скачиваем последнюю (на день написания статьи - 15.0) версию FreePBX.
# pear install DB # sbopkg -Bki "nodejs" # wget http://mirror.freepbx.org/modules/packages/freepbx/7.4/freepbx-15.0-latest.tgz # tar xf ./freepbx-15.0-latest.tgz # cd freepbx
В файле ./installlib/installcommand.class.php меняем команду runuser на sudo -u
sed -i "s/runuser/sudo -u/" ./installlib/installcommand.class.php
Устанавливаем FreePBX:
./install -n -vv --rootdb --force \ --dbuser=root \ --dbpass=mypassword \ <---- Пароль root в MySQL --user=apache \ --group=apache \ --webroot=/var/www/htdocs \ --astetcdir=/etc/asterisk \ --astmoddir=/usr/lib64/asterisk/modules \ --astvarlibdir=/var/lib/asterisk \ --astagidir=/var/lib/asterisk/agi-bin \ --astspooldir=/var/spool/asterisk \ --astrundir=/var/run/asterisk \ --astlogdir=/var/log/asterisk \ --ampbin=/usr/bin \ --ampsbin=/usr/sbin \ --ampcgibin=/var/www/cgi-bin \ --ampplayback=/var/lib/asterisk/playback
После завершения установки вы увидите сообщение:
You have install successefully installed FreePBX
Теперь запретим установку коммерческих модулей.
# fwconsole ma disablerepo commercial
Установим все оставшиеся модули.
# fwconsole ma installall
Удалим не нужные.
# fwconsole ma delete firewall fax
Перезапустим.
# fwconsole r
Дальше можно продолжить установку перейдя в web-интерфейс по адресу (в нашем примере):
http://192.168.10.234/admin
По завершению установки, вы должны увидеть что-то подобное. Без ошибок.
Обсуждение на форуме