Freeswitch 安装配置

==先安装ODBC==

sudo apt-get install iodbc

sudo apt-get install unixodbc-dev

sudo apt-get install libmyodbc

sudo apt-get install unixodbc

.

==ubuntu freeswitch 安装==

===英文 wiki 地址:===

:http://wiki.freeswitch.org/wiki/Ubuntu_Quick_Start

===1、安装依赖包===

cd /usr/src

--sudo apt-get install git-core subversion build-essential autoconf automake libtool libncurses5  libncurses5-dev make libjpeg-dev

--ubuntu 12.04

sudo apt-get install git-core build-essential autoconf automake libtool libncurses5 libncurses5-dev gawk libjpeg-dev zlib1g-dev pkg-config libssl-dev

sudo apt-get install gawk

update-alternatives --set awk /usr/bin/gawk

===2、下载源码===

如果提示git未安装就安装git

apt-get install git

git clone git://git.freeswitch.org/freeswitch.git

从其他设备copy到本机/usr/src解压命令tar -xf freeswitch-1.2.5.3.tar.bz2

修改mod_radius ,mod_silk等

cd /usr/src/freeswitch-1.2.5.3

vi modules.conf

freeswitch-1.2.5.3是

./devel-bootstrap.sh

./configure --enable-core-odbc-support

make

如果make出现 make[1]: *** [freeswitch] Error 1 就从其他设备copy freeswitch【路径:/usr/src/freeswitch-1.2.5.3】 文件过来然后再make

sudo make install

sudo make uhd-sounds-install

sudo make uhd-moh-install

sudo make samples

===freeswitch初始化===

:创建文件/etc/init.d/freeswitch

:copy 下面内容到freeswitch

====freeswitch.init====

#!/bin/bash

### BEGIN INIT INFO

# Provides:          freeswitch

# Required-Start:    $local_fs $remote_fs

# Required-Stop:     $local_fs $remote_fs

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Description:       Freeswitch debian init script.

# Author: Matthew Williams

#

### END INIT INFO

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin

DESC="Freeswitch"

NAME=freeswitch

DAEMON=/usr/local/freeswitch/bin/$NAME

DAEMON_ARGS="-nc"

PIDFILE=/usr/local/freeswitch/run/$NAME.pid

SCRIPTNAME=/etc/init.d/$NAME

FS_USER=freeswitch

FS_GROUP=daemon

# Exit if the package is not installed

[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables

. /lib/init/vars.sh

# Define LSB log_* functions.

# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.

. /lib/lsb/init-functions

#

# Function that sets ulimit values for the daemon

#

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 240

ulimit -l unlimited

return 0

}

#

# Function that starts the daemon/service

#

do_start()

{

# Set user to run as

if [ $FS_USER ] ; then

DAEMON_ARGS="`echo $DAEMON_ARGS` -u $FS_USER"

fi

# Set group to run as

if [ $FS_GROUP ] ; then

DAEMON_ARGS="`echo $DAEMON_ARGS` -g $FS_GROUP"

fi

# Return

#   0 if daemon has been started

#   1 if daemon was already running

#   2 if daemon could not be started

start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null -- \

|| return 1

do_setlimits

start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \

$DAEMON_ARGS \

|| return 2

# Add code here, if necessary, that waits for the process to be ready

# to handle requests from services started subsequently which depend

# on this one.  As a last resort, sleep for some time.

}

#

# Function that stops the daemon/service

#

do_stop()

{

# Return

#   0 if daemon has been stopped

#   1 if daemon was already stopped

#   2 if daemon could not be stopped

#   other if a failure occurred

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME

RETVAL="$?"

[ "$RETVAL" = 2 ] && return 2

# Wait for children to finish too if this is a daemon that forks

# and if the daemon is only ever run from this initscript.

# If the above conditions are not satisfied then add some other code

# that waits for the process to drop all resources that could be

# needed by services started subsequently.  A last resort is to

# sleep for some time.

start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON

[ "$?" = 2 ] && return 2

# Many daemons don't delete their pidfiles when they exit.

rm -f $PIDFILE

return "$RETVAL"

}

#

# Function that sends a SIGHUP to the daemon/service

#

do_reload() {

#

# If the daemon can reload its configuration without

# restarting (for example, when it is sent a SIGHUP),

# then implement that here.

#

start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME

return 0

}

case "$1" in

start)

[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"

do_start

case "$?" in

0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;

2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;

esac

;;

stop)

[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"

do_stop

case "$?" in

0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;

2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;

esac

;;

#reload|force-reload)

#

# If do_reload() is not implemented then leave this commented out

# and leave 'force-reload' as an alias for 'restart'.

#

#log_daemon_msg "Reloading $DESC" "$NAME"

#do_reload

#log_end_msg $?

#;;

restart|force-reload)

#

# If the "reload" option is implemented then remove the

# 'force-reload' alias

#

log_daemon_msg "Restarting $DESC" "$NAME"

do_stop

case "$?" in

0|1)

do_start

case "$?" in

0) log_end_msg 0 ;;

1) log_end_msg 1 ;; # Old process is still running

*) log_end_msg 1 ;; # Failed to start

esac

;;

*)

# Failed to stop

log_end_msg 1

;;

esac

;;

*)

#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2

echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2

exit 3

;;

esac

:chmod 755 /etc/init.d/freeswitch

===设置随机启动===

update-rc.d -f freeswitch defaults

cp /usr/src/freeswitch-1.2.5.3/debian/freeswitch-sysvinit.freeswitch.default /etc/default/freeswitch

如果上面make 出错时,进入/etc/default/检查freeswitch文档是否有资料


===Add the freeswitch user:===

adduser --disabled-password  --quiet --system \

--home /opt/freeswitch \

--gecos "FreeSwitch Voice Platform" --ingroup daemon \

freeswitch

adduser freeswitch audio

===Change freeswitch installation ownership (from root)===

chown -R freeswitch:daemon /usr/local/freeswitch/

===Remove permissions for other===

chmod -R o-rwx /usr/local/freeswitch/

===Add the fs_cli to your default path===

ln -s /usr/local/freeswitch/bin/fs_cli /usr/local/bin/

===Then either:手动启动===

sudo shutdown -r now

or

/etc/init.d/freeswitch start

===test its startup===

fs_cli

===shutdown===

Stop the FreeSWITCH program. This only works from the CLI, as an API call, you should be using 'fsctl shutdown'

Warning! Shutdown from the CLI ignores arguments and exits immediately!

Usage: fsctl shutdown [cancel|elegant|asap|restart|now]

cancel - discontinue a previous shutdown request.

elegant - wait for all traffic to stop; do not prevent new traffic.

asap - wait for all traffic to stop; do not allow new traffic.

restart - restart FreeSWITCH immediately following the shutdown.

now - shutdown FreeSWITCH immediately.

When giving "elegant", "asap" or "now" it's also possible to give the restart command:

Usage: fsctl shutdown [elegant|asap|now] restart

重启freeswitch

fsctl shutdown restart

你可能感兴趣的:(Freeswitch 安装配置)