Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
wiki:articles:voip [02/09/2023 21:02] (текущий) graf
Строка 1: Строка 1:
 +Дата написания: //апрель 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**//.\\ 
 +Скачаем, соберём, создадим пакет и установим его.
 +<code>
 +# 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 
 +</code>
 +
 +   ***DAHDI-TOOLS**
 +Далее установим последнюю (на день написания статьи - 3.1.0) версию //**dahdi-tool**//.\\ 
 +Скачаем, сконфигурируем, соберём, создадим пакет и установим его.
 +<code>
 +# 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
 +</code>
 +
 +   ***LIBPRI**
 +Теперь, cкачаем, соберём, создадим пакет и установим последнюю версию ( на день написания статьи - 1.6.0) библиотеки //**libpri**//.
 +<code>
 +# 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
 +</code>
 +
 +   ***ASTERISK**
 +Собственно, сборка и установка последней (на день написания статьи -17.3.0) версии //**Asterisk**//.
 +
 +<code>
 +# 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
 +</code>
 +
 +Выбираем опции, подробнее об опциях [[https://docs.asterisk.org/Getting-Started/Installing-Asterisk/Installing-Asterisk-From-Source/Using-Menuselect-to-Select-Asterisk-Options/| ТУТ]].
 +<code>
 +# make menuselect
 +# make
 +# make install DESTDIR=/tmp/asterisk-17.3.0
 +</code>
 +
 +<note tip>
 +Если ошибка:
 +\\
 +<code>
 +---> 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 
 +</code>
 +Так и делаем
 +<code>
 +# ./contrib/scripts/get_mp3_source.sh
 +</code>
 +должны подгрузиться файлы, и повторяем
 +<code>
 +# make install DESTDIR=/tmp/asterisk-17.3.0
 +</code>
 +</note>
 +
 +Собираем примеры конфигураций, документацию и ротацию логов.
 +<code>
 +# 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
 +</code>
 +
 +Устанавливаем веб интерфейс для голосовой почты, для этого изменим в файле //./Makefile// строку 
 +
 +//**HTTP_DOCSDIR=/var/www/htm**//\\
 +на \\
 +//**HTTP_DOCSDIR=/var/www/htdocs**//
 +
 +Создаем недостающие каталоги и собираем.
 +<code>
 +# mkdir -p /tmp/asterisk-17.3.0/var/www/{htdocs,cgi-bin}
 +# make webvmail DESTDIR=/tmp/asterisk-17.3.0
 +</code>
 +
 +собираем весь пакет и устанавливаем его.
 +<code>
 +# 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
 +</code>
 +
 +Создадим скрипт для запуска - ///etc/rc.d/rc.asterisk//.\\
 +В котором укажем, что он запускаться будет от пользователя //apache//. (нужно для FreePBX)
 +<code>
 + #!/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 $?
 +</code>
 +Раздадим права:
 +<code>
 +# 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
 +</code>
 +
 +Стартуем //asterisk//.
 +<code>
 + # chmod +x /etc/rc.d/rc.asterisk
 + # /etc/rc.d/rc.asterisk start
 +
 +Starting asterisk:                                          OK  ]
 +</code>
 +
 +Заходим в консоль Asterisk, дабы убедиться, что он работает
 +<code>
 + # 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> 
 +</code>
 +
 +Как видим - работает! \\
 +Для выхода из консоли нужно набрать //exit//.
 +
 +====== FreePBX ======
 +
 +Настроим MySQL.
 +<code>
 + # mkdir /var/lib/mysql/mysql
 + # mysql_install_db
 + # chown -R mysql.mysql /var/lib/mysql
 + # /etc/rc.d/rc.mysqld start
 + # mysql 
 + 
 + mysql> set password for 'root'@'localhost' = password('mypassword'); 
 + mysql> FLUSH PRIVILEGES;
 + mysql>\q
 +</code> 
 +
 +Правим ///etc/httpd/httpd.conf//
 +<code>
 +# Убираем знак комментария с: 
 +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
 +</code>
 +
 +Правим ///etc/httpd/php.ini//
 +<code>
 +upload_max_filesize = 50M 
 +date.timezone = Europe/Moscow
 +max_execution_time = 600
 +memory_limit = 512M
 +</code>
 +
 +Перезапуск (//apache//).
 +<code>
 + # /etc/rc.d/rc.httpd restart
 +</code>
 +
 +Для прослушивания записей в браузере проверьте, что у вас установлены пакеты //sox// и //mpg123// (есть в составе дистрибутива), а также установим //lame// и //ffmpeg//.
 +<code>
 +# 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
 +</code>
 +
 +Устанавливаем //PeerDB//.\\
 +При помощи //sbopkg//, устанавливаем //nodejs//.\\
 +Скачиваем последнюю (на день написания статьи - 15.0) версию //FreePBX//.
 +<code>
 +# 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
 +</code>
 +В файле //./installlib/installcommand.class.php// меняем команду //runuser// на //sudo -u//
 +<code>
 +sed -i "s/runuser/sudo -u/" ./installlib/installcommand.class.php
 +</code>
 +Устанавливаем FreePBX:
 +<code>
 +./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
 +</code>
 +После завершения установки вы увидите сообщение:\\
 +__**You have install successefully installed FreePBX**__
 +
 +Теперь запретим установку коммерческих модулей.
 +   # fwconsole ma disablerepo commercial
 +Установим все оставшиеся модули.
 +   # fwconsole ma installall
 +Удалим не нужные.
 +   # fwconsole ma delete firewall
 +Перезапустим.
 +   # fwconsole r
 +
 +Дальше можно продолжить установку перейдя в web-интерфейс по адресу (в нашем примере):\\
 +   http://192.168.10.234/admin
 +По завершению установки, вы должны увидеть что-то подобное. Без ошибок. 
 +{{:wiki:articles:freepbx-15.png?nolink&600|}}\\
 +\\
 +\\
 +\\
 +[[http://slackware.su/forum/index.php/topic,10.0.html | Обсуждение на форуме]]
Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:voip (generated for current page)