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 |
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 |
-------------------------- 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 |
#! /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> |
i really enjoyed the article.the article is very useful and im satisfied to read this.its help me to study also.
ReplyDeleteDevOps certification in Chennai
DevOps Training in Chennai
DevOps course in Chennai
Data Science Training in Chennai
AWS training in chennai
AWS course in chennai
wonderful article contains lot of valuable information. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article.
ReplyDeleteThis article resolved my all queries.good luck an best wishes to the team members.continue posting.learn digital marketing use these following link
Digital Marketing Course in Chennai