zoukankan      html  css  js  c++  java
  • How to install FreeSWITCH in Centos 7

    How to install FreeSWITCH in Centos 7?

    Introduction
    This article is to give an overview to install FreeSWITCH with its default settings.
    $ sudo yum update
    $ sudo yum groupinstall "Development tools" -y
    $ sudo yum install git autoconf automake libtool gcc-c++ libuuid-devel zlib-devel libjpeg-devel ncurses-devel openssl-devel sqlite-devel.x86_64 curl-devel pcre-devel speex-devel ldns ldns-devel libedit-devel gtk+-devel gtk2-devel ntpdate yasm-devel.x86_64 lua-devel opus-devel libshout-devel  libsndfile-devel

    Following is the step by step guide for installing FreeSWITCH.
    Step # 1
    Download and extract FreeSWITCH source:
    $ cd /usr/local/src/
    $ sudo git clone https://freeswitch.org/stash/scm/fs/freeswitch.git
    Step # 2
    Compile & Install FreeSWITCH with libyuv:
    $ cd /usr/local/src/freeswitch
    $ cd libs
    $ sudo git clone https://freeswitch.org/stash/scm/sd/libyuv.git
    $ cd libyuv
    $ sudo make -f linux.mk CXXFLAGS="-fPIC -O2 -fomit-frame-pointer -Iinclude/"
    $ sudo make install
    $ sudo cp /usr/lib/pkgconfig/libyuv.pc /usr/lib64/pkgconfig/
    $ cd ../../
    $ sudo ./bootstrap.sh
    # If you want to change installation directory the use following command:
    $ sudo ./configure --prefix=<desired location path>
    # If you are facing issues of libyuv then you can use following command:
    $ sudo ./configure
    $ sudo make cd-sounds-install cd-moh-install
    $ sudo make
    $ sudo make install
    If you encounter below error while compiling Freeswitch:
    making all mod_opus
    make[4]: Entering directory '/usr/local/src/freeswitch/src/mod/codecs/mod_opus'
    Makefile:884: *** You must install libopus-dev to build mod_opus.  Stop.
    make[4]: Leaving directory '/usr/local/src/freeswitch/src/mod/codecs/mod_opus'
    Makefile:645: recipe for target 'mod_opus-all' failed
    make[3]: *** [mod_opus-all] Error 1
    make[3]: Leaving directory '/usr/local/src/freeswitch/src/mod'
    Makefile:555: recipe for target 'all-recursive' failed
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory '/usr/local/src/freeswitch/src'
    Makefile:2948: recipe for target 'all-recursive' failed
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory '/usr/local/src/freeswitch'
    Makefile:1346: recipe for target 'all' failed
    make: *** [all] Error 2
    You need to comment following lines in source and then recompile again:
    vi freeswitch/src/mod/codecs/mod_opus/Makefile
    # Comment line 889 & 890
    #install: error
    #all: error

    -------------------------- FreeSWITCH configuration --------------------------
      Locations:
          prefix:          /usr/local/freeswitch
          exec_prefix:     /usr/local/freeswitch
          bindir:          ${exec_prefix}/bin
          confdir:         /usr/local/freeswitch/conf
          libdir:          ${exec_prefix}/lib
          datadir:         /usr/local/freeswitch
          localstatedir:   /usr/local/freeswitch
          includedir:      /usr/local/freeswitch/include/freeswitch
          certsdir:        /usr/local/freeswitch/certs
          dbdir:           /usr/local/freeswitch/db
          grammardir:      /usr/local/freeswitch/grammar
          htdocsdir:       /usr/local/freeswitch/htdocs
          fontsdir:        /usr/local/freeswitch/fonts
          logfiledir:      /usr/local/freeswitch/log
          modulesdir:      /usr/local/freeswitch/mod
          pkgconfigdir:    ${exec_prefix}/lib/pkgconfig
          recordingsdir:   /usr/local/freeswitch/recordings
          imagesdir:       /usr/local/freeswitch/images
          runtimedir:      /usr/local/freeswitch/run
          scriptdir:       /usr/local/freeswitch/scripts
          soundsdir:       /usr/local/freeswitch/sounds
          storagedir:      /usr/local/freeswitch/storage
          cachedir:        /usr/local/freeswitch/cache
    ------------------------------------------------------------------------------
    Step # 3
    Create freeswitch user for running freeswitch:
    # create user 'freeswitch'
    # add it to group 'daemon'
    # change owner and group of the freeswitch installation
    $ cd /usr/local
    $ sudo useradd --system --home-dir /usr/local/freeswitch -G daemon freeswitch
    $ sudo passwd -l freeswitch
     
    $ sudo chown -R freeswitch:daemon /usr/local/freeswitch/
    $ sudo chmod -R 770 /usr/local/freeswitch/
    $ sudo chmod -R 750 /usr/local/freeswitch/bin/*
     
    $ sudo mkdir /var/run/freeswitch
    $ sudo chown -R freeswitch:daemon  /var/run/freeswitch
     
    $ sudo ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/ # needed by /etc/init.d/freeswitch
    Step # 4
    Edit codecs priority and SIP Port for running Freeswitch as desired:
    $ sudo vi /usr/local/freeswitch/conf/vars.xml
    ....
    #Adding VP8 Video Codec
    <X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,GSM,VP8"/>
    <X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,GSM,VP8"/>
    .....
    #Change SIP Port
    <X-PRE-PROCESS cmd="set" data="internal_sip_port=6000"/>
    Step # 5
    Create symbolic links for FreeSWITCH executables:
    $ sudo ln -s /usr/local/freeswitch/bin/freeswitch /usr/local/bin/freeswitch
    $ sudo ln -s /usr/local/freeswitch/bin/fs_cli /usr/local/bin/fs_cli
    Step # 6
    Create FreeSWITCH init script:
    $ sudo touch /etc/init.d/freeswitch
    $ sudo chmod a+x /etc/init.d/freeswitch
    $ sudo vi /etc/init.d/freeswitch
    Add following code in init script of FreeSWITCH:
    #! /bin/sh
    #
    # freeswitch:       Starts the freeswitch Daemon
    #
    # chkconfig: 345 96 02
    # processname: freeswitch
    # description: Freeswitch centos init script
    # config:
    # Author: gled
    # Source function library.
    . /etc/init.d/functions
    . /etc/sysconfig/network
    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/freeswitch/bin
    DESC="FreeSwitch Voice Switching System"
    NAME=freeswitch
    DAEMON=/usr/local/freeswitch/bin/$NAME
    PIDFILE=/usr/local/freeswitch/log/$NAME.pid
    do_setlimits() {
            ulimit -c unlimited
            ulimit -d unlimited
            ulimit -f unlimited
            ulimit -i unlimited
            ulimit -n 999999
            ulimit -q unlimited
            ulimit -u unlimited
            ulimit -v unlimited
            ulimit -x unlimited
            ulimit -s 244
            ulimit -l unlimited
            return 0
    }
    base=${0##*/}
    do_start() {
            do_setlimits
            $DAEMON -nc
            RETVAL=$?
            if [ $RETVAL = 0 ]; then
                    success $"$base startup"
            else
                    failure $"$base startup"
            fi
            echo
            return $RETVAL
    }
    do_stop() {
            $DAEMON -stop
            RETVAL=$?
            [ $RETVAL = 0 ] && success $"$base shutdown" || failure $"$base shutdown"
            rm -f $LOCKFILE
            echo
            return $RETVAL
    }
    # See how we were called.
    case "$1" in
      start)
            do_start
            ;;
      stop)
            do_stop
            ;;
      restart)
            do_stop
            echo "Waiting for daemon to exit..."
            sleep 5
            do_start
            ;;
      *)
            echo $"Usage: $0 {start|stop}"
            exit 2
            ;;
    esac
    exit $RETVAL
    Step # 7
    Starting FreeSWITCH:
    $ sudo service freeswitch start
    12759 Backgrounding.                                             [  OK  ]

    Entering into the FreeSWITCH cli mode:
    $ cd ~
    $ fs_cli
    .=======================================================.                                                       
    |            _____ ____     ____ _     ___              |                                                    
    |           |  ___/ ___|   / ___| |   |_ _|             |                              
    |           | |_  \___   | |   | |    | |              |                              
    |           |  _|  ___) | | |___| |___ | |              |                              
    |           |_|   |____/   \____|_____|___|             |                              
    |                                                       |                              
    .=======================================================.                              
    | Anthony Minessale II, Ken Rice,                       |                              
    | Michael Jerris, Travis Cross                          |                              
    | FreeSWITCH (http://www.freeswitch.org)                |                              
    | Paypal Donations Appreciated: paypal@freeswitch.org   |                              
    | Brought to you by ClueCon http://www.cluecon.com/     |                              
    .=======================================================.                              
                                    
    .=======================================================================================================.                                       
    |    ____ _             ____                   |                                       
    |   / ___| |_   _  ___ / ___|___  _ __         |                                       
    |  | |   | | | | |/ _ |   / _ | '_         |                                       
    |  | |___| | |_| |  __/ |__| (_) | | | |       |                                       
    |   \____|_|\__,_|\___|\____\___/|_| |_|       |                                       
    |                                              |                                       
    |   _____    _            _                          ____             __                                |                                       
    |  |_   _|__| | ___ _ __ | |__   ___  _ __  _   _   / ___|___  _ __  / _| ___ _ __ ___ _ __   ___ ___   |                                       
    |    | |/ _ |/ _ '_ | '_ / _ | '_ | | | | | |   / _ | '_ | |_ / _ '__/ _ '_ / __/ _   |                                       
    |    | |  __/ |  __/ |_) | | | | (_) | | | | |_| | | |__| (_) | | | |  _|  __/ | |  __/ | | | (_|  __/  |                                       
    |    |_|\___|_|\___| .__/|_| |_|\___/|_| |_|\__, |  \____\___/|_| |_|_|  \___|_|  \___|_| |_|\___\___|  |                                       
    |                  |_|                      |___/                                                       |                                       
    |   _____                           _                         _                                         |                                       
    |  | ____|_   _____ _ __ _   _     /   _   _  __ _ _   _ ___| |_                                       |                                       
    |  |  _| / / _ '__| | | |   / _ | | | |/ _` | | | / __| __|                                      |                                       
    |  | |___ V /  __/ |  | |_| |  / ___ |_| | (_| | |_| \__ |_                                       |                                       
    |  |_____| \_/ \___|_|   \__, | /_/   \_\__,_|\__, |\__,_|___/\__|                                      |                                       
    |                        |___/                |___/                                                     |                                       
    |                                       ____ _             ____                                         |                                       
    |  __      ____      ____      __      / ___| |_   _  ___ / ___|___  _ __         ___ ___  _ __ ___     |                                       
    |  / / / / / / / / /     | |   | | | | |/ _ |   / _ | '_        / __/ _ | '_ ` _     |                                       
    |   V  V /  V  V /  V  V /   _  | |___| | |_| |  __/ |__| (_) | | | |  _  | (_| (_) | | | | | |   |                                       
    |    \_/\_/    \_/\_/    \_/\_/   (_)  \____|_|\__,_|\___|\____\___/|_| |_| (_)  \___\___/|_| |_| |_|   |                                       
    |                                              |                                       
    .=======================================================================================================.                                       
                                    
    Type /help <enter> to see a list of commands                                           
                                    
    +OK log level  [7]            
    freeswitch@internal> exit     
    -ERR exit Command not found!  
                                    
    freeswitch@internal>
    Step # 7
    Now you can test extension to extension calling by registering any of the default users 1000-19 with password 1234.

    Copyright
    https://blog.onesconsultants.com/2018/08/how-to-install-freeswitch-in-centos-7.html

  • 相关阅读:
    让盘古分词支持最新的Lucene.Net 3.0.3
    Mac下配置GitTF来连接TFS2012
    基于Xcode4开发第一个iPhone程序:“Hello World”
    第二个iPhone应用程序:“Say Hello”
    基于MMSeg算法的中文分词类库
    为什么IDEA不推荐你使用@Autowired ?
    Spring Cloud Gateway自定义过滤器实战(观测断路器状态变化)
    Spring Cloud Gateway实战之五:内置filter
    Spring Cloud Gateway过滤器精确控制异常返回(分析篇)
    Spring Cloud Gateway实战之四:内置predicate小结
  • 原文地址:https://www.cnblogs.com/dong1/p/14040174.html
Copyright © 2011-2022 走看看